@limetech/n8n-nodes-lime 2.3.1-dev.1 → 2.5.0-dev.2

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 (287) hide show
  1. package/.github/workflows/lint.yml +1 -1
  2. package/.github/workflows/release.yml +16 -2
  3. package/.github/workflows/test-and-build.yml +0 -15
  4. package/.releaserc.json +1 -0
  5. package/CHANGELOG.md +42 -2
  6. package/dist/credentials/FortnoxApi.credentials.d.ts +9 -0
  7. package/dist/credentials/FortnoxApi.credentials.js +57 -0
  8. package/dist/credentials/FortnoxApi.credentials.js.map +1 -0
  9. package/dist/credentials/LimeCrmApi.credentials.d.ts +9 -0
  10. package/dist/credentials/LimeCrmApi.credentials.js +70 -0
  11. package/dist/credentials/LimeCrmApi.credentials.js.map +1 -0
  12. package/dist/credentials/index.d.ts +2 -0
  13. package/dist/credentials/index.js +19 -0
  14. package/dist/credentials/index.js.map +1 -0
  15. package/dist/nodes/errorHandling.d.ts +11 -0
  16. package/dist/nodes/errorHandling.js +20 -0
  17. package/dist/nodes/errorHandling.js.map +1 -0
  18. package/dist/nodes/fortnox/Fortnox.node.d.ts +5 -0
  19. package/dist/nodes/fortnox/Fortnox.node.js +95 -0
  20. package/dist/nodes/fortnox/Fortnox.node.js.map +1 -0
  21. package/dist/nodes/fortnox/Fortnox.node.json +18 -0
  22. package/dist/nodes/fortnox/FortnoxTrigger.node.d.ts +5 -0
  23. package/dist/nodes/fortnox/FortnoxTrigger.node.js +155 -0
  24. package/dist/nodes/fortnox/FortnoxTrigger.node.js.map +1 -0
  25. package/dist/nodes/fortnox/FortnoxTrigger.node.json +18 -0
  26. package/dist/nodes/fortnox/commons.d.ts +25 -0
  27. package/dist/nodes/fortnox/commons.js +44 -0
  28. package/dist/nodes/fortnox/commons.js.map +1 -0
  29. package/dist/nodes/fortnox/fortnoxLogo.svg +15 -0
  30. package/dist/nodes/fortnox/index.d.ts +6 -0
  31. package/dist/nodes/fortnox/index.js +23 -0
  32. package/dist/nodes/fortnox/index.js.map +1 -0
  33. package/dist/nodes/fortnox/model.d.ts +20 -0
  34. package/dist/nodes/fortnox/model.js +3 -0
  35. package/dist/nodes/fortnox/model.js.map +1 -0
  36. package/dist/nodes/fortnox/resources/customers/filterParameters.d.ts +2 -0
  37. package/dist/nodes/fortnox/resources/customers/filterParameters.js +31 -0
  38. package/dist/nodes/fortnox/resources/customers/filterParameters.js.map +1 -0
  39. package/dist/nodes/fortnox/resources/customers/index.d.ts +7 -0
  40. package/dist/nodes/fortnox/resources/customers/index.js +85 -0
  41. package/dist/nodes/fortnox/resources/customers/index.js.map +1 -0
  42. package/dist/nodes/fortnox/resources/customers/model.d.ts +99 -0
  43. package/dist/nodes/fortnox/resources/customers/model.js +3 -0
  44. package/dist/nodes/fortnox/resources/customers/model.js.map +1 -0
  45. package/dist/nodes/fortnox/resources/customers/operations/create.operation.d.ts +10 -0
  46. package/dist/nodes/fortnox/resources/customers/operations/create.operation.js +281 -0
  47. package/dist/nodes/fortnox/resources/customers/operations/create.operation.js.map +1 -0
  48. package/dist/nodes/fortnox/resources/customers/operations/delete.operation.d.ts +9 -0
  49. package/dist/nodes/fortnox/resources/customers/operations/delete.operation.js +38 -0
  50. package/dist/nodes/fortnox/resources/customers/operations/delete.operation.js.map +1 -0
  51. package/dist/nodes/fortnox/resources/customers/operations/get.operation.d.ts +10 -0
  52. package/dist/nodes/fortnox/resources/customers/operations/get.operation.js +38 -0
  53. package/dist/nodes/fortnox/resources/customers/operations/get.operation.js.map +1 -0
  54. package/dist/nodes/fortnox/resources/customers/operations/getAll.operation.d.ts +10 -0
  55. package/dist/nodes/fortnox/resources/customers/operations/getAll.operation.js +68 -0
  56. package/dist/nodes/fortnox/resources/customers/operations/getAll.operation.js.map +1 -0
  57. package/dist/nodes/fortnox/resources/customers/operations/index.d.ts +5 -0
  58. package/dist/nodes/fortnox/resources/customers/operations/index.js +42 -0
  59. package/dist/nodes/fortnox/resources/customers/operations/index.js.map +1 -0
  60. package/dist/nodes/fortnox/resources/customers/operations/update.operation.d.ts +10 -0
  61. package/dist/nodes/fortnox/resources/customers/operations/update.operation.js +261 -0
  62. package/dist/nodes/fortnox/resources/customers/operations/update.operation.js.map +1 -0
  63. package/dist/nodes/fortnox/resources/customers/sortParameters.d.ts +2 -0
  64. package/dist/nodes/fortnox/resources/customers/sortParameters.js +30 -0
  65. package/dist/nodes/fortnox/resources/customers/sortParameters.js.map +1 -0
  66. package/dist/nodes/fortnox/resources/invoice/filterParameters.d.ts +2 -0
  67. package/dist/nodes/fortnox/resources/invoice/filterParameters.js +72 -0
  68. package/dist/nodes/fortnox/resources/invoice/filterParameters.js.map +1 -0
  69. package/dist/nodes/fortnox/resources/invoice/index.d.ts +7 -0
  70. package/dist/nodes/fortnox/resources/invoice/index.js +81 -0
  71. package/dist/nodes/fortnox/resources/invoice/index.js.map +1 -0
  72. package/dist/nodes/fortnox/resources/invoice/invoiceParameters.d.ts +2 -0
  73. package/dist/nodes/fortnox/resources/invoice/invoiceParameters.js +193 -0
  74. package/dist/nodes/fortnox/resources/invoice/invoiceParameters.js.map +1 -0
  75. package/dist/nodes/fortnox/resources/invoice/model.d.ts +147 -0
  76. package/dist/nodes/fortnox/resources/invoice/model.js +3 -0
  77. package/dist/nodes/fortnox/resources/invoice/model.js.map +1 -0
  78. package/dist/nodes/fortnox/resources/invoice/operations/create.operation.d.ts +10 -0
  79. package/dist/nodes/fortnox/resources/invoice/operations/create.operation.js +64 -0
  80. package/dist/nodes/fortnox/resources/invoice/operations/create.operation.js.map +1 -0
  81. package/dist/nodes/fortnox/resources/invoice/operations/get.operation.d.ts +10 -0
  82. package/dist/nodes/fortnox/resources/invoice/operations/get.operation.js +37 -0
  83. package/dist/nodes/fortnox/resources/invoice/operations/get.operation.js.map +1 -0
  84. package/dist/nodes/fortnox/resources/invoice/operations/getAll.operation.d.ts +10 -0
  85. package/dist/nodes/fortnox/resources/invoice/operations/getAll.operation.js +92 -0
  86. package/dist/nodes/fortnox/resources/invoice/operations/getAll.operation.js.map +1 -0
  87. package/dist/nodes/fortnox/resources/invoice/operations/index.d.ts +4 -0
  88. package/dist/nodes/fortnox/resources/invoice/operations/index.js +41 -0
  89. package/dist/nodes/fortnox/resources/invoice/operations/index.js.map +1 -0
  90. package/dist/nodes/fortnox/resources/invoice/operations/update.operation.d.ts +10 -0
  91. package/dist/nodes/fortnox/resources/invoice/operations/update.operation.js +64 -0
  92. package/dist/nodes/fortnox/resources/invoice/operations/update.operation.js.map +1 -0
  93. package/dist/nodes/fortnox/transport/errorCodes.d.ts +1 -0
  94. package/dist/nodes/fortnox/transport/errorCodes.js +50 -0
  95. package/dist/nodes/fortnox/transport/errorCodes.js.map +1 -0
  96. package/dist/nodes/fortnox/transport/index.d.ts +3 -0
  97. package/dist/nodes/fortnox/transport/index.js +76 -0
  98. package/dist/nodes/fortnox/transport/index.js.map +1 -0
  99. package/dist/nodes/index.d.ts +4 -0
  100. package/dist/nodes/index.js +21 -0
  101. package/dist/nodes/index.js.map +1 -0
  102. package/dist/nodes/lime-crm/LimeCrm.node.json +18 -0
  103. package/dist/nodes/lime-crm/LimeCrmNode.node.d.ts +19 -0
  104. package/dist/nodes/lime-crm/LimeCrmNode.node.js +122 -0
  105. package/dist/nodes/lime-crm/LimeCrmNode.node.js.map +1 -0
  106. package/dist/nodes/lime-crm/LimeCrmTrigger.node.d.ts +18 -0
  107. package/dist/nodes/lime-crm/LimeCrmTrigger.node.js +215 -0
  108. package/dist/nodes/lime-crm/LimeCrmTrigger.node.js.map +1 -0
  109. package/dist/nodes/lime-crm/assets/lime-crm.svg +1 -0
  110. package/dist/nodes/lime-crm/index.d.ts +9 -0
  111. package/dist/nodes/lime-crm/index.js +26 -0
  112. package/dist/nodes/lime-crm/index.js.map +1 -0
  113. package/dist/nodes/lime-crm/methods/getLimetypeProperties.d.ts +5 -0
  114. package/dist/nodes/lime-crm/methods/getLimetypeProperties.js +47 -0
  115. package/dist/nodes/lime-crm/methods/getLimetypeProperties.js.map +1 -0
  116. package/dist/nodes/lime-crm/methods/getLimetypes.d.ts +2 -0
  117. package/dist/nodes/lime-crm/methods/getLimetypes.js +20 -0
  118. package/dist/nodes/lime-crm/methods/getLimetypes.js.map +1 -0
  119. package/dist/nodes/lime-crm/methods/index.d.ts +3 -0
  120. package/dist/nodes/lime-crm/methods/index.js +15 -0
  121. package/dist/nodes/lime-crm/methods/index.js.map +1 -0
  122. package/dist/nodes/lime-crm/methods/resourceMapping.d.ts +4 -0
  123. package/dist/nodes/lime-crm/methods/resourceMapping.js +71 -0
  124. package/dist/nodes/lime-crm/methods/resourceMapping.js.map +1 -0
  125. package/dist/nodes/lime-crm/models/constants.d.ts +9 -0
  126. package/dist/nodes/lime-crm/models/constants.js +10 -0
  127. package/dist/nodes/lime-crm/models/constants.js.map +1 -0
  128. package/dist/nodes/lime-crm/models/index.d.ts +6 -0
  129. package/dist/nodes/lime-crm/models/index.js +13 -0
  130. package/dist/nodes/lime-crm/models/index.js.map +1 -0
  131. package/dist/nodes/lime-crm/models/limeobject.d.ts +4 -0
  132. package/dist/nodes/lime-crm/models/limeobject.js +3 -0
  133. package/dist/nodes/lime-crm/models/limeobject.js.map +1 -0
  134. package/dist/nodes/lime-crm/models/limetype.d.ts +24 -0
  135. package/dist/nodes/lime-crm/models/limetype.js +3 -0
  136. package/dist/nodes/lime-crm/models/limetype.js.map +1 -0
  137. package/dist/nodes/lime-crm/models/propertyTypes.d.ts +4 -0
  138. package/dist/nodes/lime-crm/models/propertyTypes.js +5 -0
  139. package/dist/nodes/lime-crm/models/propertyTypes.js.map +1 -0
  140. package/dist/nodes/lime-crm/models/users.d.ts +13 -0
  141. package/dist/nodes/lime-crm/models/users.js +3 -0
  142. package/dist/nodes/lime-crm/models/users.js.map +1 -0
  143. package/dist/nodes/lime-crm/models/webhook.d.ts +18 -0
  144. package/dist/nodes/lime-crm/models/webhook.js +3 -0
  145. package/dist/nodes/lime-crm/models/webhook.js.map +1 -0
  146. package/dist/nodes/lime-crm/resources/admin/index.d.ts +7 -0
  147. package/dist/nodes/lime-crm/resources/admin/index.js +89 -0
  148. package/dist/nodes/lime-crm/resources/admin/index.js.map +1 -0
  149. package/dist/nodes/lime-crm/resources/admin/operations/getManyUsers.operation.d.ts +11 -0
  150. package/dist/nodes/lime-crm/resources/admin/operations/getManyUsers.operation.js +123 -0
  151. package/dist/nodes/lime-crm/resources/admin/operations/getManyUsers.operation.js.map +1 -0
  152. package/dist/nodes/lime-crm/resources/admin/operations/getSingleUser.operation.d.ts +11 -0
  153. package/dist/nodes/lime-crm/resources/admin/operations/getSingleUser.operation.js +87 -0
  154. package/dist/nodes/lime-crm/resources/admin/operations/getSingleUser.operation.js.map +1 -0
  155. package/dist/nodes/lime-crm/resources/admin/operations/index.d.ts +2 -0
  156. package/dist/nodes/lime-crm/resources/admin/operations/index.js +39 -0
  157. package/dist/nodes/lime-crm/resources/admin/operations/index.js.map +1 -0
  158. package/dist/nodes/lime-crm/resources/data/index.d.ts +7 -0
  159. package/dist/nodes/lime-crm/resources/data/index.js +108 -0
  160. package/dist/nodes/lime-crm/resources/data/index.js.map +1 -0
  161. package/dist/nodes/lime-crm/resources/data/operations/createSingleObject.operation.d.ts +11 -0
  162. package/dist/nodes/lime-crm/resources/data/operations/createSingleObject.operation.js +124 -0
  163. package/dist/nodes/lime-crm/resources/data/operations/createSingleObject.operation.js.map +1 -0
  164. package/dist/nodes/lime-crm/resources/data/operations/deleteSingleObject.operation.d.ts +10 -0
  165. package/dist/nodes/lime-crm/resources/data/operations/deleteSingleObject.operation.js +52 -0
  166. package/dist/nodes/lime-crm/resources/data/operations/deleteSingleObject.operation.js.map +1 -0
  167. package/dist/nodes/lime-crm/resources/data/operations/getManyObjects.operation.d.ts +11 -0
  168. package/dist/nodes/lime-crm/resources/data/operations/getManyObjects.operation.js +299 -0
  169. package/dist/nodes/lime-crm/resources/data/operations/getManyObjects.operation.js.map +1 -0
  170. package/dist/nodes/lime-crm/resources/data/operations/getSingleFile.operation.d.ts +9 -0
  171. package/dist/nodes/lime-crm/resources/data/operations/getSingleFile.operation.js +125 -0
  172. package/dist/nodes/lime-crm/resources/data/operations/getSingleFile.operation.js.map +1 -0
  173. package/dist/nodes/lime-crm/resources/data/operations/getSingleObject.operation.d.ts +11 -0
  174. package/dist/nodes/lime-crm/resources/data/operations/getSingleObject.operation.js +79 -0
  175. package/dist/nodes/lime-crm/resources/data/operations/getSingleObject.operation.js.map +1 -0
  176. package/dist/nodes/lime-crm/resources/data/operations/index.d.ts +6 -0
  177. package/dist/nodes/lime-crm/resources/data/operations/index.js +43 -0
  178. package/dist/nodes/lime-crm/resources/data/operations/index.js.map +1 -0
  179. package/dist/nodes/lime-crm/resources/data/operations/updateSingleObject.operation.d.ts +11 -0
  180. package/dist/nodes/lime-crm/resources/data/operations/updateSingleObject.operation.js +146 -0
  181. package/dist/nodes/lime-crm/resources/data/operations/updateSingleObject.operation.js.map +1 -0
  182. package/dist/nodes/lime-crm/resources/metadata/index.d.ts +7 -0
  183. package/dist/nodes/lime-crm/resources/metadata/index.js +93 -0
  184. package/dist/nodes/lime-crm/resources/metadata/index.js.map +1 -0
  185. package/dist/nodes/lime-crm/resources/metadata/operations/getAllLimetypes.operation.d.ts +10 -0
  186. package/dist/nodes/lime-crm/resources/metadata/operations/getAllLimetypes.operation.js +16 -0
  187. package/dist/nodes/lime-crm/resources/metadata/operations/getAllLimetypes.operation.js.map +1 -0
  188. package/dist/nodes/lime-crm/resources/metadata/operations/getSingleFileMetadata.operation.d.ts +11 -0
  189. package/dist/nodes/lime-crm/resources/metadata/operations/getSingleFileMetadata.operation.js +113 -0
  190. package/dist/nodes/lime-crm/resources/metadata/operations/getSingleFileMetadata.operation.js.map +1 -0
  191. package/dist/nodes/lime-crm/resources/metadata/operations/getSingleLimetype.operation.d.ts +11 -0
  192. package/dist/nodes/lime-crm/resources/metadata/operations/getSingleLimetype.operation.js +37 -0
  193. package/dist/nodes/lime-crm/resources/metadata/operations/getSingleLimetype.operation.js.map +1 -0
  194. package/dist/nodes/lime-crm/resources/metadata/operations/index.d.ts +3 -0
  195. package/dist/nodes/lime-crm/resources/metadata/operations/index.js +40 -0
  196. package/dist/nodes/lime-crm/resources/metadata/operations/index.js.map +1 -0
  197. package/dist/nodes/lime-crm/transport/commons.d.ts +14 -0
  198. package/dist/nodes/lime-crm/transport/commons.js +52 -0
  199. package/dist/nodes/lime-crm/transport/commons.js.map +1 -0
  200. package/dist/nodes/lime-crm/transport/files.d.ts +26 -0
  201. package/dist/nodes/lime-crm/transport/files.js +96 -0
  202. package/dist/nodes/lime-crm/transport/files.js.map +1 -0
  203. package/dist/nodes/lime-crm/transport/index.d.ts +7 -0
  204. package/dist/nodes/lime-crm/transport/index.js +32 -0
  205. package/dist/nodes/lime-crm/transport/index.js.map +1 -0
  206. package/dist/nodes/lime-crm/transport/limeQuery.d.ts +10 -0
  207. package/dist/nodes/lime-crm/transport/limeQuery.js +18 -0
  208. package/dist/nodes/lime-crm/transport/limeQuery.js.map +1 -0
  209. package/dist/nodes/lime-crm/transport/limeobjects.d.ts +16 -0
  210. package/dist/nodes/lime-crm/transport/limeobjects.js +76 -0
  211. package/dist/nodes/lime-crm/transport/limeobjects.js.map +1 -0
  212. package/dist/nodes/lime-crm/transport/limetypes.d.ts +33 -0
  213. package/dist/nodes/lime-crm/transport/limetypes.js +85 -0
  214. package/dist/nodes/lime-crm/transport/limetypes.js.map +1 -0
  215. package/dist/nodes/lime-crm/transport/users.d.ts +6 -0
  216. package/dist/nodes/lime-crm/transport/users.js +159 -0
  217. package/dist/nodes/lime-crm/transport/users.js.map +1 -0
  218. package/dist/nodes/lime-crm/transport/webhooks.d.ts +14 -0
  219. package/dist/nodes/lime-crm/transport/webhooks.js +51 -0
  220. package/dist/nodes/lime-crm/transport/webhooks.js.map +1 -0
  221. package/dist/nodes/lime-crm/utils/files.d.ts +8 -0
  222. package/dist/nodes/lime-crm/utils/files.js +103 -0
  223. package/dist/nodes/lime-crm/utils/files.js.map +1 -0
  224. package/dist/nodes/lime-crm/utils/hmac.d.ts +1 -0
  225. package/dist/nodes/lime-crm/utils/hmac.js +11 -0
  226. package/dist/nodes/lime-crm/utils/hmac.js.map +1 -0
  227. package/dist/nodes/lime-crm/utils/index.d.ts +4 -0
  228. package/dist/nodes/lime-crm/utils/index.js +16 -0
  229. package/dist/nodes/lime-crm/utils/index.js.map +1 -0
  230. package/dist/nodes/lime-crm/utils/webhook.d.ts +2 -0
  231. package/dist/nodes/lime-crm/utils/webhook.js +34 -0
  232. package/dist/nodes/lime-crm/utils/webhook.js.map +1 -0
  233. package/dist/nodes/modules.d.ts +12 -0
  234. package/dist/nodes/modules.js +16 -0
  235. package/dist/nodes/modules.js.map +1 -0
  236. package/dist/nodes/response.d.ts +18 -0
  237. package/dist/nodes/response.js +3 -0
  238. package/dist/nodes/response.js.map +1 -0
  239. package/dist/package.json +69 -0
  240. package/dist/tsconfig.tsbuildinfo +1 -0
  241. package/nodes/errorHandling.ts +60 -0
  242. package/nodes/lime-crm/LimeCrmNode.node.ts +8 -0
  243. package/nodes/lime-crm/LimeCrmTrigger.node.ts +19 -5
  244. package/nodes/lime-crm/methods/getLimetypeProperties.ts +3 -1
  245. package/nodes/lime-crm/methods/getLimetypes.ts +2 -1
  246. package/nodes/lime-crm/methods/index.ts +5 -0
  247. package/nodes/lime-crm/methods/resourceMapping.ts +141 -0
  248. package/nodes/lime-crm/models/limetype.ts +18 -0
  249. package/nodes/lime-crm/resources/admin/index.ts +9 -4
  250. package/nodes/lime-crm/resources/admin/operations/getManyUsers.operation.ts +10 -2
  251. package/nodes/lime-crm/resources/admin/operations/getSingleUser.operation.ts +14 -15
  252. package/nodes/lime-crm/resources/data/index.ts +15 -6
  253. package/nodes/lime-crm/resources/data/operations/createSingleObject.operation.ts +25 -71
  254. package/nodes/lime-crm/resources/data/operations/deleteSingleObject.operation.ts +7 -2
  255. package/nodes/lime-crm/resources/data/operations/getManyObjects.operation.ts +6 -2
  256. package/nodes/lime-crm/resources/data/operations/getSingleFile.operation.ts +15 -3
  257. package/nodes/lime-crm/resources/data/operations/getSingleObject.operation.ts +15 -6
  258. package/nodes/lime-crm/resources/data/operations/updateSingleObject.operation.ts +41 -57
  259. package/nodes/lime-crm/resources/metadata/index.ts +7 -3
  260. package/nodes/lime-crm/resources/metadata/operations/getAllLimetypes.operation.ts +6 -2
  261. package/nodes/lime-crm/resources/metadata/operations/getSingleFileMetadata.operation.ts +18 -15
  262. package/nodes/lime-crm/resources/metadata/operations/getSingleLimetype.operation.ts +8 -3
  263. package/nodes/lime-crm/transport/commons.ts +34 -20
  264. package/nodes/lime-crm/transport/files.ts +72 -47
  265. package/nodes/lime-crm/transport/limeQuery.ts +2 -2
  266. package/nodes/lime-crm/transport/limeobjects.ts +22 -10
  267. package/nodes/lime-crm/transport/limetypes.ts +37 -16
  268. package/nodes/lime-crm/transport/users.ts +74 -38
  269. package/nodes/lime-crm/transport/webhooks.ts +5 -4
  270. package/nodes/lime-crm/utils/files.ts +27 -10
  271. package/nodes/lime-crm/utils/index.ts +1 -1
  272. package/nodes/response.ts +41 -3
  273. package/package.json +4 -2
  274. package/tests/nodes/lime-crm/methods.spec.ts +91 -0
  275. package/tests/nodes/lime-crm/utils.spec.ts +60 -25
  276. package/nodes/lime-crm/utils/propertyAdapters.ts +0 -75
  277. package/restore_script/README +0 -42
  278. package/restore_script/api_key_upload.txt +0 -0
  279. package/restore_script/cli.py +0 -73
  280. package/restore_script/download.py +0 -73
  281. package/restore_script/main.py +0 -19
  282. package/restore_script/poetry.lock +0 -162
  283. package/restore_script/pyproject.toml +0 -15
  284. package/restore_script/transfer.py +0 -41
  285. package/restore_script/upload.py +0 -66
  286. package/restore_script/utils.py +0 -42
  287. /package/{restore_script/api_key_download.txt → Dockerfile} +0 -0
