n8n-nodes-base 1.96.0 → 1.97.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.
Files changed (34) hide show
  1. package/dist/nodes/Evaluation/EvaluationTrigger/EvaluationTrigger.node.ee.js +18 -13
  2. package/dist/nodes/Evaluation/EvaluationTrigger/EvaluationTrigger.node.ee.js.map +1 -1
  3. package/dist/nodes/Google/Gmail/GenericFunctions.js +1 -1
  4. package/dist/nodes/Google/Gmail/GenericFunctions.js.map +1 -1
  5. package/dist/nodes/Google/Gmail/v2/DraftDescription.js +7 -0
  6. package/dist/nodes/Google/Gmail/v2/DraftDescription.js.map +1 -1
  7. package/dist/nodes/Google/Gmail/v2/GmailV2.node.js +4 -0
  8. package/dist/nodes/Google/Gmail/v2/GmailV2.node.js.map +1 -1
  9. package/dist/nodes/Google/Gmail/v2/utils/draft.js +44 -0
  10. package/dist/nodes/Google/Gmail/v2/utils/draft.js.map +1 -0
  11. package/dist/nodes/HttpRequest/V3/HttpRequestV3.node.js +10 -4
  12. package/dist/nodes/HttpRequest/V3/HttpRequestV3.node.js.map +1 -1
  13. package/dist/nodes/HttpRequest/V3/utils/binaryData.js +37 -0
  14. package/dist/nodes/HttpRequest/V3/utils/binaryData.js.map +1 -0
  15. package/dist/nodes/HttpRequest/V3/utils/parse.js +34 -0
  16. package/dist/nodes/HttpRequest/V3/utils/parse.js.map +1 -0
  17. package/dist/nodes/Linear/CommentDescription.js +105 -0
  18. package/dist/nodes/Linear/CommentDescription.js.map +1 -0
  19. package/dist/nodes/Linear/IssueDescription.js +23 -1
  20. package/dist/nodes/Linear/IssueDescription.js.map +1 -1
  21. package/dist/nodes/Linear/Linear.node.js +37 -0
  22. package/dist/nodes/Linear/Linear.node.js.map +1 -1
  23. package/dist/nodes/Linear/Queries.js +17 -0
  24. package/dist/nodes/Linear/Queries.js.map +1 -1
  25. package/dist/nodes/Linear/test/workflow/apiRequest.js +280 -0
  26. package/dist/nodes/Linear/test/workflow/apiRequest.js.map +1 -0
  27. package/dist/nodes/Linear/test/workflow/apiResponses.js +198 -0
  28. package/dist/nodes/Linear/test/workflow/apiResponses.js.map +1 -0
  29. package/dist/nodes/Postgres/transport/index.js +55 -60
  30. package/dist/nodes/Postgres/transport/index.js.map +1 -1
  31. package/dist/types/nodes.json +4 -4
  32. package/dist/utils/connection-pool-manager.js +42 -30
  33. package/dist/utils/connection-pool-manager.js.map +1 -1
  34. package/package.json +5 -5
@@ -22,6 +22,7 @@ __export(connection_pool_manager_exports, {
22
22
  });
23
23
  module.exports = __toCommonJS(connection_pool_manager_exports);
24
24
  var import_crypto = require("crypto");
25
+ var import_n8n_workflow = require("n8n-workflow");
25
26
  let instance;
26
27
  const ttl = 5 * 60 * 1e3;
27
28
  const cleanUpInterval = 60 * 1e3;
