@posty5/n8n-nodes-posty5 3.0.0 → 4.0.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.
package/package.json CHANGED
@@ -1,73 +1,74 @@
1
- {
2
- "name": "@posty5/n8n-nodes-posty5",
3
- "version": "3.0.0",
4
- "description": "N8N community nodes for Posty5 - URL shortening, QR codes, HTML hosting, and social media publishing",
5
- "keywords": [
6
- "n8n-community-node-package",
7
- "n8n-community-node",
8
- "n8n",
9
- "posty5",
10
- "url-shortener",
11
- "qr-code",
12
- "social-media",
13
- "automation"
14
- ],
15
- "license": "MIT",
16
- "homepage": "https://posty5.com",
17
- "author": {
18
- "name": "Posty5",
19
- "email": "support@posty5.com"
20
- },
21
- "repository": {
22
- "type": "git",
23
- "url": "https://github.com/posty5/n8n-nodes.git"
24
- },
25
- "publishConfig": {
26
- "access": "public"
27
- },
28
- "main": "dist/index.js",
29
- "types": "dist/index.d.ts",
30
- "scripts": {
31
- "build": "tsc",
32
- "dev": "tsc --watch",
33
- "format": "prettier --write \"**/*.ts\"",
34
- "lint": "eslint . --ext .ts",
35
- "test": "jest",
36
- "test:watch": "jest --watch",
37
- "test:coverage": "jest --coverage",
38
- "prepare": "npm run build"
39
- },
40
- "files": [
41
- "dist"
42
- ],
43
- "n8n": {
44
- "n8nNodesApiVersion": 1,
45
- "credentials": [
46
- "dist/credentials/Posty5Api.credentials.js"
47
- ],
48
- "nodes": [
49
- "dist/nodes/Posty5ShortLink/Posty5ShortLink.node.js",
50
- "dist/nodes/Posty5QrCode/Posty5QrCode.node.js",
51
- "dist/nodes/Posty5HtmlHosting/Posty5HtmlHosting.node.js",
52
- "dist/nodes/Posty5FormSubmission/Posty5FormSubmission.node.js",
53
- "dist/nodes/Posty5SocialPublisherWorkspace/Posty5SocialPublisherWorkspace.node.js",
54
- "dist/nodes/Posty5SocialPublisherPost/Posty5SocialPublisherPost.node.js"
55
- ]
56
- },
57
- "devDependencies": {
58
- "@types/jest": "^29.5.14",
59
- "@types/node": "^20.11.0",
60
- "@typescript-eslint/eslint-plugin": "^6.19.0",
61
- "@typescript-eslint/parser": "^6.19.0",
62
- "eslint": "^8.56.0",
63
- "eslint-plugin-n8n-nodes-base": "^1.16.1",
64
- "jest": "^29.7.0",
65
- "n8n-workflow": "^1.25.0",
66
- "prettier": "^3.2.4",
67
- "ts-jest": "^29.1.1",
68
- "typescript": "^5.3.3"
69
- },
70
- "peerDependencies": {
71
- "n8n-workflow": ">=1.0.0"
72
- }
73
- }
1
+ {
2
+ "name": "@posty5/n8n-nodes-posty5",
3
+ "version": "4.0.0",
4
+ "description": "N8N community nodes for Posty5 - URL shortening, QR codes, HTML hosting, and social media publishing",
5
+ "keywords": [
6
+ "n8n-community-node-package",
7
+ "n8n-community-node",
8
+ "n8n",
9
+ "posty5",
10
+ "url-shortener",
11
+ "qr-code",
12
+ "social-media",
13
+ "automation"
14
+ ],
15
+ "license": "MIT",
16
+ "homepage": "https://posty5.com",
17
+ "author": {
18
+ "name": "Posty5",
19
+ "email": "support@posty5.com"
20
+ },
21
+ "repository": {
22
+ "type": "git",
23
+ "url": "git+https://github.com/Posty5/n8n-nodes.git"
24
+ },
25
+ "publishConfig": {
26
+ "access": "public"
27
+ },
28
+ "main": "dist/index.js",
29
+ "types": "dist/index.d.ts",
30
+ "scripts": {
31
+ "prebuild": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\"",
32
+ "build": "tsc",
33
+ "dev": "tsc --watch",
34
+ "format": "prettier --write \"**/*.ts\"",
35
+ "lint": "eslint . --ext .ts",
36
+ "test": "jest",
37
+ "test:watch": "jest --watch",
38
+ "test:coverage": "jest --coverage",
39
+ "prepare": "npm run build"
40
+ },
41
+ "files": [
42
+ "dist"
43
+ ],
44
+ "n8n": {
45
+ "n8nNodesApiVersion": 1,
46
+ "credentials": [
47
+ "dist/credentials/Posty5Api.credentials.js"
48
+ ],
49
+ "nodes": [
50
+ "dist/nodes/Posty5ShortLink/Posty5ShortLink.node.js",
51
+ "dist/nodes/Posty5QrCode/Posty5QrCode.node.js",
52
+ "dist/nodes/Posty5HtmlHosting/Posty5HtmlHosting.node.js",
53
+ "dist/nodes/Posty5FormSubmission/Posty5FormSubmission.node.js",
54
+ "dist/nodes/Posty5SocialPublisherWorkspace/Posty5SocialPublisherWorkspace.node.js",
55
+ "dist/nodes/Posty5SocialPublisherPost/Posty5SocialPublisherPost.node.js"
56
+ ]
57
+ },
58
+ "devDependencies": {
59
+ "@types/jest": "^29.5.14",
60
+ "@types/node": "^20.11.0",
61
+ "@typescript-eslint/eslint-plugin": "^6.19.0",
62
+ "@typescript-eslint/parser": "^6.19.0",
63
+ "eslint": "^8.56.0",
64
+ "eslint-plugin-n8n-nodes-base": "^1.16.1",
65
+ "jest": "^29.7.0",
66
+ "n8n-workflow": "^1.25.0",
67
+ "prettier": "^3.2.4",
68
+ "ts-jest": "^29.1.1",
69
+ "typescript": "^5.3.3"
70
+ },
71
+ "peerDependencies": {
72
+ "n8n-workflow": ">=1.0.0"
73
+ }
74
+ }
@@ -1,6 +0,0 @@
1
- import { IExecuteFunctions, INodeExecutionData, INodeType, INodeTypeDescription } from 'n8n-workflow';
2
- export declare class Posty5HtmlHostingVariables implements INodeType {
3
- description: INodeTypeDescription;
4
- execute(this: IExecuteFunctions): Promise<INodeExecutionData[][]>;
5
- }
6
- //# sourceMappingURL=Posty5HtmlHostingVariables.node.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Posty5HtmlHostingVariables.node.d.ts","sourceRoot":"","sources":["../../../nodes/Posty5HtmlHostingVariables/Posty5HtmlHostingVariables.node.ts"],"names":[],"mappings":"AAAA,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,SAAS,EACT,oBAAoB,EACpB,MAAM,cAAc,CAAC;AAGtB,qBAAa,0BAA2B,YAAW,SAAS;IAC3D,WAAW,EAAE,oBAAoB,CAyK/B;IAEI,OAAO,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC;CAsFvE"}
@@ -1,285 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
- Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.Posty5HtmlHostingVariables = void 0;
37
- const html_hosting_variables_1 = require("@posty5/html-hosting-variables");
38
- class Posty5HtmlHostingVariables {
39
- constructor() {
40
- this.description = {
41
- displayName: 'Posty5 HTML Variables',
42
- name: 'posty5HtmlHostingVariables',
43
- icon: 'file:posty5.svg',
44
- group: ['transform'],
45
- version: 1,
46
- subtitle: '={{$parameter["operation"]}}',
47
- description: 'Manage dynamic variables for HTML pages',
48
- defaults: {
49
- name: 'Posty5 HTML Variables',
50
- },
51
- inputs: ['main'],
52
- outputs: ['main'],
53
- credentials: [
54
- {
55
- name: 'posty5Api',
56
- required: true,
57
- },
58
- ],
59
- properties: [
60
- {
61
- displayName: 'Operation',
62
- name: 'operation',
63
- type: 'options',
64
- noDataExpression: true,
65
- options: [
66
- {
67
- name: 'Create',
68
- value: 'create',
69
- description: 'Create a new variable',
70
- action: 'Create a variable',
71
- },
72
- {
73
- name: 'Delete',
74
- value: 'delete',
75
- description: 'Delete a variable',
76
- action: 'Delete a variable',
77
- },
78
- {
79
- name: 'Get',
80
- value: 'get',
81
- description: 'Get a variable',
82
- action: 'Get a variable',
83
- },
84
- {
85
- name: 'List',
86
- value: 'list',
87
- description: 'List all variables',
88
- action: 'List variables',
89
- },
90
- {
91
- name: 'Update',
92
- value: 'update',
93
- description: 'Update a variable',
94
- action: 'Update a variable',
95
- },
96
- ],
97
- default: 'create',
98
- },
99
- // Create operation fields
100
- {
101
- displayName: 'Variable Name',
102
- name: 'name',
103
- type: 'string',
104
- required: true,
105
- displayOptions: {
106
- show: {
107
- operation: ['create', 'update'],
108
- },
109
- },
110
- default: '',
111
- description: 'A friendly name for the variable',
112
- },
113
- {
114
- displayName: 'Variable Key',
115
- name: 'key',
116
- type: 'string',
117
- required: true,
118
- displayOptions: {
119
- show: {
120
- operation: ['create', 'update'],
121
- },
122
- },
123
- default: 'pst5_',
124
- description: 'Variable key (must start with "pst5_")',
125
- placeholder: 'pst5_my_variable',
126
- },
127
- {
128
- displayName: 'Variable Value',
129
- name: 'value',
130
- type: 'string',
131
- required: true,
132
- displayOptions: {
133
- show: {
134
- operation: ['create', 'update'],
135
- },
136
- },
137
- default: '',
138
- description: 'The value of the variable',
139
- },
140
- // Variable ID for get/update/delete operations
141
- {
142
- displayName: 'Variable ID',
143
- name: 'variableId',
144
- type: 'string',
145
- required: true,
146
- displayOptions: {
147
- show: {
148
- operation: ['get', 'update', 'delete'],
149
- },
150
- },
151
- default: '',
152
- description: 'The ID of the variable',
153
- },
154
- // List operation fields
155
- {
156
- displayName: 'Return All',
157
- name: 'returnAll',
158
- type: 'boolean',
159
- displayOptions: {
160
- show: {
161
- operation: ['list'],
162
- },
163
- },
164
- default: false,
165
- description: 'Whether to return all results or only up to a given limit',
166
- },
167
- {
168
- displayName: 'Limit',
169
- name: 'limit',
170
- type: 'number',
171
- displayOptions: {
172
- show: {
173
- operation: ['list'],
174
- returnAll: [false],
175
- },
176
- },
177
- typeOptions: {
178
- minValue: 1,
179
- maxValue: 100,
180
- },
181
- default: 50,
182
- description: 'Max number of results to return',
183
- },
184
- {
185
- displayName: 'Filters',
186
- name: 'filters',
187
- type: 'collection',
188
- placeholder: 'Add Filter',
189
- default: {},
190
- displayOptions: {
191
- show: {
192
- operation: ['list'],
193
- },
194
- },
195
- options: [
196
- {
197
- displayName: 'Search',
198
- name: 'search',
199
- type: 'string',
200
- default: '',
201
- description: 'Search term',
202
- },
203
- ],
204
- },
205
- ],
206
- };
207
- }
208
- async execute() {
209
- const items = this.getInputData();
210
- const returnData = [];
211
- const operation = this.getNodeParameter('operation', 0);
212
- const credentials = await this.getCredentials('posty5Api');
213
- const { HttpClient } = await Promise.resolve().then(() => __importStar(require('@posty5/core')));
214
- const http = new HttpClient({
215
- apiKey: credentials.apiKey,
216
- });
217
- const client = new html_hosting_variables_1.HtmlHostingVariablesClient(http);
218
- for (let i = 0; i < items.length; i++) {
219
- try {
220
- let responseData = {};
221
- if (operation === 'create') {
222
- const name = this.getNodeParameter('name', i);
223
- const key = this.getNodeParameter('key', i);
224
- const value = this.getNodeParameter('value', i);
225
- responseData = await client.create({ name, key, value });
226
- }
227
- else if (operation === 'get') {
228
- const variableId = this.getNodeParameter('variableId', i);
229
- responseData = await client.get(variableId);
230
- }
231
- else if (operation === 'update') {
232
- const variableId = this.getNodeParameter('variableId', i);
233
- const name = this.getNodeParameter('name', i);
234
- const key = this.getNodeParameter('key', i);
235
- const value = this.getNodeParameter('value', i);
236
- responseData = await client.update(variableId, { name, key, value });
237
- }
238
- else if (operation === 'delete') {
239
- const variableId = this.getNodeParameter('variableId', i);
240
- responseData = await client.delete(variableId);
241
- }
242
- else if (operation === 'list') {
243
- const returnAll = this.getNodeParameter('returnAll', i, false);
244
- const filters = this.getNodeParameter('filters', i, {});
245
- const params = {
246
- page: 1,
247
- pageSize: returnAll ? 100 : this.getNodeParameter('limit', i, 50),
248
- ...filters,
249
- };
250
- if (returnAll) {
251
- let allResults = [];
252
- let page = 1;
253
- let hasMore = true;
254
- while (hasMore) {
255
- const result = await client.list({ ...filters }, { page, pageSize: params.pageSize });
256
- allResults = allResults.concat(result.items);
257
- hasMore = result.items.length === params.pageSize;
258
- page++;
259
- }
260
- responseData = allResults;
261
- }
262
- else {
263
- const result = await client.list({ ...filters }, { page: 1, pageSize: params.pageSize });
264
- responseData = result.items;
265
- }
266
- }
267
- const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } });
268
- returnData.push(...executionData);
269
- }
270
- catch (error) {
271
- if (this.continueOnFail()) {
272
- returnData.push({
273
- json: { error: error.message },
274
- pairedItem: { item: i },
275
- });
276
- continue;
277
- }
278
- throw error;
279
- }
280
- }
281
- return [returnData];
282
- }
283
- }
284
- exports.Posty5HtmlHostingVariables = Posty5HtmlHostingVariables;
285
- //# sourceMappingURL=Posty5HtmlHostingVariables.node.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Posty5HtmlHostingVariables.node.js","sourceRoot":"","sources":["../../../nodes/Posty5HtmlHostingVariables/Posty5HtmlHostingVariables.node.ts"],"names":[],"mappings":"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"}