@@ -0,0 +1,141 @@
1
+ import {
2
+ FieldType,
3
+ ILoadOptionsFunctions,
4
+ ResourceMapperFields,
5
+ LoggerProxy as Logger,
6
+ IExecuteFunctions,
7
+ IDataObject,
8
+ ResourceMapperValue,
9
+ } from 'n8n-workflow';
10
+ import { getProperties } from '../transport';
11
+ import { LimetypeProperty } from '../models';
12
+
13
+ /**
14
+ * A map of Lime CRM field types to n8n native types
15
+ */
16
+ const LimeCrmTypeToFieldType = new Map(
17
+ Object.entries({
18
+ option: 'options',
19
+ yesno: 'boolean',
20
+ decimal: 'number',
21
+ number: 'number',
22
+ })
23
+ );
24
+
25
+ /**
26
+ * Function which maps Lime CRM to n8n types using the map above. If the type
27
+ * is not declared in a map, string is used.
28
+ * @param limeCrmType
29
+ * @returns n8n native {@link FieldType}
30
+ */
31
+ function mapLimeCrmType(limeCrmType: string): FieldType {
32
+ return (LimeCrmTypeToFieldType.get(limeCrmType) as FieldType) || 'string';
33
+ }
34
+
35
+ /**
36
+ * Get a `length` addition to the input headers when there's a string field
37
+ *
38
+ * @param property - a {@link LimetypeProperty}
39
+ * @returns a string with length wrapped in quotes or an empty string
40
+ */
41
+ function getPropertyLength(property: LimetypeProperty): string {
42
+ return property.type === 'string' ? `(${property.length})` : '';
43
+ }
44
+
45
+ /**
46
+ * Base function to get the description of ResourceMapper fields
47
+ * @param nodeContext
48
+ * @param mode - either `create` or `update` - based on this flag a `required`
49
+ * @param limetype - name of a limetype we are creating or updating
50
+ * property is set
51
+ */
52
+ async function getMappingColumns(
53
+ nodeContext: ILoadOptionsFunctions,
54
+ mode: 'create' | 'update',
55
+ limetype: string
56
+ ): Promise<ResourceMapperFields> {
57
+ const propertiesResponse = await getProperties(nodeContext, limetype);
58
+ if (!propertiesResponse.success) {
59
+ Logger.error(
60
+ `There was an error with fetching properties: ${JSON.stringify(propertiesResponse.data)}`
61
+ );
62
+ return {
63
+ fields: [],
64
+ };
65
+ }
66
+ const noRelationProperties = propertiesResponse.data.filter(
67
+ (property) => property.type !== 'hasmany'
68
+ );
69
+
70
+ const fields = noRelationProperties.map((property) => {
71
+ const propertyLengthDescription = getPropertyLength(property);
72
+ return {
73
+ id: property.name,
74
+ displayName: `${property.localname} [${property.type}${propertyLengthDescription}]`,
75
+ required: mode === 'create' ? property.required : false,
76
+ defaultMatch: false,
77
+ display: true,
78
+ type: mapLimeCrmType(property.type),
79
+ options:
80
+ property.type === 'option' && property.options
81
+ ? property.options
82
+ .filter((option) => !option.inactive)
83
+ .map((option) => {
84
+ return {
85
+ value: option.key,
86
+ name: option.text,
87
+ };
88
+ })
89
+ : undefined,
90
+ };
91
+ });
92
+ return {
93
+ fields: fields.sort((a, b) => {
94
+ if (a.required !== b.required) {
95
+ return a.required ? -1 : 1;
96
+ }
97
+ return a.displayName.localeCompare(b.displayName);
98
+ }),
99
+ };
100
+ }
101
+
102
+ /**
103
+ * Parse resource mapper fields from n8n workflow
104
+ * @param context - Node execution context
105
+ * @param i - The index of the current item in the workflow execution
106
+ * @param inputName - name of the resource mapper input
107
+ * @returns IDataObject - parsed data from resource mapper
108
+ */
109
+
110
+ export function parseResourceMapperFields(
111
+ context: IExecuteFunctions,
112
+ i: number,
113
+ inputName: string
114
+ ): IDataObject {
115
+ const propertiesInput = context.getNodeParameter(
116
+ inputName,
117
+ i
118
+ ) as ResourceMapperValue;
119
+
120
+ return propertiesInput.value as IDataObject;
121
+ }
122
+
123
+ /**
124
+ * Method for getting resource mapper fields in `create` mode
125
+ */
126
+ export async function getCreateMappingColumns(
127
+ this: ILoadOptionsFunctions
128
+ ): Promise<ResourceMapperFields> {
129
+ const limetype = this.getNodeParameter('limetype') as string;
130
+ return getMappingColumns(this, 'create', limetype);
131
+ }
132
+
133
+ /**
134
+ * Method for getting resource mapper fields in `update` mode
135
+ */
136
+ export async function getUpdateMappingColumns(
137
+ this: ILoadOptionsFunctions
138
+ ): Promise<ResourceMapperFields> {
139
+ const limetype = this.getNodeParameter('limetype') as string;
140
+ return getMappingColumns(this, 'update', limetype);
141
+ }
@@ -1,11 +1,26 @@
1
1
  import { APIResponseValue } from './constants';