@@ -30,18 +31,22 @@ class ConnectionPoolManager {
30
31
  * Private constructor that initializes the connection pool manager.
31
32
  * Sets up cleanup handlers for process exit and stale connections.
32
33
  */
33
- constructor() {
34
+ constructor(logger) {
35
+ this.logger = logger;
34
36
  this.map = /* @__PURE__ */ new Map();
35
- process.on("exit", () => this.onShutdown());
37
+ process.on("exit", () => {
38
+ this.logger.debug("ConnectionPoolManager: Shutting down. Cleaning up all pools");
39
+ this.purgeConnections();
40
+ });
36
41
  setInterval(() => this.cleanupStaleConnections(), cleanUpInterval);
37
42
  }
38
43
  /**
39
44
  * Gets the singleton instance of the ConnectionPoolManager.
40
45
  * Creates a new instance if one doesn't exist.
41
46
  */
42
- static getInstance() {
47
+ static getInstance(logger) {
43
48
  if (!instance) {
44
- instance = new ConnectionPoolManager();
49
+ instance = new ConnectionPoolManager(logger);
45
50
  }
46
51
  return instance;
47
52
  }
@@ -65,49 +70,56 @@ class ConnectionPoolManager {
65
70
  async getConnection(options) {
66
71
  const key = this.makeKey(options);
67
72
  let value = this.map.get(key);
68
- if (!value) {
69
- value = {
70
- pool: await options.fallBackHandler(),
71
- cleanUpHandler: options.cleanUpHandler
72
- };
73
+ if (value) {
74
+ value.lastUsed = Date.now();
75
+ value.wasUsed(value.pool);
76
+ return value.pool;
77
+ }
78
+ const abortController = new AbortController();
79
+ value = {
80
+ pool: await options.fallBackHandler(abortController),
81
+ abortController,
82
+ wasUsed: options.wasUsed
83
+ };
84
+ if (abortController.signal.aborted) {
85
+ throw new import_n8n_workflow.OperationalError("Could not create pool. Connection attempt was aborted.", {
86
+ cause: abortController.signal.reason
87
+ });
73
88
  }
74
89
  this.map.set(key, { ...value, lastUsed: Date.now() });
90
+ abortController.signal.addEventListener("abort", async () => {
91
+ this.logger.debug("ConnectionPoolManager: Got abort signal, cleaning up pool.");
92
+ this.cleanupConnection(key);
93
+ });
75
94
  return value.pool;
76
95
  }
96
+ cleanupConnection(key) {
97
+ const registration = this.map.get(key);
98
+ if (registration) {
99
+ this.map.delete(key);
100
+ registration.abortController.abort();
101
+ }
102
+ }
77
103
  /**
78
104
  * Removes and cleans up connection pools that haven't been used within the
79
105
  * TTL.
80
106
  */
81
107
  cleanupStaleConnections() {
82
108
  const now = Date.now();
83
- for (const [key, { cleanUpHandler, lastUsed, pool }] of this.map.entries()) {
109
+ for (const [key, { lastUsed }] of this.map.entries()) {
84
110
  if (now - lastUsed > ttl) {
85
- void cleanUpHandler(pool);
86
- this.map.delete(key);
111
+ this.logger.debug("ConnectionPoolManager: Found stale pool. Cleaning it up.");
112
+ void this.cleanupConnection(key);
87
113
  }
88
114
  }
89
115
  }
90
116
  /**
91
117
  * Removes and cleans up all existing connection pools.
118
+ * Connections are closed in the background.
92
119
  */
93
- async purgeConnections() {
94
- await Promise.all(
95
- [...this.map.entries()].map(async ([key, value]) => {
96
- this.map.delete(key);
97
- return await value.cleanUpHandler(value.pool);
98
- })
99
- );
100
- }
101
- /**
102
- * Cleans up all connection pools when the process is shutting down.
103
- * Does not wait for cleanup promises to resolve also does not remove the
104
- * references from the pool.
105
- *
106
- * Only call this on process shutdown.
107
- */
108
- onShutdown() {
109
- for (const { cleanUpHandler, pool } of this.map.values()) {
110
- void cleanUpHandler(pool);
120
+ purgeConnections() {
121
+ for (const key of this.map.keys()) {
122
+ this.cleanupConnection(key);
111
123
  }
112
124
  }
113
125
  }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../utils/connection-pool-manager.ts"],"sourcesContent":["import { createHash } from 'crypto';\n\nlet instance: ConnectionPoolManager;\n\n// 5 minutes\nconst ttl = 5 * 60 * 1000;\n\n// 1 minute\nconst cleanUpInterval = 60 * 1000;\n\ntype RegistrationOptions = {\n\tcredentials: unknown;\n\tnodeType: string;\n\tnodeVersion?: string;\n};\n\ntype GetConnectionOption<Pool> = RegistrationOptions & {\n\t/** When a node requests for a connection pool, but none is available, this handler is called to create new instance of the pool, which then cached and re-used until it goes stale. */\n\tfallBackHandler: () => Promise<Pool>;\n\n\t/** When a pool hasn't been used in a while, or when the server is shutting down, this handler is invoked to close the pool */\n\tcleanUpHandler: (pool: Pool) => Promise<void>;\n};\n\ntype Registration<Pool> = {\n\t/** This is an instance of a Connection Pool class, that gets reused across multiple executions */\n\tpool: Pool;\n\n\t/** @see GetConnectionOption['closeHandler'] */\n\tcleanUpHandler: (pool: Pool) => Promise<void>;\n\n\t/** We keep this timestamp to check if a pool hasn't been used in a while, and if it needs to be closed */\n\tlastUsed: number;\n};\n\nexport class ConnectionPoolManager {\n\t/**\n\t * Gets the singleton instance of the ConnectionPoolManager.\n\t * Creates a new instance if one doesn't exist.\n\t */\n\tstatic getInstance(): ConnectionPoolManager {\n\t\tif (!instance) {\n\t\t\tinstance = new ConnectionPoolManager();\n\t\t}\n\t\treturn instance;\n\t}\n\n\tprivate map = new Map<string, Registration<unknown>>();\n\n\t/**\n\t * Private constructor that initializes the connection pool manager.\n\t * Sets up cleanup handlers for process exit and stale connections.\n\t */\n\tprivate constructor() {\n\t\t// Close all open pools when the process exits\n\t\tprocess.on('exit', () => this.onShutdown());\n\n\t\t// Regularly close stale pools\n\t\tsetInterval(() => this.cleanupStaleConnections(), cleanUpInterval);\n\t}\n\n\t/**\n\t * Generates a unique key for connection pool identification.\n\t * Hashes the credentials and node information for security.\n\t */\n\tprivate makeKey({ credentials, nodeType, nodeVersion }: RegistrationOptions): string {\n\t\t// The credential contains decrypted secrets, that's why we hash it.\n\t\treturn createHash('sha1')\n\t\t\t.update(\n\t\t\t\tJSON.stringify({\n\t\t\t\t\tcredentials,\n\t\t\t\t\tnodeType,\n\t\t\t\t\tnodeVersion,\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.digest('base64');\n\t}\n\n\t/**\n\t * Gets or creates a connection pool for the given options.\n\t * Updates the last used timestamp for existing connections.\n\t */\n\tasync getConnection<T>(options: GetConnectionOption<T>): Promise<T> {\n\t\tconst key = this.makeKey(options);\n\n\t\tlet value = this.map.get(key);\n\t\tif (!value) {\n\t\t\tvalue = {\n\t\t\t\tpool: await options.fallBackHandler(),\n\t\t\t\tcleanUpHandler: options.cleanUpHandler,\n\t\t\t} as Registration<unknown>;\n\t\t}\n\n\t\tthis.map.set(key, { ...value, lastUsed: Date.now() });\n\t\treturn value.pool as T;\n\t}\n\n\t/**\n\t * Removes and cleans up connection pools that haven't been used within the\n\t * TTL.\n\t */\n\tprivate cleanupStaleConnections() {\n\t\tconst now = Date.now();\n\t\tfor (const [key, { cleanUpHandler, lastUsed, pool }] of this.map.entries()) {\n\t\t\tif (now - lastUsed > ttl) {\n\t\t\t\tvoid cleanUpHandler(pool);\n\t\t\t\tthis.map.delete(key);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Removes and cleans up all existing connection pools.\n\t */\n\tasync purgeConnections(): Promise<void> {\n\t\tawait Promise.all(\n\t\t\t[...this.map.entries()].map(async ([key, value]) => {\n\t\t\t\tthis.map.delete(key);\n\n\t\t\t\treturn await value.cleanUpHandler(value.pool);\n\t\t\t}),\n\t\t);\n\t}\n\n\t/**\n\t * Cleans up all connection pools when the process is shutting down.\n\t * Does not wait for cleanup promises to resolve also does not remove the\n\t * references from the pool.\n\t *\n\t * Only call this on process shutdown.\n\t */\n\tonShutdown() {\n\t\tfor (const { cleanUpHandler, pool } of this.map.values()) {\n\t\t\tvoid cleanUpHandler(pool);\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAE3B,IAAI;AAGJ,MAAM,MAAM,IAAI,KAAK;AAGrB,MAAM,kBAAkB,KAAK;AA2BtB,MAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA,EAkB1B,cAAc;AANtB,SAAQ,MAAM,oBAAI,IAAmC;AAQpD,YAAQ,GAAG,QAAQ,MAAM,KAAK,WAAW,CAAC;AAG1C,gBAAY,MAAM,KAAK,wBAAwB,GAAG,eAAe;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA,EAnBA,OAAO,cAAqC;AAC3C,QAAI,CAAC,UAAU;AACd,iBAAW,IAAI,sBAAsB;AAAA,IACtC;AACA,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA,EAoBQ,QAAQ,EAAE,aAAa,UAAU,YAAY,GAAgC;AAEpF,eAAO,0BAAW,MAAM,EACtB;AAAA,MACA,KAAK,UAAU;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAAA,IACF,EACC,OAAO,QAAQ;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAiB,SAA6C;AACnE,UAAM,MAAM,KAAK,QAAQ,OAAO;AAEhC,QAAI,QAAQ,KAAK,IAAI,IAAI,GAAG;AAC5B,QAAI,CAAC,OAAO;AACX,cAAQ;AAAA,QACP,MAAM,MAAM,QAAQ,gBAAgB;AAAA,QACpC,gBAAgB,QAAQ;AAAA,MACzB;AAAA,IACD;AAEA,SAAK,IAAI,IAAI,KAAK,EAAE,GAAG,OAAO,UAAU,KAAK,IAAI,EAAE,CAAC;AACpD,WAAO,MAAM;AAAA,EACd;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,0BAA0B;AACjC,UAAM,MAAM,KAAK,IAAI;AACrB,eAAW,CAAC,KAAK,EAAE,gBAAgB,UAAU,KAAK,CAAC,KAAK,KAAK,IAAI,QAAQ,GAAG;AAC3E,UAAI,MAAM,WAAW,KAAK;AACzB,aAAK,eAAe,IAAI;AACxB,aAAK,IAAI,OAAO,GAAG;AAAA,MACpB;AAAA,IACD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAM,mBAAkC;AACvC,UAAM,QAAQ;AAAA,MACb,CAAC,GAAG,KAAK,IAAI,QAAQ,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,KAAK,MAAM;AACnD,aAAK,IAAI,OAAO,GAAG;AAEnB,eAAO,MAAM,MAAM,eAAe,MAAM,IAAI;AAAA,MAC7C,CAAC;AAAA,IACF;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EASA,aAAa;AACZ,eAAW,EAAE,gBAAgB,KAAK,KAAK,KAAK,IAAI,OAAO,GAAG;AACzD,WAAK,eAAe,IAAI;AAAA,IACzB;AAAA,EACD;AACD;","names":[]}
1
+ {"version":3,"sources":["../../utils/connection-pool-manager.ts"],"sourcesContent":["import { createHash } from 'crypto';\nimport { OperationalError, type Logger } from 'n8n-workflow';\n\nlet instance: ConnectionPoolManager;\n\n// 5 minutes\nconst ttl = 5 * 60 * 1000;\n\n// 1 minute\nconst cleanUpInterval = 60 * 1000;\n\ntype RegistrationOptions = {\n\tcredentials: unknown;\n\tnodeType: string;\n\tnodeVersion?: string;\n};\n\ntype GetConnectionOption<Pool> = RegistrationOptions & {\n\t/**\n\t * When a node requests for a connection pool, but none is available, this\n\t * handler is called to create new instance of the pool, which is then cached\n\t * and re-used until it goes stale.\n\t */\n\tfallBackHandler: (abortController: AbortController) => Promise<Pool>;\n\n\twasUsed: (pool: Pool) => void;\n};\n\ntype Registration<Pool> = {\n\t/** This is an instance of a Connection Pool class, that gets reused across multiple executions */\n\tpool: Pool;\n\n\tabortController: AbortController;\n\n\twasUsed: (pool: Pool) => void;\n\n\t/** We keep this timestamp to check if a pool hasn't been used in a while, and if it needs to be closed */\n\tlastUsed: number;\n};\n\nexport class ConnectionPoolManager {\n\t/**\n\t * Gets the singleton instance of the ConnectionPoolManager.\n\t * Creates a new instance if one doesn't exist.\n\t */\n\tstatic getInstance(logger: Logger): ConnectionPoolManager {\n\t\tif (!instance) {\n\t\t\tinstance = new ConnectionPoolManager(logger);\n\t\t}\n\t\treturn instance;\n\t}\n\n\tprivate map = new Map<string, Registration<unknown>>();\n\n\t/**\n\t * Private constructor that initializes the connection pool manager.\n\t * Sets up cleanup handlers for process exit and stale connections.\n\t */\n\tprivate constructor(private readonly logger: Logger) {\n\t\t// Close all open pools when the process exits\n\t\tprocess.on('exit', () => {\n\t\t\tthis.logger.debug('ConnectionPoolManager: Shutting down. Cleaning up all pools');\n\t\t\tthis.purgeConnections();\n\t\t});\n\n\t\t// Regularly close stale pools\n\t\tsetInterval(() => this.cleanupStaleConnections(), cleanUpInterval);\n\t}\n\n\t/**\n\t * Generates a unique key for connection pool identification.\n\t * Hashes the credentials and node information for security.\n\t */\n\tprivate makeKey({ credentials, nodeType, nodeVersion }: RegistrationOptions): string {\n\t\t// The credential contains decrypted secrets, that's why we hash it.\n\t\treturn createHash('sha1')\n\t\t\t.update(\n\t\t\t\tJSON.stringify({\n\t\t\t\t\tcredentials,\n\t\t\t\t\tnodeType,\n\t\t\t\t\tnodeVersion,\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.digest('base64');\n\t}\n\n\t/**\n\t * Gets or creates a connection pool for the given options.\n\t * Updates the last used timestamp for existing connections.\n\t */\n\tasync getConnection<T>(options: GetConnectionOption<T>): Promise<T> {\n\t\tconst key = this.makeKey(options);\n\n\t\tlet value = this.map.get(key);\n\n\t\tif (value) {\n\t\t\tvalue.lastUsed = Date.now();\n\t\t\tvalue.wasUsed(value.pool);\n\t\t\treturn value.pool as T;\n\t\t}\n\n\t\tconst abortController = new AbortController();\n\t\tvalue = {\n\t\t\tpool: await options.fallBackHandler(abortController),\n\t\t\tabortController,\n\t\t\twasUsed: options.wasUsed,\n\t\t} as Registration<unknown>;\n\n\t\t// It's possible that `options.fallBackHandler` already called the abort\n\t\t// function. If that's the case let's not continue.\n\t\tif (abortController.signal.aborted) {\n\t\t\tthrow new OperationalError('Could not create pool. Connection attempt was aborted.', {\n\t\t\t\tcause: abortController.signal.reason,\n\t\t\t});\n\t\t}\n\n\t\tthis.map.set(key, { ...value, lastUsed: Date.now() });\n\t\tabortController.signal.addEventListener('abort', async () => {\n\t\t\tthis.logger.debug('ConnectionPoolManager: Got abort signal, cleaning up pool.');\n\t\t\tthis.cleanupConnection(key);\n\t\t});\n\n\t\treturn value.pool as T;\n\t}\n\n\tprivate cleanupConnection(key: string) {\n\t\tconst registration = this.map.get(key);\n\n\t\tif (registration) {\n\t\t\tthis.map.delete(key);\n\t\t\tregistration.abortController.abort();\n\t\t}\n\t}\n\n\t/**\n\t * Removes and cleans up connection pools that haven't been used within the\n\t * TTL.\n\t */\n\tprivate cleanupStaleConnections() {\n\t\tconst now = Date.now();\n\t\tfor (const [key, { lastUsed }] of this.map.entries()) {\n\t\t\tif (now - lastUsed > ttl) {\n\t\t\t\tthis.logger.debug('ConnectionPoolManager: Found stale pool. Cleaning it up.');\n\t\t\t\tvoid this.cleanupConnection(key);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Removes and cleans up all existing connection pools.\n\t * Connections are closed in the background.\n\t */\n\tpurgeConnections(): void {\n\t\tfor (const key of this.map.keys()) {\n\t\t\tthis.cleanupConnection(key);\n\t\t}\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,oBAA2B;AAC3B,0BAA8C;AAE9C,IAAI;AAGJ,MAAM,MAAM,IAAI,KAAK;AAGrB,MAAM,kBAAkB,KAAK;AA+BtB,MAAM,sBAAsB;AAAA;AAAA;AAAA;AAAA;AAAA,EAkB1B,YAA6B,QAAgB;AAAhB;AANrC,SAAQ,MAAM,oBAAI,IAAmC;AAQpD,YAAQ,GAAG,QAAQ,MAAM;AACxB,WAAK,OAAO,MAAM,6DAA6D;AAC/E,WAAK,iBAAiB;AAAA,IACvB,CAAC;AAGD,gBAAY,MAAM,KAAK,wBAAwB,GAAG,eAAe;AAAA,EAClE;AAAA;AAAA;AAAA;AAAA;AAAA,EAtBA,OAAO,YAAY,QAAuC;AACzD,QAAI,CAAC,UAAU;AACd,iBAAW,IAAI,sBAAsB,MAAM;AAAA,IAC5C;AACA,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA,EAuBQ,QAAQ,EAAE,aAAa,UAAU,YAAY,GAAgC;AAEpF,eAAO,0BAAW,MAAM,EACtB;AAAA,MACA,KAAK,UAAU;AAAA,QACd;AAAA,QACA;AAAA,QACA;AAAA,MACD,CAAC;AAAA,IACF,EACC,OAAO,QAAQ;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,MAAM,cAAiB,SAA6C;AACnE,UAAM,MAAM,KAAK,QAAQ,OAAO;AAEhC,QAAI,QAAQ,KAAK,IAAI,IAAI,GAAG;AAE5B,QAAI,OAAO;AACV,YAAM,WAAW,KAAK,IAAI;AAC1B,YAAM,QAAQ,MAAM,IAAI;AACxB,aAAO,MAAM;AAAA,IACd;AAEA,UAAM,kBAAkB,IAAI,gBAAgB;AAC5C,YAAQ;AAAA,MACP,MAAM,MAAM,QAAQ,gBAAgB,eAAe;AAAA,MACnD;AAAA,MACA,SAAS,QAAQ;AAAA,IAClB;AAIA,QAAI,gBAAgB,OAAO,SAAS;AACnC,YAAM,IAAI,qCAAiB,0DAA0D;AAAA,QACpF,OAAO,gBAAgB,OAAO;AAAA,MAC/B,CAAC;AAAA,IACF;AAEA,SAAK,IAAI,IAAI,KAAK,EAAE,GAAG,OAAO,UAAU,KAAK,IAAI,EAAE,CAAC;AACpD,oBAAgB,OAAO,iBAAiB,SAAS,YAAY;AAC5D,WAAK,OAAO,MAAM,4DAA4D;AAC9E,WAAK,kBAAkB,GAAG;AAAA,IAC3B,CAAC;AAED,WAAO,MAAM;AAAA,EACd;AAAA,EAEQ,kBAAkB,KAAa;AACtC,UAAM,eAAe,KAAK,IAAI,IAAI,GAAG;AAErC,QAAI,cAAc;AACjB,WAAK,IAAI,OAAO,GAAG;AACnB,mBAAa,gBAAgB,MAAM;AAAA,IACpC;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMQ,0BAA0B;AACjC,UAAM,MAAM,KAAK,IAAI;AACrB,eAAW,CAAC,KAAK,EAAE,SAAS,CAAC,KAAK,KAAK,IAAI,QAAQ,GAAG;AACrD,UAAI,MAAM,WAAW,KAAK;AACzB,aAAK,OAAO,MAAM,0DAA0D;AAC5E,aAAK,KAAK,kBAAkB,GAAG;AAAA,MAChC;AAAA,IACD;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA,EAMA,mBAAyB;AACxB,eAAW,OAAO,KAAK,IAAI,KAAK,GAAG;AAClC,WAAK,kBAAkB,GAAG;AAAA,IAC3B;AAAA,EACD;AACD;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-base",
3
- "version": "1.96.0",
3
+ "version": "1.97.0",
4
4
  "description": "Base nodes of n8n",
5
5
  "main": "index.js",
6
6
  "files": [
@@ -861,7 +861,7 @@
861
861
  "@types/xml2js": "^0.4.14",
862
862
  "eslint-plugin-n8n-nodes-base": "^1.16.3",
863
863
  "@n8n/typescript-config": "1.2.0",
864
- "n8n-core": "1.97.0"
864
+ "n8n-core": "1.98.0"
865
865
  },
866
866
  "dependencies": {
867
867
  "@aws-sdk/client-sso-oidc": "3.808.0",
@@ -930,10 +930,10 @@
930
930
  "xlsx": "https://cdn.sheetjs.com/xlsx-0.20.2/xlsx-0.20.2.tgz",
931
931
  "xml2js": "0.6.2",
932
932
  "xmlhttprequest-ssl": "3.1.0",
933
+ "@n8n/config": "1.43.0",
933
934
  "@n8n/di": "0.6.0",
934
- "@n8n/config": "1.42.0",
935
- "n8n-workflow": "1.95.0",
936
- "@n8n/imap": "0.10.0"
935
+ "@n8n/imap": "0.10.0",
936
+ "n8n-workflow": "1.96.0"
937
937
  },
938
938
  "license": "SEE LICENSE IN LICENSE.md",
939
939
  "homepage": "https://n8n.io",