@lilremark/n8n-nodes-twenty-dynamic 2.2.10

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.
Files changed (64) hide show
  1. package/LICENSE.md +19 -0
  2. package/README.md +290 -0
  3. package/dist/credentials/TwentyApi.credentials.d.ts +8 -0
  4. package/dist/credentials/TwentyApi.credentials.js +49 -0
  5. package/dist/credentials/TwentyApi.credentials.js.map +1 -0
  6. package/dist/nodes/Twenty/ComplexFieldDetection.d.ts +8 -0
  7. package/dist/nodes/Twenty/ComplexFieldDetection.js +27 -0
  8. package/dist/nodes/Twenty/ComplexFieldDetection.js.map +1 -0
  9. package/dist/nodes/Twenty/FieldParameters.d.ts +11 -0
  10. package/dist/nodes/Twenty/FieldParameters.js +211 -0
  11. package/dist/nodes/Twenty/FieldParameters.js.map +1 -0
  12. package/dist/nodes/Twenty/FieldTransformation.d.ts +30 -0
  13. package/dist/nodes/Twenty/FieldTransformation.js +168 -0
  14. package/dist/nodes/Twenty/FieldTransformation.js.map +1 -0
  15. package/dist/nodes/Twenty/Twenty.node.d.ts +22 -0
  16. package/dist/nodes/Twenty/Twenty.node.js +1629 -0
  17. package/dist/nodes/Twenty/Twenty.node.js.map +1 -0
  18. package/dist/nodes/Twenty/Twenty.node.json +30 -0
  19. package/dist/nodes/Twenty/TwentyApi.client.d.ts +82 -0
  20. package/dist/nodes/Twenty/TwentyApi.client.js +654 -0
  21. package/dist/nodes/Twenty/TwentyApi.client.js.map +1 -0
  22. package/dist/nodes/Twenty/introspection/fieldIntrospection.d.ts +15 -0
  23. package/dist/nodes/Twenty/introspection/fieldIntrospection.js +135 -0
  24. package/dist/nodes/Twenty/introspection/fieldIntrospection.js.map +1 -0
  25. package/dist/nodes/Twenty/operations/create.operation.d.ts +7 -0
  26. package/dist/nodes/Twenty/operations/create.operation.js +20 -0
  27. package/dist/nodes/Twenty/operations/create.operation.js.map +1 -0
  28. package/dist/nodes/Twenty/operations/createMany.operation.d.ts +11 -0
  29. package/dist/nodes/Twenty/operations/createMany.operation.js +72 -0
  30. package/dist/nodes/Twenty/operations/createMany.operation.js.map +1 -0
  31. package/dist/nodes/Twenty/operations/delete.operation.d.ts +7 -0
  32. package/dist/nodes/Twenty/operations/delete.operation.js +18 -0
  33. package/dist/nodes/Twenty/operations/delete.operation.js.map +1 -0
  34. package/dist/nodes/Twenty/operations/deleteMany.operation.d.ts +7 -0
  35. package/dist/nodes/Twenty/operations/deleteMany.operation.js +39 -0
  36. package/dist/nodes/Twenty/operations/deleteMany.operation.js.map +1 -0
  37. package/dist/nodes/Twenty/operations/get.operation.d.ts +7 -0
  38. package/dist/nodes/Twenty/operations/get.operation.js +25 -0
  39. package/dist/nodes/Twenty/operations/get.operation.js.map +1 -0
  40. package/dist/nodes/Twenty/operations/getMany.operation.d.ts +8 -0
  41. package/dist/nodes/Twenty/operations/getMany.operation.js +37 -0
  42. package/dist/nodes/Twenty/operations/getMany.operation.js.map +1 -0
  43. package/dist/nodes/Twenty/operations/index.d.ts +11 -0
  44. package/dist/nodes/Twenty/operations/index.js +26 -0
  45. package/dist/nodes/Twenty/operations/index.js.map +1 -0
  46. package/dist/nodes/Twenty/operations/list.operation.d.ts +7 -0
  47. package/dist/nodes/Twenty/operations/list.operation.js +25 -0
  48. package/dist/nodes/Twenty/operations/list.operation.js.map +1 -0
  49. package/dist/nodes/Twenty/operations/update.operation.d.ts +7 -0
  50. package/dist/nodes/Twenty/operations/update.operation.js +21 -0
  51. package/dist/nodes/Twenty/operations/update.operation.js.map +1 -0
  52. package/dist/nodes/Twenty/operations/updateMany.operation.d.ts +19 -0
  53. package/dist/nodes/Twenty/operations/updateMany.operation.js +75 -0
  54. package/dist/nodes/Twenty/operations/updateMany.operation.js.map +1 -0
  55. package/dist/nodes/Twenty/operations/upsert.operation.d.ts +12 -0
  56. package/dist/nodes/Twenty/operations/upsert.operation.js +122 -0
  57. package/dist/nodes/Twenty/operations/upsert.operation.js.map +1 -0
  58. package/dist/nodes/Twenty/operations/upsertMany.operation.d.ts +13 -0
  59. package/dist/nodes/Twenty/operations/upsertMany.operation.js +120 -0
  60. package/dist/nodes/Twenty/operations/upsertMany.operation.js.map +1 -0
  61. package/dist/nodes/Twenty/twenty.svg +12 -0
  62. package/dist/package.json +81 -0
  63. package/dist/tsconfig.tsbuildinfo +1 -0
  64. package/package.json +81 -0