2
2
 
3
+ /**
4
+ * Limetype option used only for fields with `option` type.
5
+ * @property key - ID of an option, used as a value for POST/PUT requests in API
6
+ * @property text - display name of an option
7
+ * @property inactive - flag describing whether the property is used or not
8
+ */
9
+ type LimetypePropertyOption = {
10
+ key: string;
11
+ text: string;
12
+ inactive: boolean;
13
+ };
14
+
3
15
  /**
4
16
  * Representation of a property of a Limetype.
5
17
  *
6
18
  * @property name - The internal name of the property
7
19
  * @property localname - The display name of the property
8
20
  * @property type - The type of the property (e.g., string, file, hasmany)
21
+ * @property required - describes whether a property is required or not
22
+ * @property options - a set of {@link LimetypePropertyOption} used only for
23
+ * fields with type `option`.
9
24
  *
10
25
  * @public
11
26
  * @group Models
@@ -14,6 +29,9 @@ export type LimetypeProperty = {
14
29
  name: string;
15
30
  localname: string;
16
31
  type: string;
32
+ required: boolean;
33
+ length?: number;
34
+ options?: LimetypePropertyOption[];
17
35
  } & Record<string, APIResponseValue>;
18
36
 
19
37
  /**
@@ -68,10 +68,15 @@ export async function adminOperations(
68
68
  switch (operation) {
69
69
  case 'getManyUsers': {
70
70
  const result = await operations.getManyUsers.execute.call(this, i);
71
-
72
- return result.map((item: User) => ({
73
- json: item,
74
- }));
71
+ if (Array.isArray(result)) {
72
+ return result.map((item: User) => ({
73
+ json: item,
74
+ }));
75
+ } else {
76
+ return {
77
+ json: result,
78
+ };
79
+ }
75
80
  }
76
81
  case 'getSingleUser': {
77
82
  return {
@@ -8,6 +8,7 @@ import {
8
8
  DEFAULT_API_OBJECT_LIMIT,
9
9
  } from '../../../models';
10
10
  import { fetchManyUsers } from '../../../transport';
11
+ import { WorkflowResponse } from '../../../../response';
11
12
 
12
13
  export const description = {
13
14
  name: 'Get many users',
@@ -144,7 +145,7 @@ export const properties: INodeProperties[] = [
144
145
  export async function execute(
145
146
  this: IExecuteFunctions,
146
147
  i: number
147
- ): Promise<User[]> {
148
+ ): Promise<WorkflowResponse<User[]>> {
148
149
  const active = this.getNodeParameter('active', i) as
149
150
  | boolean
150
151
  | NullOptionType;
@@ -162,5 +163,12 @@ export async function execute(
162
163
  i,
163
164
  false
164
165
  ) as boolean;
165
- return await fetchManyUsers(this, active, userType, limit, withCoworker);
166
+ const response = await fetchManyUsers(
167
+ this,
168
+ active,
169
+ userType,
170
+ limit,
171
+ withCoworker
172
+ );
173
+ return response.data;
166
174
  }
@@ -1,14 +1,11 @@
1
- import {
2
- IExecuteFunctions,
3
- INodeProperties,
4
- NodeOperationError,
5
- } from 'n8n-workflow';
6
-
1
+ import { IExecuteFunctions, INodeProperties } from 'n8n-workflow';
7
2
  import { User, ADMIN_RESOURCE } from '../../../models';
8
3
  import {
9
4
  fetchSingleUserById,
10
5
  fetchSingleUserByLimeobjectId,
11
6
  } from '../../../transport';
7
+ import { WorkflowResponse, APIResponse } from '../../../../response';
8
+ import { handleWorkflowError } from '../../../../errorHandling';
12
9
 
13
10
  export const description = {
14
11
  name: 'Get single user',
@@ -94,20 +91,22 @@ export const properties: INodeProperties[] = [
94
91
  export async function execute(
95
92
  this: IExecuteFunctions,
96
93
  i: number
97
- ): Promise<User> {
94
+ ): Promise<WorkflowResponse<User>> {
98
95
  const source = this.getNodeParameter('source', i) as string;
99
96
  const id = this.getNodeParameter('identifier', i) as string;
100
97
  const withCoworker = this.getNodeParameter('withCoworker', i) as boolean;
101
98
 
99
+ let response: APIResponse<User>;
100
+
102
101
  if (source == 'byUser') {
103
- return await fetchSingleUserById(this, id, withCoworker);
104
- }
105
- if (source == 'byLimeobject') {
106
- return await fetchSingleUserByLimeobjectId(this, id, withCoworker);
102
+ response = await fetchSingleUserById(this, id, withCoworker);
103
+ } else if (source == 'byLimeobject') {
104
+ response = await fetchSingleUserByLimeobjectId(this, id, withCoworker);
105
+ } else {
106
+ response = handleWorkflowError(this, {
107
+ message: `The source ${source} is not supported!`,
108
+ });
107
109
  }
108
110
 
109
- throw new NodeOperationError(
110
- this.getNode(),
111
- `The source "${source}" is not supported!`
112
- );
111
+ return response.data;
113
112
  }
@@ -87,21 +87,30 @@ export async function dataOperations(
87
87
  }
88
88
  case 'updateSingleObject': {
89
89
  return {
90
- json: await operations.updateSingleObject.execute.call(this, i),
90
+ ...(await operations.updateSingleObject.execute.call(this, i)),
91
91
  };
92
92
  }
93
93
  case 'deleteSingleObject': {
94
- await operations.deleteSingleObject.execute.call(this, i);
95
- return { json: {} };
94
+ const response = await operations.deleteSingleObject.execute.call(
95
+ this,
96
+ i
97
+ );
98
+ return { json: response };
96
99
  }
97
100
  case 'getManyObjects': {
98
101
  const result = await operations.getManyObjects.execute.call(
99
102
  this,
100
103
  i
101
104
  );
102
- return result.map((item) => ({
103
- json: item,
104
- }));
105
+ if (Array.isArray(result)) {
106
+ return result.map((item) => ({
107
+ json: item,
108
+ }));
109
+ } else {
110
+ return {
111
+ json: result,
112
+ };
113
+ }
105
114
  }
106
115
  case 'getSingleFile': {
107
116
  return await operations.getSingleFile.execute.call(this, i);
@@ -1,15 +1,15 @@
1
1
  import { IDataObject, IExecuteFunctions, INodeProperties } from 'n8n-workflow';
2
2
 
3
3
  import { createLimeobject, getProperties } from '../../../transport';
4
- import { DATA_RESOURCE, LimetypeProperty } from '../../../models';
4
+ import { DATA_RESOURCE } from '../../../models';
5
5
  import {
6
- adaptProperty,
7
6
  getFilePropertiesNames,
8
- getPropertyType,
9
7
  processFileResponse,
10
8
  setFileProperties,
11
9
  } from '../../../utils';
12
10
 
11
+ import { parseResourceMapperFields } from '../../../methods';
12
+
13
13
  /**
14
14
  * Description and metadata for the "Create Single Object" operation in Lime CRM.
15
15
  *
@@ -76,12 +76,20 @@ export const properties: INodeProperties[] = [
76
76
  {
77
77
  displayName: 'Properties',
78
78
  name: 'properties',
79
- type: 'fixedCollection',
79
+ type: 'resourceMapper',
80
80
  placeholder: 'Add Property',
81
81
  typeOptions: {
82
- multipleValues: true,
82
+ resourceMapper: {
83
+ resourceMapperMethod: 'getCreateMappingColumns',
84
+ mode: 'add',
85
+ addAllFields: false,
86
+ supportAutoMap: false,
87
+ },
88
+ loadOptionsDependsOn: ['limetype'],
89
+ },
90
+ default: {
91
+ value: null,
83
92
  },
84
- default: {},
85
93
  displayOptions: {
86
94
  show: {
87
95
  resource: [DATA_RESOURCE],
@@ -89,33 +97,6 @@ export const properties: INodeProperties[] = [
89
97
  inputMethod: ['fields'],
90
98
  },
91
99
  },
92
- options: [
93
- {
94
- displayName: 'Property',
95
- name: 'property',
96
- values: [
97
- {
98
- displayName: 'Property Name',
99
- name: 'name',
100
- type: 'options',
101
- typeOptions: {
102
- sortable: true,
103
- loadOptionsMethod: 'getNoHasManyProperties',
104
- loadOptionsDependsOn: ['limetype'],
105
- },
106
- default: '',
107
- description: 'Name of the property',
108
- },
109
- {
110
- displayName: 'Property Value',
111
- name: 'value',
112
- type: 'string',
113
- default: '',
114
- description: 'Value of the property',
115
- },
116
- ],
117
- },
118
- ],
119
100
  },
120
101
  {
121
102
  displayName: 'Object (JSON)',
@@ -136,39 +117,6 @@ export const properties: INodeProperties[] = [
136
117
  },
137
118
  ];
138
119
 
139
- /**
140
- *
141
- * @param context - Node execution context
142
- * @param i - The index of the current item in the workflow execution
143
- * @param properties - List of {@link LimeTypeProperty} fetched from Lime CRM
144
- * @returns IDataObject - parsed data from Simple Fields mode
145
- */
146
- function parseSimpleFieldsData(
147
- context: IExecuteFunctions,
148
- i: number,
149
- properties: LimetypeProperty[]
150
- ): IDataObject {
151
- const objectData: IDataObject = {};
152
- const propertiesInput = context.getNodeParameter(
153
- 'properties.property',
154
- i,
155
- []
156
- ) as IDataObject[];
157
-
158
- if (propertiesInput && propertiesInput.length > 0) {
159
- for (const prop of propertiesInput) {
160
- if (prop.name && prop.value !== undefined) {
161
- const propertyName = prop.name as string;
162
- objectData[propertyName] = adaptProperty(
163
- prop.value as string,
164
- getPropertyType(propertyName, properties)
165
- );
166
- }
167
- }
168
- }
169
- return objectData;
170
- }
171
-
172
120
  /**
173
121
  * Execute the "Create Single Object" operation for Lime CRM.
174
122
  *
@@ -195,13 +143,16 @@ export async function execute(this: IExecuteFunctions, i: number) {
195
143
 
196
144
  let objectData: IDataObject;
197
145
 
198
- const properties = await getProperties(this, limetype);
146
+ const propertiesResponse = await getProperties(this, limetype);
147
+ if (!propertiesResponse.success) return propertiesResponse.data;
148
+
149
+ const properties = propertiesResponse.data;
199
150
 
200
151
  if (inputMethod === 'json') {
201
152
  const jsonInput = this.getNodeParameter('objectJson', i) as string;
202
153
  objectData = JSON.parse(jsonInput);
203
154
  } else {
204
- objectData = parseSimpleFieldsData(this, i, properties);
155
+ objectData = parseResourceMapperFields(this, i, 'properties');
205
156
  }
206
157
 
207
158
  const fileProperties = getFilePropertiesNames(
@@ -215,17 +166,20 @@ export async function execute(this: IExecuteFunctions, i: number) {
215
166
  fileProperties,
216
167
  objectData
217
168
  );
169
+ if (!setFilePropertiesResponse.success)
170
+ return setFilePropertiesResponse.data;
218
171
 
219
172
  const createLimeobjectResponse = await createLimeobject(
220
173
  this,
221
174
  limetype,
222
- setFilePropertiesResponse
175
+ setFilePropertiesResponse.data
223
176
  );
177
+ if (!createLimeobjectResponse.success) return createLimeobjectResponse.data;
224
178
 
225
179
  const response = await processFileResponse(
226
180
  this,
227
181
  fileProperties,
228
- createLimeobjectResponse
182
+ createLimeobjectResponse.data
229
183
  );
230
- return response.json;
184
+ return response.json.data;
231
185
  }
@@ -2,6 +2,7 @@ import { IExecuteFunctions, INodeProperties } from 'n8n-workflow';
2
2
 
3
3
  import { deleteLimeobject } from '../../../transport';
4
4
  import { DATA_RESOURCE } from '../../../models';
5
+ import { WorkflowResponse } from '../../../../response';
5
6
 
6
7
  /**
7
8
  * Description and metadata for the "Delete Single Object" operation in Lime CRM.
@@ -75,9 +76,13 @@ export const properties: INodeProperties[] = [
75
76
  *
76
77
  * @public
77
78
  */