@@ -0,0 +1,75 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.buildUpdateManyMutations = buildUpdateManyMutations;
27
+ exports.executeUpdateMany = executeUpdateMany;
28
+ const fieldIntrospection_1 = require("../introspection/fieldIntrospection");
29
+ async function buildUpdateManyMutations(context, objectNameSingular, updates, objectMetadata) {
30
+ const capitalizedObjectName = objectNameSingular.charAt(0).toUpperCase() + objectNameSingular.slice(1);
31
+ const fieldSelections = await (0, fieldIntrospection_1.buildComprehensiveFieldSelections)(context, capitalizedObjectName);
32
+ return updates.map(({ id, fieldsData }, index) => {
33
+ const mutation = `
34
+ mutation UpdateMany${objectMetadata.labelSingular.replace(/\s+/g, '')}_${index}($id: UUID!, $data: ${capitalizedObjectName}UpdateInput!) {
35
+ update${capitalizedObjectName}(id: $id, data: $data) {
36
+ ${fieldSelections}
37
+ }
38
+ }
39
+ `;
40
+ const variables = {
41
+ id,
42
+ data: fieldsData,
43
+ };
44
+ return { query: mutation, variables, id };
45
+ });
46
+ }
47
+ async function executeUpdateMany(context, resource, updates, objectMetadata) {
48
+ const { twentyApiRequest } = await Promise.resolve().then(() => __importStar(require('../TwentyApi.client')));
49
+ const mutations = await buildUpdateManyMutations(context, resource, updates, objectMetadata);
50
+ const results = await Promise.allSettled(mutations.map(async ({ query, variables, id }, index) => {
51
+ const response = await twentyApiRequest.call(context, 'graphql', query, variables);
52
+ const operationName = `update${resource.charAt(0).toUpperCase() + resource.slice(1)}`;
53
+ return {
54
+ success: true,
55
+ record: response[operationName],
56
+ id,
57
+ index,
58
+ };
59
+ }));
60
+ return results.map((result, index) => {
61
+ var _a;
62
+ if (result.status === 'fulfilled') {
63
+ return result.value;
64
+ }
65
+ else {
66
+ return {
67
+ success: false,
68
+ error: ((_a = result.reason) === null || _a === void 0 ? void 0 : _a.message) || String(result.reason),
69
+ id: updates[index].id,
70
+ index,
71
+ };
72
+ }
73
+ });
74
+ }
75
+ //# sourceMappingURL=updateMany.operation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateMany.operation.js","sourceRoot":"","sources":["../../../../nodes/Twenty/operations/updateMany.operation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAaA,4DA6BC;AAYD,8CAiDC;AAtGD,4EAAwF;AAYjF,KAAK,UAAU,wBAAwB,CAC7C,OAA0B,EAC1B,kBAA0B,EAC1B,OAA+D,EAC/D,cAAmB;IAGnB,MAAM,qBAAqB,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAGvG,MAAM,eAAe,GAAG,MAAM,IAAA,sDAAiC,EAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;IAGhG,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE;QAChD,MAAM,QAAQ,GAAG;wBACK,cAAc,CAAC,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,KAAK,uBAAuB,qBAAqB;YACjH,qBAAqB;OAC1B,eAAe;;;GAGnB,CAAC;QAEF,MAAM,SAAS,GAAG;YACjB,EAAE;YACF,IAAI,EAAE,UAAU;SAChB,CAAC;QAEF,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;AACJ,CAAC;AAYM,KAAK,UAAU,iBAAiB,CACtC,OAA0B,EAC1B,QAAgB,EAChB,OAA+D,EAC/D,cAAmB;IAEnB,MAAM,EAAE,gBAAgB,EAAE,GAAG,wDAAa,qBAAqB,GAAC,CAAC;IAGjE,MAAM,SAAS,GAAG,MAAM,wBAAwB,CAC/C,OAAO,EACP,QAAQ,EACR,OAAO,EACP,cAAc,CACd,CAAC;IAGF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACvC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE;QACvD,MAAM,QAAQ,GAAQ,MAAM,gBAAgB,CAAC,IAAI,CAChD,OAAO,EACP,SAAS,EACT,KAAK,EACL,SAAS,CACT,CAAC;QAEF,MAAM,aAAa,GAAG,SAAS,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,OAAO;YACN,OAAO,EAAE,IAAI;YACb,MAAM,EAAE,QAAQ,CAAC,aAAa,CAAC;YAC/B,EAAE;YACF,KAAK;SACL,CAAC;IACH,CAAC,CAAC,CACF,CAAC;IAGF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;;QACpC,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACnC,OAAO,MAAM,CAAC,KAAK,CAAC;QACrB,CAAC;aAAM,CAAC;YACP,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,CAAA,MAAA,MAAM,CAAC,MAAM,0CAAE,OAAO,KAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;gBACtD,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;gBACrB,KAAK;aACL,CAAC;QACH,CAAC;IACF,CAAC,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,12 @@
1
+ import { IExecuteFunctions } from 'n8n-workflow';
2
+ export declare function executeUpsert(context: IExecuteFunctions, upsertMode: string, resource: string, fieldsData: Record<string, any>, objectMetadata: any, options: {
3
+ recordIdParam?: string | {
4
+ mode: string;
5
+ value: string;
6
+ };
7
+ matchField?: string;
8
+ matchValue?: string;
9
+ }): Promise<{
10
+ record: any;
11
+ action: 'updated' | 'created';
12
+ }>;
@@ -0,0 +1,122 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.executeUpsert = executeUpsert;
27
+ const n8n_workflow_1 = require("n8n-workflow");
28
+ const TwentyApi_client_1 = require("../TwentyApi.client");
29
+ const create_operation_1 = require("./create.operation");
30
+ const update_operation_1 = require("./update.operation");
31
+ async function executeUpsert(context, upsertMode, resource, fieldsData, objectMetadata, options) {
32
+ var _a;
33
+ let recordId;
34
+ let recordExists = false;
35
+ if (upsertMode === 'id') {
36
+ recordId = extractRecordId(context, options.recordIdParam);
37
+ const pluralName = objectMetadata.namePlural;
38
+ const restPath = `/${pluralName}/${recordId}`;
39
+ try {
40
+ const checkResponse = await TwentyApi_client_1.twentyRestApiRequest.call(context, 'GET', restPath);
41
+ recordExists = ((_a = checkResponse.data) === null || _a === void 0 ? void 0 : _a[resource]) !== undefined;
42
+ }
43
+ catch (error) {
44
+ recordExists = false;
45
+ }
46
+ }
47
+ else {
48
+ if (!options.matchField || !options.matchValue) {
49
+ throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Match field and match value are required for field-based upsert');
50
+ }
51
+ const matchResult = await findRecordByField(context, resource, objectMetadata.namePlural, options.matchField, options.matchValue);
52
+ if (matchResult) {
53
+ recordExists = true;
54
+ recordId = matchResult.id;
55
+ }
56
+ }
57
+ const { twentyApiRequest } = await Promise.resolve().then(() => __importStar(require('../TwentyApi.client')));
58
+ if (recordExists && recordId) {
59
+ const { query, variables } = await (0, update_operation_1.buildUpdateMutation)(context, resource, recordId, fieldsData, objectMetadata);
60
+ const response = await twentyApiRequest.call(context, 'graphql', query, variables);
61
+ const operationName = `update${resource.charAt(0).toUpperCase() + resource.slice(1)}`;
62
+ const updatedRecord = response[operationName];
63
+ return {
64
+ record: updatedRecord,
65
+ action: 'updated',
66
+ };
67
+ }
68
+ else {
69
+ const { query, variables } = await (0, create_operation_1.buildCreateMutation)(context, resource, fieldsData, objectMetadata);
70
+ const response = await twentyApiRequest.call(context, 'graphql', query, variables);
71
+ const operationName = `create${resource.charAt(0).toUpperCase() + resource.slice(1)}`;
72
+ const createdRecord = response[operationName];
73
+ return {
74
+ record: createdRecord,
75
+ action: 'created',
76
+ };
77
+ }
78
+ }
79
+ function extractRecordId(context, recordIdParam) {
80
+ if (!recordIdParam) {
81
+ throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'No record ID provided');
82
+ }
83
+ if (typeof recordIdParam === 'string') {
84
+ return recordIdParam;
85
+ }
86
+ if (recordIdParam && typeof recordIdParam === 'object' && recordIdParam.value) {
87
+ if (recordIdParam.mode === 'url') {
88
+ const urlMatch = recordIdParam.value.match(/https?:\/\/.*?\/objects\/[^\/]+\/([a-f0-9-]{36})/i);
89
+ if (!urlMatch) {
90
+ throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Could not extract record ID from URL: ${recordIdParam.value}`);
91
+ }
92
+ return urlMatch[1];
93
+ }
94
+ return recordIdParam.value;
95
+ }
96
+ throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Invalid record ID parameter format');
97
+ }
98
+ async function findRecordByField(context, resource, pluralName, matchField, matchValue) {
99
+ var _a;
100
+ const restPath = `/${pluralName}`;
101
+ try {
102
+ const searchResponse = await TwentyApi_client_1.twentyRestApiRequest.call(context, 'GET', restPath);
103
+ const records = (_a = searchResponse.data) === null || _a === void 0 ? void 0 : _a[pluralName];
104
+ if (records && Array.isArray(records)) {
105
+ const matchedRecord = records.find((record) => {
106
+ const fieldValue = record[matchField];
107
+ if (typeof fieldValue === 'object' && fieldValue !== null) {
108
+ return JSON.stringify(fieldValue) === JSON.stringify(matchValue);
109
+ }
110
+ return fieldValue === matchValue;
111
+ });
112
+ if (matchedRecord && matchedRecord.id) {
113
+ return { id: matchedRecord.id };
114
+ }
115
+ }
116
+ }
117
+ catch (error) {
118
+ return undefined;
119
+ }
120
+ return undefined;
121
+ }
122
+ //# sourceMappingURL=upsert.operation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upsert.operation.js","sourceRoot":"","sources":["../../../../nodes/Twenty/operations/upsert.operation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import { IExecuteFunctions } from 'n8n-workflow';
2
+ export declare function executeUpsertMany(context: IExecuteFunctions, resource: string, upsertMode: string, upsertData: Array<{
3
+ matchValue: string;
4
+ fieldsData: Record<string, any>;
5
+ }>, objectMetadata: any, options: {
6
+ matchField?: string;
7
+ }): Promise<Array<{
8
+ success: boolean;
9
+ record?: any;
10
+ action?: 'created' | 'updated';
11
+ error?: string;
12
+ index: number;
13
+ }>>;
@@ -0,0 +1,120 @@
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 (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.executeUpsertMany = executeUpsertMany;
27
+ const n8n_workflow_1 = require("n8n-workflow");
28
+ const TwentyApi_client_1 = require("../TwentyApi.client");
29
+ const create_operation_1 = require("./create.operation");
30
+ const update_operation_1 = require("./update.operation");
31
+ async function executeUpsertMany(context, resource, upsertMode, upsertData, objectMetadata, options) {
32
+ const { twentyApiRequest } = await Promise.resolve().then(() => __importStar(require('../TwentyApi.client')));
33
+ const results = await Promise.allSettled(upsertData.map(async ({ matchValue, fieldsData }, index) => {
34
+ var _a;
35
+ let recordId;
36
+ let recordExists = false;
37
+ if (upsertMode === 'id') {
38
+ recordId = matchValue;
39
+ const pluralName = objectMetadata.namePlural;
40
+ const restPath = `/${pluralName}/${recordId}`;
41
+ try {
42
+ const checkResponse = await TwentyApi_client_1.twentyRestApiRequest.call(context, 'GET', restPath);
43
+ recordExists = ((_a = checkResponse.data) === null || _a === void 0 ? void 0 : _a[resource]) !== undefined;
44
+ }
45
+ catch (error) {
46
+ recordExists = false;
47
+ }
48
+ }
49
+ else {
50
+ if (!options.matchField) {
51
+ throw new n8n_workflow_1.NodeOperationError(context.getNode(), 'Match field is required for field-based upsert');
52
+ }
53
+ const matchResult = await findRecordByField(context, resource, objectMetadata.namePlural, options.matchField, matchValue);
54
+ if (matchResult) {
55
+ recordExists = true;
56
+ recordId = matchResult.id;
57
+ }
58
+ }
59
+ if (recordExists && recordId) {
60
+ const { query, variables } = await (0, update_operation_1.buildUpdateMutation)(context, resource, recordId, fieldsData, objectMetadata);
61
+ const response = await twentyApiRequest.call(context, 'graphql', query, variables);
62
+ const operationName = `update${resource.charAt(0).toUpperCase() + resource.slice(1)}`;
63
+ return {
64
+ success: true,
65
+ record: response[operationName],
66
+ action: 'updated',
67
+ index,
68
+ };
69
+ }
70
+ else {
71
+ const { query, variables } = await (0, create_operation_1.buildCreateMutation)(context, resource, fieldsData, objectMetadata);
72
+ const response = await twentyApiRequest.call(context, 'graphql', query, variables);
73
+ const operationName = `create${resource.charAt(0).toUpperCase() + resource.slice(1)}`;
74
+ return {
75
+ success: true,
76
+ record: response[operationName],
77
+ action: 'created',
78
+ index,
79
+ };
80
+ }
81
+ }));
82
+ return results.map((result, index) => {
83
+ var _a;
84
+ if (result.status === 'fulfilled') {
85
+ return result.value;
86
+ }
87
+ else {
88
+ return {
89
+ success: false,
90
+ error: ((_a = result.reason) === null || _a === void 0 ? void 0 : _a.message) || String(result.reason),
91
+ index,
92
+ };
93
+ }
94
+ });
95
+ }
96
+ async function findRecordByField(context, resource, pluralName, matchField, matchValue) {
97
+ var _a;
98
+ const restPath = `/${pluralName}`;
99
+ try {
100
+ const searchResponse = await TwentyApi_client_1.twentyRestApiRequest.call(context, 'GET', restPath);
101
+ const records = (_a = searchResponse.data) === null || _a === void 0 ? void 0 : _a[pluralName];
102
+ if (records && Array.isArray(records)) {
103
+ const matchedRecord = records.find((record) => {
104
+ const fieldValue = record[matchField];
105
+ if (typeof fieldValue === 'object' && fieldValue !== null) {
106
+ return JSON.stringify(fieldValue) === JSON.stringify(matchValue);
107
+ }
108
+ return fieldValue === matchValue;
109
+ });
110
+ if (matchedRecord && matchedRecord.id) {
111
+ return { id: matchedRecord.id };
112
+ }
113
+ }
114
+ }
115
+ catch (error) {
116
+ return undefined;
117
+ }
118
+ return undefined;
119
+ }
120
+ //# sourceMappingURL=upsertMany.operation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"upsertMany.operation.js","sourceRoot":"","sources":["../../../../nodes/Twenty/operations/upsertMany.operation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ <svg width="136" height="136" viewBox="0 0 136 136" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g clip-path="url(#clip0_2343_96406)">
3
+ <path d="M136 2.28882e-05H0L0.000144482 136H136V2.28882e-05ZM27.27 50.6401C27.27 43.2101 33.3 37.1801 40.73 37.1801H66.64C67.02 37.1801 67.37 37.4101 67.53 37.7601C67.69 38.1101 67.62 38.5201 67.36 38.8101L61.68 44.9801C60.69 46.0501 59.3 46.6701 57.84 46.6701H40.8C38.57 46.6701 36.76 48.4801 36.76 50.7101V60.8901C36.76 62.2001 35.7 63.2601 34.39 63.2601H29.65C28.34 63.2601 27.28 62.2001 27.28 60.8901V50.6401H27.27ZM107.88 85.3601C107.88 92.7901 101.85 98.82 94.42 98.82H83.41C75.98 98.82 69.95 92.7901 69.95 85.3601V66.0901C69.95 64.7801 70.44 63.5201 71.33 62.5501L77.75 55.5801C78.02 55.2901 78.44 55.1901 78.82 55.3301C79.19 55.4801 79.44 55.83 79.44 56.23V85.3001C79.44 87.5301 81.25 89.3401 83.48 89.3401H94.36C96.59 89.3401 98.4 87.5301 98.4 85.3001V50.7101C98.4 48.4801 96.59 46.6701 94.36 46.6701H81.71C80.26 46.6701 78.88 47.2801 77.89 48.3401L40.16 89.3401H62.83C64.14 89.3401 65.2 90.4001 65.2 91.7101V96.4501C65.2 97.7601 64.14 98.82 62.83 98.82H32.28C29.51 98.82 27.26 96.5701 27.26 93.8001V91.29C27.26 90.03 27.73 88.8201 28.59 87.8901L70.89 41.9401C73.69 38.9001 77.62 37.1801 81.75 37.1801H94.41C101.84 37.1801 107.87 43.2101 107.87 50.6401V85.3601H107.88Z" fill="black"/>
4
+ <path d="M27.27 50.6401C27.27 43.2101 33.3 37.1801 40.73 37.1801H66.64C67.02 37.1801 67.37 37.4101 67.53 37.7601C67.69 38.1101 67.62 38.5201 67.36 38.8101L61.68 44.9801C60.69 46.0501 59.3 46.6701 57.84 46.6701H40.8C38.57 46.6701 36.76 48.4801 36.76 50.7101V60.8901C36.76 62.2001 35.7 63.2601 34.39 63.2601H29.65C28.34 63.2601 27.28 62.2001 27.28 60.8901V50.6401H27.27Z" fill="white"/>
5
+ <path d="M107.88 85.3601C107.88 92.7901 101.85 98.82 94.42 98.82H83.41C75.98 98.82 69.95 92.7901 69.95 85.3601V66.0901C69.95 64.7801 70.44 63.5201 71.33 62.5501L77.75 55.5801C78.02 55.2901 78.44 55.1901 78.82 55.3301C79.19 55.4801 79.44 55.83 79.44 56.23V85.3001C79.44 87.5301 81.25 89.3401 83.48 89.3401H94.36C96.59 89.3401 98.4 87.5301 98.4 85.3001V50.7101C98.4 48.4801 96.59 46.6701 94.36 46.6701H81.71C80.26 46.6701 78.88 47.2801 77.89 48.3401L40.16 89.3401H62.83C64.14 89.3401 65.2 90.4001 65.2 91.7101V96.4501C65.2 97.7601 64.14 98.82 62.83 98.82H32.28C29.51 98.82 27.26 96.5701 27.26 93.8001V91.29C27.26 90.03 27.73 88.8201 28.59 87.8901L70.89 41.9401C73.69 38.9001 77.62 37.1801 81.75 37.1801H94.41C101.84 37.1801 107.87 43.2101 107.87 50.6401V85.3601H107.88Z" fill="white"/>
6
+ </g>
7
+ <defs>
8
+ <clipPath id="clip0_2343_96406">
9
+ <rect width="136" height="136" rx="16" fill="white"/>
10
+ </clipPath>
11
+ </defs>
12
+ </svg>
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "@lilremark/n8n-nodes-twenty-dynamic",
3
+ "version": "2.2.10",
4
+ "description": "Advanced GraphQL n8n node for Twenty CRM with custom database, field support, and resource locators. Complete CRUD support for custom and default databases",
5
+ "keywords": [
6
+ "n8n-community-node-package",
7
+ "twenty-crm",
8
+ "crm",
9
+ "graphql",
10
+ "graphql-api",
11
+ "typescript",
12
+ "people",
13
+ "companies",
14
+ "opportunities",
15
+ "notes",
16
+ "sales-pipeline",
17
+ "twenty-fork",
18
+ "community-fork",
19
+ "unified-search",
20
+ "smart-fields",
21
+ "custom-fields",
22
+ "field-resolution",
23
+ "automation",
24
+ "workflow",
25
+ "modern-architecture",
26
+ "modular",
27
+ "integration",
28
+ "api",
29
+ "dynamic-nodes",
30
+ "n8n-nodes",
31
+ "open-source-crm"
32
+ ],
33
+ "license": "MIT",
34
+ "author": {
35
+ "name": "Vaibhav Agarwal",
36
+ "email": "agarwalvaibhav0211@gmail.com"
37
+ },
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "https://github.com/lilremark/n8n-nodes-twenty-dynamic"
41
+ },
42
+ "engines": {
43
+ "node": ">=18.10",
44
+ "pnpm": ">=9.1"
45
+ },
46
+ "packageManager": "pnpm@9.1.4",
47
+ "scripts": {
48
+ "preinstall": "npx only-allow pnpm",
49
+ "build": "tsc && gulp build:icons",
50
+ "dev": "tsc --watch",
51
+ "format": "prettier nodes credentials --write",
52
+ "lint": "eslint nodes credentials package.json",
53
+ "lintfix": "eslint nodes credentials package.json --fix",
54
+ "prepublishOnly": "pnpm build && pnpm lint -c .eslintrc.prepublish.js nodes credentials package.json"
55
+ },
56
+ "files": [
57
+ "dist"
58
+ ],
59
+ "n8n": {
60
+ "n8nNodesApiVersion": 1,
61
+ "credentials": [
62
+ "dist/credentials/TwentyApi.credentials.js"
63
+ ],
64
+ "nodes": [
65
+ "dist/nodes/Twenty/Twenty.node.js"
66
+ ]
67
+ },
68
+ "devDependencies": {
69
+ "@n8n/node-cli": "^0.17.0",
70
+ "@typescript-eslint/parser": "^7.15.0",
71
+ "eslint": "^8.57.1",
72
+ "eslint-plugin-n8n-nodes-base": "^1.16.1",
73
+ "gulp": "^4.0.2",
74
+ "n8n-workflow": "*",
75
+ "prettier": "^3.3.2",
76
+ "typescript": "^5.5.3"
77
+ },
78
+ "peerDependencies": {
79
+ "n8n-workflow": "*"
80
+ }
81
+ }
@@ -0,0 +1 @@
1
+ {"program":{"fileNames":["../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es5.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2015.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2016.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2017.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2018.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2019.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2020.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2015.core.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2015.collection.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2015.generator.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2015.iterable.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2015.promise.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2015.proxy.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2015.reflect.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2015.symbol.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2016.array.include.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2016.intl.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2017.date.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2017.object.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2017.string.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2017.intl.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2018.intl.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2018.promise.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2018.regexp.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2019.array.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2019.object.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2019.string.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2019.symbol.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2019.intl.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2020.bigint.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2020.date.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2020.promise.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2020.string.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2020.intl.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2020.number.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.es2022.error.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.decorators.d.ts","../node_modules/.pnpm/typescript@5.5.3/node_modules/typescript/lib/lib.decorators.legacy.d.ts","../node_modules/.pnpm/form-data@4.0.0/node_modules/form-data/index.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/authentication.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/constants.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/deferredpromise.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/executionstatus.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/application.error.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/abstract/execution-base.error.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/expression.error.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/expression.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/workflow.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/workflow-activation.error.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/workflow-operation.error.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/workflowhooks.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/abstract/node.error.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/node-api.error.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/node-operation.error.d.ts","../node_modules/.pnpm/axios@1.6.7/node_modules/axios/index.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/interfaces.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/loggerproxy.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errorreporterproxy.d.ts","../node_modules/.pnpm/ast-types@0.15.2/node_modules/ast-types/types.d.ts","../node_modules/.pnpm/ast-types@0.15.2/node_modules/ast-types/gen/namedtypes.d.ts","../node_modules/.pnpm/ast-types@0.15.2/node_modules/ast-types/gen/kinds.d.ts","../node_modules/.pnpm/ast-types@0.15.2/node_modules/ast-types/gen/builders.d.ts","../node_modules/.pnpm/ast-types@0.15.2/node_modules/ast-types/lib/types.d.ts","../node_modules/.pnpm/ast-types@0.15.2/node_modules/ast-types/lib/path.d.ts","../node_modules/.pnpm/ast-types@0.15.2/node_modules/ast-types/lib/scope.d.ts","../node_modules/.pnpm/ast-types@0.15.2/node_modules/ast-types/lib/node-path.d.ts","../node_modules/.pnpm/ast-types@0.15.2/node_modules/ast-types/lib/path-visitor.d.ts","../node_modules/.pnpm/ast-types@0.15.2/node_modules/ast-types/gen/visitor.d.ts","../node_modules/.pnpm/ast-types@0.15.2/node_modules/ast-types/main.d.ts","../node_modules/.pnpm/recast@0.22.0/node_modules/recast/lib/options.d.ts","../node_modules/.pnpm/recast@0.22.0/node_modules/recast/lib/parser.d.ts","../node_modules/.pnpm/recast@0.22.0/node_modules/recast/lib/printer.d.ts","../node_modules/.pnpm/recast@0.22.0/node_modules/recast/main.d.ts","../node_modules/.pnpm/@n8n+tournament@1.0.2/node_modules/@n8n/tournament/dist/expressionsplitter.d.ts","../node_modules/.pnpm/@n8n+tournament@1.0.2/node_modules/@n8n/tournament/dist/expressionbuilder.d.ts","../node_modules/.pnpm/@n8n+tournament@1.0.2/node_modules/@n8n/tournament/dist/analysis.d.ts","../node_modules/.pnpm/@n8n+tournament@1.0.2/node_modules/@n8n/tournament/dist/index.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/expressionevaluatorproxy.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/nodehelpers.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/observableobject.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/telemetryhelpers.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/credential-access-error.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/node-ssl.error.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/webhook-taken.error.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/workflow-deactivation.error.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/subworkflow-operation.error.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/cli-subworkflow-operation.error.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/trigger-close.error.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/expression-extension.error.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/errors/index.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/cron.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/globalstate.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/messageeventbus.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/routingnode.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/workflowdataproxy.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/versionednodetype.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/typevalidation.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/utils.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/type-guards.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/extensions/extensions.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/extensions/expressionextension.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/extensions/index.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/extensions/expressionparser.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/nativemethods/index.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/nodeparameters/filterparameter.d.ts","../node_modules/.pnpm/n8n-workflow@1.48.0/node_modules/n8n-workflow/dist/index.d.ts","../credentials/twentyapi.credentials.ts","../nodes/twenty/complexfielddetection.ts","../nodes/twenty/fieldparameters.ts","../nodes/twenty/fieldtransformation.ts","../nodes/twenty/introspection/fieldintrospection.ts","../nodes/twenty/operations/get.operation.ts","../nodes/twenty/operations/list.operation.ts","../nodes/twenty/operations/create.operation.ts","../nodes/twenty/operations/update.operation.ts","../nodes/twenty/operations/delete.operation.ts","../nodes/twenty/operations/upsert.operation.ts","../nodes/twenty/operations/createmany.operation.ts","../nodes/twenty/operations/getmany.operation.ts","../nodes/twenty/operations/updatemany.operation.ts","../nodes/twenty/operations/deletemany.operation.ts","../nodes/twenty/operations/upsertmany.operation.ts","../nodes/twenty/operations/index.ts","../nodes/twenty/twentyapi.client.ts","../nodes/twenty/twenty.node.ts","../nodes/twenty/twenty.node.json","../package.json"],"fileInfos":[{"version":"44e584d4f6444f58791784f1d530875970993129442a847597db702a073ca68c","affectsGlobalScope":true},"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","9a68c0c07ae2fa71b44384a839b7b8d81662a236d4b9ac30916718f7510b1b2d","5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4",{"version":"6920e1448680767498a0b77c6a00a8e77d14d62c3da8967b171f1ddffa3c18e4","affectsGlobalScope":true},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true},{"version":"4443e68b35f3332f753eacc66a04ac1d2053b8b035a0e0ac1d455392b5e243b3","affectsGlobalScope":true},{"version":"bc47685641087c015972a3f072480889f0d6c65515f12bd85222f49a98952ed7","affectsGlobalScope":true},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true},{"version":"93495ff27b8746f55d19fcbcdbaccc99fd95f19d057aed1bd2c0cafe1335fbf0","affectsGlobalScope":true},{"version":"6fc23bb8c3965964be8c597310a2878b53a0306edb71d4b5a4dfe760186bcc01","affectsGlobalScope":true},{"version":"ea011c76963fb15ef1cdd7ce6a6808b46322c527de2077b6cfdf23ae6f5f9ec7","affectsGlobalScope":true},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true},{"version":"bb42a7797d996412ecdc5b2787720de477103a0b2e53058569069a0e2bae6c7e","affectsGlobalScope":true},{"version":"4738f2420687fd85629c9efb470793bb753709c2379e5f85bc1815d875ceadcd","affectsGlobalScope":true},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true},{"version":"9fc46429fbe091ac5ad2608c657201eb68b6f1b8341bd6d670047d32ed0a88fa","affectsGlobalScope":true},{"version":"61c37c1de663cf4171e1192466e52c7a382afa58da01b1dc75058f032ddf0839","affectsGlobalScope":true},{"version":"b541a838a13f9234aba650a825393ffc2292dc0fc87681a5d81ef0c96d281e7a","affectsGlobalScope":true},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true},{"version":"ae37d6ccd1560b0203ab88d46987393adaaa78c919e51acf32fb82c86502e98c","affectsGlobalScope":true},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true},{"version":"bf14a426dbbf1022d11bd08d6b8e709a2e9d246f0c6c1032f3b2edb9a902adbe","affectsGlobalScope":true},{"version":"5e07ed3809d48205d5b985642a59f2eba47c402374a7cf8006b686f79efadcbd","affectsGlobalScope":true},{"version":"2b72d528b2e2fe3c57889ca7baef5e13a56c957b946906d03767c642f386bbc3","affectsGlobalScope":true},{"version":"479553e3779be7d4f68e9f40cdb82d038e5ef7592010100410723ceced22a0f7","affectsGlobalScope":true},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true},{"version":"e6633e05da3ff36e6da2ec170d0d03ccf33de50ca4dc6f5aeecb572cedd162fb","affectsGlobalScope":true},{"version":"33358442698bb565130f52ba79bfd3d4d484ac85fe33f3cb1759c54d18201393","affectsGlobalScope":true},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true},"736097ddbb2903bef918bb3b5811ef1c9c5656f2a73bd39b22a91b9cc2525e50","d00d9369b2ee770658530f04dc09cd14deebdc6456816c5ecd5495911b1cae84","a69fe04ffcfb78fc4f9761397b97419f09629e3e7dc76f2980f85d03aeac39eb","8b9e20585ff8d1664c6cd14d4b02ccc46300a7cf30871fae19436a5babedd86d","3226c2a2af36d14aa551babd4154ad18042c0deb1509a61058c6b066cfddc30a","7e17bc482ade0e34ec7d328767bfd36b38acd50437af0da5b8fb0d2fbd2afb50","038a6396d4f8c66d6bacd7ab14f4b084c3ef1ea7fab5b7528d9832f9717fbcb1","054eafa956d5592e6a91c2553e5657ee3032ed50121a65da1079c96d82631459","14f2edd0618d9adaf83d22b55155ec41faddac678b4d158c8380e4325c8b36b6","d8a779627816583ed4fb309c04ae5559cf5c3929d9f4378085e1fe5de66f5b4a","aca223e907b2e6a5c7f94b506b260da1ac1aebd5b02bb52c1ad7867e04c7e8b1","c32c8968ae44372c2975dfb3f51876ba635a3598673118565f661a9efb8874e3","14e9055fab9d7252730a60f301fd64c0429ae6ac273df2e3424474836b44dbfc","4f39bb23970b0a1d9dcc0b6db6382c06cfd653c2e33fd5a1b83afb650912434f","d88eff4699ac491c3b470fe4ef7bd8eadefedb23d1ae7109da33e34f0538e321","64f353c0c41fd90d2ad429631442fcfbb51d97b77e3e3f3855f9ca6f0f04c2d7","f64487e06875cfbe0cc854328920403df337dc6c1925070995653ac71c266c0e","f682d02a03249dfe41da5857a371c99269a2649b7540bb43426b357b35a2f8e7","6ed8cd0313f2a4c0d3080c0d324b31be20766f53639161bef0405e1c8a888152","84e41060dd913fc5466aa6a04c5ebec55e9d76ab1f5e3917c8492797d8679701","e78705f977ecfcc36de9ab57841ad7a617ef649b07a995577fd857f1d175f730","5083850590c7890ffb680f0c9838f48b07eb8b2f7dbe02874858fcac0691705d","02a4a2284d423d8ccc3a77aa9257c34fdac28cddfb46f73178e60f6a1b1b31e9","3ee8e014aab37dbd755401967fbb9602221550038f6b8da6cedd5291a918ae0a","826f3c6a6d737e0d330522094a21cde94a202c5373448240ba483709cb829aec","7e4a23f6f3763da4a06900935d22acfd463c375cada5ab325e3980bd6c95d5b3","f3e045e81b47113fa02aaf9637b9ef84347610aaceda60a0d8316aabc3f03638","1bfe6db4f3dffacd1da82748cb8f0acec04e8a4d7bd36c09573d5d80a7dec28b","6a8d6deca8ec4250630fea4e5f23bd9bf0face98739ccd22e08a17173117155b","226dbfe4506447111bd898161d47850f8c57f04cbb6a3a6d487b7939dbf89b1b","13f846a45f738733c8a63a06eaa9f580e9c07eb7aed5d8a2c674114846a42175","9d14fcf0b69094271127c7b6acb36987be5d1bffa4eb948359549f040fb50349","e3a5287471fb08f053c06fd998632792aa5f022e45278f1e6dd55fb2fa9e7362","28a6c8eeb48e165920067b9193555649fc43c2a28c450f23f622e5eb043d9463","1147c3efa5a256bcd6a3d2cfaf764185b7120bf985f8412d9bae596a0348f77b","0494f89b64c5e8906ce5284194e09bad42b56837757d79cb9e62ce16aae88ab4","1b5d04b01ffda14ab49924c1c5601c1d29df55ea9bfd281d38082730bebf0295","d6220bee7bd245bc2a377f1a8ef31c496132cc9c7e7e3937e7dd4cbbcec0b38d","da4868424f5ea67d59e98705dab39055000d839a1250ac0cc80bda366c89fddc","420f415e6e5f2550395698e535147339d66fcc5848699e5308d35d90927f72d1","d0a633354f887cc3190bddeba688c8d24706052351151ac199d9c58038faaec4","edd5e20e9eb8cb2eaf941d431af3ab69a9b94e7f5d8699b4c938fee1be8d53c4","315438c7c6fb8645f6862af11b4dcfb7784ebff919056da1dfc3007ac8d5468d","5830ba1f5c81d641b214365ef519d2856f92a584f6cd90cb688edf63c2b84d25","37020cf15e16fa6e1c6e2485cd51d6cbe74adee3b860ab49fb7528ca7e8e518e","1950d2a49c05c7aa6decfe409b552c4ea5fb156894cf0541b34999819bd778ea","32fe829960ff7120843f6dd20197e863aee3e81ecded415641a7500654d1bda7","393b1ed0dca4f0aac333e65f2e40dfedfa8b37ac60571e02b152d32d8c84d340","f46d50c283425bcc59d68ccf067b3672fb727f802652dc7d60d2e470fb956370","6a5a7df74a63e3c3e34c8d4eab2bc8bdc78e242331105e77a428daabcc8ee80a","0b4b6ca509cdb152e18ceeed526d17bb416e7e518508d859a0174977195f9a35","8131b8cb20786d5493b9d48f391c7579b9230ae1ce37a24482b50a753b1da428","0234584eaf3c5c21e7d3b79e1a9d71551e2a6fa5ca25bdc39c544f00e6e52b1e","304b0d21771513c0a36ed7179a9d1069bfa776e95f50b789ce898f3ef2b71514","a42e1c2eec0e747163afa705044664a39065215a8d66c930f8d43f118a9bc044","b30813c7fd97c6a52dc0acfd2444cc06f5fb84fbcc7c19f102bc4443d5199372","8dc10d735f5eecccbfe84231f0ed47c6059593629311210f0d3c94a4f08dd23e","951baa882e6e3e5026cb8a16f80a8bebec1caa35c3fa016c9a3ce6a338bd3123","310ae04779dbcfebfac4872bf27cf636b24324d20dd28132d4d5757bbc8abb2b","0a3f7038afb4012783d87c03e9d53a27ce9bdb6487e70bde9a024a04430c672a","3f6f70c077ed8d600aa24d8c0e83ba0dd5d2c5300d524cd2181efd30c0a62c72","b773bcdaeda86c0f58910cecd6c77a0bd60be763127c42cad5a64fe66799b1f6","0ca63470234437191f454f7f66b5815d79b59ebc636faa1de1194d282563e431","6d3b514475ee51ab5e99e4fc82ffcd6191d40c19dd197a1743111e0757c6f9c6","0494f89b64c5e8906ce5284194e09bad42b56837757d79cb9e62ce16aae88ab4","716c6fce977a188f23ee5165e4179944a63e8620784a7054fc0dd81f6c348bb4","b79ef2d2e4d26abd3c9bc4e72d4daa09feb0e6044c7872b587bf6b43d8a8838d","44474654278b37f50e1ff14dc992ffaa6b2530989d7a9853bdb66203a36e080c",{"version":"be73ca7c6d55f7147ceb9e8540a9b5f477e1e062286982498e3e0c6081898b40","signature":"4c4d032e72613d8cffdab5be0c229ca7683e47f09e3d739932c5f5909aac3da3"},{"version":"45870c29b72e53843abff50b1c369231f6a662a579664173f714aa120bad6357","signature":"0a5b5608cecc00a83e63947cb087f76042862c20ab540f711210cc215c24f883"},{"version":"19cc5283d7dbfec2e72d8a0d806f307beb0292138b7613390f6f39309db48d7c","signature":"25c231c9732301d515fe89d0256aa84b16c4d2ed510ec44824437e634129fe72"},{"version":"bc080c0c7dea11d0a107027c198bb36ddd352bdb00a8c198d02887049449765e","signature":"21f885592a185287d5051c206cf61053818baf67ce1f79e903b145e1f3467a21"},{"version":"4d1e490eef43a31a049c3716b5d068544ed023e91852aaeba516beb4093fe177","signature":"fa5ee360329f9fa313c1c0b545b5c815f0e05f8270fbffe35e532e75b7eef8fe"},{"version":"eca8a996ee52b24368a733ae326a334d077aa8365e9bb5be187aa3874158e6c5","signature":"bfa70fd6c55c68e5ab31fe91f405011f87ad64a765f4b42e30411c26a7d2b605"},{"version":"9646e1bc122b9292c8f01a7fc9214cdca1067c11795529c13c4f2c1276fd5e9d","signature":"c38c62cfd00639e1a1f51a47ffddb32014c74563d296194e72962643c7a028b9"},{"version":"21cbedb8fd1a08cfb0550a99490d488b19f8162fee4254f6d2d5046bdce7e793","signature":"691f5ad193f457b740110a93c0684a4ad68aed02edd69142e3b51873f29cb4b7"},{"version":"f4780c68ff039adf070cd55c495dacdcce33fc26d9bb165170c88ed93a7f3ba1","signature":"3447c21756746be4a8ed011102e62a058048fffe0304924ad0f5b928a842f2e7"},{"version":"7b6f484fab6fa176e359701be0fd5033d4f26339e129e521465ee17032f52f65","signature":"312004317af3190e39a5eab918207ecce06dc9c35f664e9c2b681763cca979a0"},{"version":"4ae5dbb25be3f06809fdd3f0d39dada3f2208fc16a2026a05ee25382fa914a09","signature":"2b7f55776e5100320deea0c9440f9ba2f5dcbbe965636ab1522795d880dead86"},{"version":"41401ca4cfb09edc893f1a83e2907a8ace800a1f292d868a634f84de6d471090","signature":"559e27fd4c375b13e222abaded6f7a1505484e46bd120a338854f7e045a30128"},{"version":"53cad1d68c4402200ce24b50ad3e0912213b8712ec2b5def694902efc6f800de","signature":"87f0db806a3172064bac6b656610d77a10b079a7a48c582f368adc3e080e6183"},{"version":"45324adebf97b314d97a5935e7bb9e06fb49b34e0344863f655ed8d242fb7e86","signature":"ace0f968ae2e6c789e6fa6a689d6a29ffd8e56022fcfcad7b55e67b8a32cdc93"},{"version":"4e410a7acb34b84eac080813fc48a5fb5894a347fa0380ea75ddd61ed8ea2279","signature":"c54429394c218c02762afe20c738c7e2617fe40dbc04e1592a9537cdd8e3fa6a"},{"version":"33f37ba5ecb3c11f4c609efdcfedd5b278c506806fbb787b90fb2cd7a28b4f2d","signature":"24642701ad73c28da7852623fc0245e86dcbe4443f4f6d0fd2512aa575f09920"},{"version":"3726a2f9451d6e1a2b092174e97e42e210567f65a05693e16f7b8107c2d9e66c","signature":"2f16865e3b250a520af782b6b8e1c82d8985f5b1795610065f2fb00614b9c96d"},{"version":"8ee2169cb8ca2f54c1bb10dc85f8ef0ab0925898751971176cb239c2a9b99416","signature":"6629c797acce1803738d1267f1d02c619f0e5155ade2b7aca4f93c99979b3d37"},{"version":"69db10e8216dc699c8b48854b6ced496cb3cdce3c360db9235290ccc7d73cc6a","signature":"f2c41076c7d909ec55be9f0ff04495ea30af8e63eada6f778742f93f72b9d5c2"},"3fa6de8cbcfc432ab6824fc2e8eb0bf13f2e22ad195baf614b49c1a989aa956a",{"version":"395754f930e191694c4068ce325ea3703c9f457670a7d9489f42319ab736c7b1","signature":"2895f51dad406cc48009baff3431d45bb7718845f3a3c367072c99f1c7f309a4"}],"root":[[114,134]],"options":{"declaration":true,"esModuleInterop":true,"module":1,"noImplicitAny":true,"noImplicitReturns":true,"noUnusedLocals":true,"outDir":"./","preserveConstEnums":true,"removeComments":true,"skipLibCheck":true,"sourceMap":true,"strict":true,"strictNullChecks":true,"target":6,"useUnknownInCatchVariables":false},"fileIdsList":[[113],[82],[80,81],[82,83],[67,68],[67],[66,68,70],[67,73,74],[66,70,71,72],[66,70,73,75],[66,70],[66,73],[66,67,69],[66,67,69,70,71,73,74,75],[63],[51],[51,63],[52],[93],[52,63],[53],[51,52,53,56,57,59,60,61,89,90,91,92,93,94,95,96],[51,59,63],[59,60],[57],[56],[51,52,63],[55,63],[63,84],[107],[107,108],[47,48,49,50,54,55,58,63,64,65,85,86,87,88,97,98,99,100,101,102,103,104,105,106,109,110,111,112],[46,47,48,49,50,53,55,56,57,58,60,61,62],[54,63],[66],[77],[76,77,78,79],[113,131],[113,118],[113,118,131],[119,120,121,122,123,124,125,126,127,128,129],[113,121,122,131],[113,117,130,131],[113,118,130]],"referencedMap":[[114,1],[83,2],[82,3],[84,4],[69,5],[68,6],[67,7],[75,8],[73,9],[74,10],[71,11],[72,12],[70,13],[76,14],[48,15],[65,16],[52,17],[59,18],[94,19],[89,20],[96,21],[53,18],[97,22],[60,23],[61,24],[90,18],[93,25],[95,17],[91,26],[56,27],[92,26],[57,18],[54,28],[85,29],[108,30],[109,31],[113,32],[63,33],[64,15],[100,15],[111,30],[86,28],[112,15],[87,15],[101,28],[88,15],[106,15],[104,15],[105,15],[103,15],[55,34],[102,28],[58,15],[77,35],[78,36],[80,37],[116,1],[118,38],[121,39],[125,40],[123,1],[128,38],[119,39],[126,38],[130,41],[120,39],[122,39],[127,40],[124,42],[129,42],[132,43],[131,44]]},"version":"5.5.3"}
package/package.json ADDED
@@ -0,0 +1,81 @@
1
+ {
2
+ "name": "@lilremark/n8n-nodes-twenty-dynamic",
3
+ "version": "2.2.10",
4
+ "description": "Advanced GraphQL n8n node for Twenty CRM with custom database, field support, and resource locators. Complete CRUD support for custom and default databases",
5
+ "keywords": [
6
+ "n8n-community-node-package",
7
+ "twenty-crm",
8
+ "crm",
9
+ "graphql",
10
+ "graphql-api",
11
+ "typescript",
12
+ "people",
13
+ "companies",
14
+ "opportunities",
15
+ "notes",
16
+ "sales-pipeline",
17
+ "twenty-fork",
18
+ "community-fork",
19
+ "unified-search",
20
+ "smart-fields",
21
+ "custom-fields",
22
+ "field-resolution",
23
+ "automation",
24
+ "workflow",
25
+ "modern-architecture",
26
+ "modular",
27
+ "integration",
28
+ "api",
29
+ "dynamic-nodes",
30
+ "n8n-nodes",
31
+ "open-source-crm"
32
+ ],
33
+ "license": "MIT",
34
+ "author": {
35
+ "name": "Vaibhav Agarwal",
36
+ "email": "agarwalvaibhav0211@gmail.com"
37
+ },
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "https://github.com/lilremark/n8n-nodes-twenty-dynamic"
41
+ },
42
+ "engines": {
43
+ "node": ">=18.10",
44
+ "pnpm": ">=9.1"
45
+ },
46
+ "packageManager": "pnpm@9.1.4",
47
+ "scripts": {
48
+ "preinstall": "npx only-allow pnpm",
49
+ "build": "tsc && gulp build:icons",
50
+ "dev": "tsc --watch",
51
+ "format": "prettier nodes credentials --write",
52
+ "lint": "eslint nodes credentials package.json",
53
+ "lintfix": "eslint nodes credentials package.json --fix",
54
+ "prepublishOnly": "pnpm build && pnpm lint -c .eslintrc.prepublish.js nodes credentials package.json"
55
+ },
56
+ "files": [
57
+ "dist"
58
+ ],
59
+ "n8n": {
60
+ "n8nNodesApiVersion": 1,
61
+ "credentials": [
62
+ "dist/credentials/TwentyApi.credentials.js"
63
+ ],
64
+ "nodes": [
65
+ "dist/nodes/Twenty/Twenty.node.js"
66
+ ]
67
+ },
68
+ "devDependencies": {
69
+ "@n8n/node-cli": "^0.17.0",
70
+ "@typescript-eslint/parser": "^7.15.0",
71
+ "eslint": "^8.57.1",
72
+ "eslint-plugin-n8n-nodes-base": "^1.16.1",
73
+ "gulp": "^4.0.2",
74
+ "n8n-workflow": "*",
75
+ "prettier": "^3.3.2",
76
+ "typescript": "^5.5.3"
77
+ },
78
+ "peerDependencies": {
79
+ "n8n-workflow": "*"
80
+ }
81
+ }