78
- export async function execute(this: IExecuteFunctions, i: number) {
79
+ export async function execute(
80
+ this: IExecuteFunctions,
81
+ i: number
82
+ ): Promise<WorkflowResponse<Record<string, never>>> {
79
83
  const limetype = this.getNodeParameter('limetype', i) as string;
80
84
  const objectId = this.getNodeParameter('objectId', i) as string;
81
85
 
82
- return await deleteLimeobject(this, limetype, objectId);
86
+ const response = await deleteLimeobject(this, limetype, objectId);
87
+ return response.data;
83
88
  }
@@ -2,6 +2,7 @@ import { IExecuteFunctions, INodeProperties } from 'n8n-workflow';
2
2
 
3
3
  import { IncludedProperties, queryLimeobjects } from '../../../transport';
4
4
  import { DATA_RESOURCE, DEFAULT_API_OBJECT_LIMIT } from '../../../models';
5
+ import { WorkflowResponse } from '../../../../response';
5
6
 
6
7
  /**
7
8
  * Description and metadata for the "Get Many Objects" operation in Lime CRM.
@@ -389,7 +390,7 @@ async function fetchLimeObjects(
389
390
  filter: string,
390
391
  limit: number | null,
391
392
  orderBy: Record<string, 'ASC' | 'DESC'>[]
392
- ): Promise<IncludedProperties[]> {
393
+ ): Promise<WorkflowResponse<IncludedProperties[]>> {
393
394
  const allResults: IncludedProperties[] = [];
394
395
  const parsedFilter = JSON.parse(filter);
395
396
  const unlimited = limit === null || limit === 0;
@@ -413,7 +414,10 @@ async function fetchLimeObjects(
413
414
  orderBy: orderBy,
414
415
  });
415
416
 
416
- const batch = await queryLimeobjects(this, q);
417
+ const batchResponse = await queryLimeobjects(this, q);
418
+ if (!batchResponse.success) return batchResponse.data;
419
+
420
+ const batch = batchResponse.data;
417
421
 
418
422
  const collected = batch.objects.length;
419
423
  if (collected === 0) break;
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  IExecuteFunctions,
3
+ INodeExecutionData,
3
4
  INodeProperties,
4
5
  NodeOperationError,
5
6
  } from 'n8n-workflow';
@@ -125,15 +126,22 @@ export const properties: INodeProperties[] = [
125
126
  *
126
127
  * @public
127
128
  */
128
- export async function execute(this: IExecuteFunctions, i: number) {
129
+ export async function execute(
130
+ this: IExecuteFunctions,
131
+ i: number
132
+ ): Promise<INodeExecutionData> {
129
133
  const source = this.getNodeParameter('source', i) as string;
130
134
  const id = this.getNodeParameter('identifier', i) as string;
131
135
 
132
136
  if (source == 'byFile') {
133
137
  const fileResponse = await getFileContent(this, id);
138
+ if (!fileResponse.success)
139
+ return {
140
+ json: fileResponse.data,
141
+ };
134
142
  return {
135
143
  json: {},
136
- binary: { data: fileResponse },
144
+ binary: { data: fileResponse.data },
137
145
  };
138
146
  }
139
147
  if (source == 'byLimeobject') {
@@ -146,11 +154,15 @@ export async function execute(this: IExecuteFunctions, i: number) {
146
154
  id,
147
155
  property
148
156
  );
157
+ if (!fileResponse.success)
158
+ return {
159
+ json: fileResponse.data,
160
+ };
149
161
 
150
162
  return {
151
163
  json: {},
152
164
  binary: {
153
- data: fileResponse,
165
+ data: fileResponse.data,
154
166
  },
155
167
  };
156
168
  }
@@ -1,9 +1,9 @@
1
1
  import { IExecuteFunctions, INodeProperties } from 'n8n-workflow';
2
2
 
3
3
  import { getLimeobject, getProperties } from '../../../transport';
4
- import { DATA_RESOURCE } from '../../../models';
4
+ import { DATA_RESOURCE, Limeobject } from '../../../models';
5
5
  import { getFilePropertiesNames, processFileResponse } from '../../../utils';
6
-
6
+ import { WorkflowFileResponse } from '../../../../response';
7
7
  /**
8
8
  * Description and metadata for the "Get Single Object" operation in Lime CRM.
9
9
  *
@@ -94,7 +94,10 @@ export const properties: INodeProperties[] = [
94
94
  *
95
95
  * @public
96
96
  */
97
- export async function execute(this: IExecuteFunctions, i: number) {
97
+ export async function execute(
98
+ this: IExecuteFunctions,
99
+ i: number
100
+ ): Promise<WorkflowFileResponse<Limeobject>> {
98
101
  const limetype = this.getNodeParameter('limetype', i) as string;
99
102
  const objectId = this.getNodeParameter('objectId', i) as string;
100
103
  const includeFileContent = this.getNodeParameter(
@@ -103,14 +106,20 @@ export async function execute(this: IExecuteFunctions, i: number) {
103
106
  ) as boolean;
104
107
 
105
108
  const limeObjectResponse = await getLimeobject(this, limetype, objectId);
109
+ if (!limeObjectResponse.success) return { json: limeObjectResponse.data };
106
110
 
107
111
  const propertiesResponse = await getProperties(this, limetype);
112
+ if (!propertiesResponse.success) return { json: propertiesResponse.data };
108
113
 
109
- const fileProperties = getFilePropertiesNames(propertiesResponse);
110
- return processFileResponse(
114
+ const fileProperties = getFilePropertiesNames(propertiesResponse.data);
115
+ const fileResponse = await processFileResponse<Limeobject>(
111
116
  this,
112
117
  fileProperties,
113
- limeObjectResponse,
118
+ limeObjectResponse.data,
114
119
  includeFileContent
115
120
  );
121
+ return {
122
+ json: fileResponse.json.data,
123
+ binary: fileResponse.binary,
124
+ };
116
125
  }