@botpress/cli 2.0.3 → 2.0.4

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 (378) hide show
  1. package/e2e/tests/install-interfaces.ts +1 -0
  2. package/e2e/tests/install-package.ts +1 -0
  3. package/package.json +1 -1
  4. package/.turbo/turbo-build.log +0 -22
  5. package/dist/api/bot-body.js +0 -89
  6. package/dist/api/bot-body.js.map +0 -7
  7. package/dist/api/client.js +0 -162
  8. package/dist/api/client.js.map +0 -7
  9. package/dist/api/find-previous-version.js +0 -66
  10. package/dist/api/find-previous-version.js.map +0 -7
  11. package/dist/api/find-previous-version.test.js +0 -76
  12. package/dist/api/find-previous-version.test.js.map +0 -7
  13. package/dist/api/index.js +0 -23
  14. package/dist/api/index.js.map +0 -7
  15. package/dist/api/integration-body.js +0 -146
  16. package/dist/api/integration-body.js.map +0 -7
  17. package/dist/api/interface-body.js +0 -95
  18. package/dist/api/interface-body.js.map +0 -7
  19. package/dist/api/paging.js +0 -42
  20. package/dist/api/paging.js.map +0 -7
  21. package/dist/api/plugin-body.js +0 -84
  22. package/dist/api/plugin-body.js.map +0 -7
  23. package/dist/api/types.js +0 -17
  24. package/dist/api/types.js.map +0 -7
  25. package/dist/code-generation/bot-implementation/bot-implementation.js +0 -116
  26. package/dist/code-generation/bot-implementation/bot-implementation.js.map +0 -7
  27. package/dist/code-generation/bot-implementation/bot-plugins/index.js +0 -80
  28. package/dist/code-generation/bot-implementation/bot-plugins/index.js.map +0 -7
  29. package/dist/code-generation/bot-implementation/bot-plugins/plugin-module.js +0 -129
  30. package/dist/code-generation/bot-implementation/bot-plugins/plugin-module.js.map +0 -7
  31. package/dist/code-generation/bot-implementation/bot-typings/actions-module.js +0 -88
  32. package/dist/code-generation/bot-implementation/bot-typings/actions-module.js.map +0 -7
  33. package/dist/code-generation/bot-implementation/bot-typings/events-module.js +0 -63
  34. package/dist/code-generation/bot-implementation/bot-typings/events-module.js.map +0 -7
  35. package/dist/code-generation/bot-implementation/bot-typings/index.js +0 -109
  36. package/dist/code-generation/bot-implementation/bot-typings/index.js.map +0 -7
  37. package/dist/code-generation/bot-implementation/bot-typings/states-module.js +0 -64
  38. package/dist/code-generation/bot-implementation/bot-typings/states-module.js.map +0 -7
  39. package/dist/code-generation/bot-implementation/index.js +0 -66
  40. package/dist/code-generation/bot-implementation/index.js.map +0 -7
  41. package/dist/code-generation/consts.js +0 -45
  42. package/dist/code-generation/consts.js.map +0 -7
  43. package/dist/code-generation/generators.js +0 -81
  44. package/dist/code-generation/generators.js.map +0 -7
  45. package/dist/code-generation/index.js +0 -49
  46. package/dist/code-generation/index.js.map +0 -7
  47. package/dist/code-generation/integration-implementation/index.js +0 -70
  48. package/dist/code-generation/integration-implementation/index.js.map +0 -7
  49. package/dist/code-generation/integration-implementation/integration-implementation.js +0 -114
  50. package/dist/code-generation/integration-implementation/integration-implementation.js.map +0 -7
  51. package/dist/code-generation/integration-implementation/integration-secret.js +0 -78
  52. package/dist/code-generation/integration-implementation/integration-secret.js.map +0 -7
  53. package/dist/code-generation/integration-implementation/integration-typings/actions-module.js +0 -88
  54. package/dist/code-generation/integration-implementation/integration-typings/actions-module.js.map +0 -7
  55. package/dist/code-generation/integration-implementation/integration-typings/channels-module.js +0 -107
  56. package/dist/code-generation/integration-implementation/integration-typings/channels-module.js.map +0 -7
  57. package/dist/code-generation/integration-implementation/integration-typings/configuration-module.js +0 -62
  58. package/dist/code-generation/integration-implementation/integration-typings/configuration-module.js.map +0 -7
  59. package/dist/code-generation/integration-implementation/integration-typings/configurations-module.js +0 -70
  60. package/dist/code-generation/integration-implementation/integration-typings/configurations-module.js.map +0 -7
  61. package/dist/code-generation/integration-implementation/integration-typings/entities-module.js +0 -63
  62. package/dist/code-generation/integration-implementation/integration-typings/entities-module.js.map +0 -7
  63. package/dist/code-generation/integration-implementation/integration-typings/events-module.js +0 -63
  64. package/dist/code-generation/integration-implementation/integration-typings/events-module.js.map +0 -7
  65. package/dist/code-generation/integration-implementation/integration-typings/index.js +0 -128
  66. package/dist/code-generation/integration-implementation/integration-typings/index.js.map +0 -7
  67. package/dist/code-generation/integration-implementation/integration-typings/states-module.js +0 -64
  68. package/dist/code-generation/integration-implementation/integration-typings/states-module.js.map +0 -7
  69. package/dist/code-generation/integration-package/index.js +0 -94
  70. package/dist/code-generation/integration-package/index.js.map +0 -7
  71. package/dist/code-generation/integration-package/integration-package-definition/actions-module.js +0 -88
  72. package/dist/code-generation/integration-package/integration-package-definition/actions-module.js.map +0 -7
  73. package/dist/code-generation/integration-package/integration-package-definition/channels-module.js +0 -107
  74. package/dist/code-generation/integration-package/integration-package-definition/channels-module.js.map +0 -7
  75. package/dist/code-generation/integration-package/integration-package-definition/configuration-module.js +0 -63
  76. package/dist/code-generation/integration-package/integration-package-definition/configuration-module.js.map +0 -7
  77. package/dist/code-generation/integration-package/integration-package-definition/configurations-module.js +0 -70
  78. package/dist/code-generation/integration-package/integration-package-definition/configurations-module.js.map +0 -7
  79. package/dist/code-generation/integration-package/integration-package-definition/entities-module.js +0 -63
  80. package/dist/code-generation/integration-package/integration-package-definition/entities-module.js.map +0 -7
  81. package/dist/code-generation/integration-package/integration-package-definition/events-module.js +0 -66
  82. package/dist/code-generation/integration-package/integration-package-definition/events-module.js.map +0 -7
  83. package/dist/code-generation/integration-package/integration-package-definition/index.js +0 -140
  84. package/dist/code-generation/integration-package/integration-package-definition/index.js.map +0 -7
  85. package/dist/code-generation/integration-package/integration-package-definition/states-module.js +0 -66
  86. package/dist/code-generation/integration-package/integration-package-definition/states-module.js.map +0 -7
  87. package/dist/code-generation/integration-package/integration-package-definition/typings.js +0 -17
  88. package/dist/code-generation/integration-package/integration-package-definition/typings.js.map +0 -7
  89. package/dist/code-generation/interface-implementation/index.js +0 -29
  90. package/dist/code-generation/interface-implementation/index.js.map +0 -7
  91. package/dist/code-generation/interface-implementation/integration-typings/actions-module.js +0 -88
  92. package/dist/code-generation/interface-implementation/integration-typings/actions-module.js.map +0 -7
  93. package/dist/code-generation/interface-implementation/integration-typings/channels-module.js +0 -107
  94. package/dist/code-generation/interface-implementation/integration-typings/channels-module.js.map +0 -7
  95. package/dist/code-generation/interface-implementation/integration-typings/entities-module.js +0 -63
  96. package/dist/code-generation/interface-implementation/integration-typings/entities-module.js.map +0 -7
  97. package/dist/code-generation/interface-implementation/integration-typings/events-module.js +0 -63
  98. package/dist/code-generation/interface-implementation/integration-typings/events-module.js.map +0 -7
  99. package/dist/code-generation/interface-implementation/integration-typings/index.js +0 -121
  100. package/dist/code-generation/interface-implementation/integration-typings/index.js.map +0 -7
  101. package/dist/code-generation/interface-package/index.js +0 -94
  102. package/dist/code-generation/interface-package/index.js.map +0 -7
  103. package/dist/code-generation/interface-package/interface-package-definition/actions-module.js +0 -88
  104. package/dist/code-generation/interface-package/interface-package-definition/actions-module.js.map +0 -7
  105. package/dist/code-generation/interface-package/interface-package-definition/channels-module.js +0 -98
  106. package/dist/code-generation/interface-package/interface-package-definition/channels-module.js.map +0 -7
  107. package/dist/code-generation/interface-package/interface-package-definition/entities-module.js +0 -63
  108. package/dist/code-generation/interface-package/interface-package-definition/entities-module.js.map +0 -7
  109. package/dist/code-generation/interface-package/interface-package-definition/events-module.js +0 -66
  110. package/dist/code-generation/interface-package/interface-package-definition/events-module.js.map +0 -7
  111. package/dist/code-generation/interface-package/interface-package-definition/index.js +0 -104
  112. package/dist/code-generation/interface-package/interface-package-definition/index.js.map +0 -7
  113. package/dist/code-generation/interface-package/interface-package-definition/typings.js +0 -17
  114. package/dist/code-generation/interface-package/interface-package-definition/typings.js.map +0 -7
  115. package/dist/code-generation/module.js +0 -183
  116. package/dist/code-generation/module.js.map +0 -7
  117. package/dist/code-generation/plugin-implementation/index.js +0 -60
  118. package/dist/code-generation/plugin-implementation/index.js.map +0 -7
  119. package/dist/code-generation/plugin-implementation/plugin-implementation.js +0 -90
  120. package/dist/code-generation/plugin-implementation/plugin-implementation.js.map +0 -7
  121. package/dist/code-generation/plugin-implementation/plugin-typings/actions-module.js +0 -88
  122. package/dist/code-generation/plugin-implementation/plugin-typings/actions-module.js.map +0 -7
  123. package/dist/code-generation/plugin-implementation/plugin-typings/configuration-module.js +0 -61
  124. package/dist/code-generation/plugin-implementation/plugin-typings/configuration-module.js.map +0 -7
  125. package/dist/code-generation/plugin-implementation/plugin-typings/events-module.js +0 -63
  126. package/dist/code-generation/plugin-implementation/plugin-typings/events-module.js.map +0 -7
  127. package/dist/code-generation/plugin-implementation/plugin-typings/index.js +0 -150
  128. package/dist/code-generation/plugin-implementation/plugin-typings/index.js.map +0 -7
  129. package/dist/code-generation/plugin-implementation/plugin-typings/states-module.js +0 -64
  130. package/dist/code-generation/plugin-implementation/plugin-typings/states-module.js.map +0 -7
  131. package/dist/code-generation/plugin-package/index.js +0 -151
  132. package/dist/code-generation/plugin-package/index.js.map +0 -7
  133. package/dist/code-generation/plugin-package/plugin-package-definition/actions-module.js +0 -88
  134. package/dist/code-generation/plugin-package/plugin-package-definition/actions-module.js.map +0 -7
  135. package/dist/code-generation/plugin-package/plugin-package-definition/configuration-module.js +0 -56
  136. package/dist/code-generation/plugin-package/plugin-package-definition/configuration-module.js.map +0 -7
  137. package/dist/code-generation/plugin-package/plugin-package-definition/events-module.js +0 -66
  138. package/dist/code-generation/plugin-package/plugin-package-definition/events-module.js.map +0 -7
  139. package/dist/code-generation/plugin-package/plugin-package-definition/index.js +0 -107
  140. package/dist/code-generation/plugin-package/plugin-package-definition/index.js.map +0 -7
  141. package/dist/code-generation/plugin-package/plugin-package-definition/states-module.js +0 -66
  142. package/dist/code-generation/plugin-package/plugin-package-definition/states-module.js.map +0 -7
  143. package/dist/code-generation/plugin-package/plugin-package-definition/typings.js +0 -17
  144. package/dist/code-generation/plugin-package/plugin-package-definition/typings.js.map +0 -7
  145. package/dist/code-generation/strings.js +0 -115
  146. package/dist/code-generation/strings.js.map +0 -7
  147. package/dist/code-generation/typings.js +0 -17
  148. package/dist/code-generation/typings.js.map +0 -7
  149. package/dist/command-definitions.js +0 -84
  150. package/dist/command-definitions.js.map +0 -7
  151. package/dist/command-implementations/add-command.js +0 -249
  152. package/dist/command-implementations/add-command.js.map +0 -7
  153. package/dist/command-implementations/base-command.js +0 -69
  154. package/dist/command-implementations/base-command.js.map +0 -7
  155. package/dist/command-implementations/bot-commands.js +0 -117
  156. package/dist/command-implementations/bot-commands.js.map +0 -7
  157. package/dist/command-implementations/build-command.js +0 -53
  158. package/dist/command-implementations/build-command.js.map +0 -7
  159. package/dist/command-implementations/bundle-command.js +0 -87
  160. package/dist/command-implementations/bundle-command.js.map +0 -7
  161. package/dist/command-implementations/deploy-command.js +0 -481
  162. package/dist/command-implementations/deploy-command.js.map +0 -7
  163. package/dist/command-implementations/dev-command.js +0 -345
  164. package/dist/command-implementations/dev-command.js.map +0 -7
  165. package/dist/command-implementations/gen-command.js +0 -110
  166. package/dist/command-implementations/gen-command.js.map +0 -7
  167. package/dist/command-implementations/global-command.js +0 -137
  168. package/dist/command-implementations/global-command.js.map +0 -7
  169. package/dist/command-implementations/index.js +0 -103
  170. package/dist/command-implementations/index.js.map +0 -7
  171. package/dist/command-implementations/init-command.js +0 -162
  172. package/dist/command-implementations/init-command.js.map +0 -7
  173. package/dist/command-implementations/integration-commands.js +0 -130
  174. package/dist/command-implementations/integration-commands.js.map +0 -7
  175. package/dist/command-implementations/interface-commands.js +0 -110
  176. package/dist/command-implementations/interface-commands.js.map +0 -7
  177. package/dist/command-implementations/lint-command.js +0 -151
  178. package/dist/command-implementations/lint-command.js.map +0 -7
  179. package/dist/command-implementations/login-command.js +0 -82
  180. package/dist/command-implementations/login-command.js.map +0 -7
  181. package/dist/command-implementations/logout-command.js +0 -35
  182. package/dist/command-implementations/logout-command.js.map +0 -7
  183. package/dist/command-implementations/plugin-commands.js +0 -111
  184. package/dist/command-implementations/plugin-commands.js.map +0 -7
  185. package/dist/command-implementations/project-command.js +0 -383
  186. package/dist/command-implementations/project-command.js.map +0 -7
  187. package/dist/command-implementations/read-command.js +0 -70
  188. package/dist/command-implementations/read-command.js.map +0 -7
  189. package/dist/command-implementations/serve-command.js +0 -68
  190. package/dist/command-implementations/serve-command.js.map +0 -7
  191. package/dist/command-tree.js +0 -60
  192. package/dist/command-tree.js.map +0 -7
  193. package/dist/config.js +0 -332
  194. package/dist/config.js.map +0 -7
  195. package/dist/consts.js +0 -124
  196. package/dist/consts.js.map +0 -7
  197. package/dist/errors.js +0 -202
  198. package/dist/errors.js.map +0 -7
  199. package/dist/index.js +0 -51
  200. package/dist/index.js.map +0 -7
  201. package/dist/init.js +0 -50
  202. package/dist/init.js.map +0 -7
  203. package/dist/linter/base-linter.js +0 -75
  204. package/dist/linter/base-linter.js.map +0 -7
  205. package/dist/linter/base-linter.test.js +0 -187
  206. package/dist/linter/base-linter.test.js.map +0 -7
  207. package/dist/linter/bot-linter.js +0 -35
  208. package/dist/linter/bot-linter.js.map +0 -7
  209. package/dist/linter/integration-linter.js +0 -35
  210. package/dist/linter/integration-linter.js.map +0 -7
  211. package/dist/linter/interface-linter.js +0 -35
  212. package/dist/linter/interface-linter.js.map +0 -7
  213. package/dist/linter/ruleset-tests/bot.ruleset.test.js +0 -358
  214. package/dist/linter/ruleset-tests/bot.ruleset.test.js.map +0 -7
  215. package/dist/linter/ruleset-tests/common.js +0 -37
  216. package/dist/linter/ruleset-tests/common.js.map +0 -7
  217. package/dist/linter/ruleset-tests/integration.ruleset.test.js +0 -887
  218. package/dist/linter/ruleset-tests/integration.ruleset.test.js.map +0 -7
  219. package/dist/linter/ruleset-tests/interface.ruleset.test.js +0 -383
  220. package/dist/linter/ruleset-tests/interface.ruleset.test.js.map +0 -7
  221. package/dist/linter/rulesets/bot.ruleset.js +0 -191
  222. package/dist/linter/rulesets/bot.ruleset.js.map +0 -7
  223. package/dist/linter/rulesets/integration.ruleset.js +0 -378
  224. package/dist/linter/rulesets/integration.ruleset.js.map +0 -7
  225. package/dist/linter/rulesets/interface.ruleset.js +0 -157
  226. package/dist/linter/rulesets/interface.ruleset.js.map +0 -7
  227. package/dist/linter/spectral-functions.js +0 -36
  228. package/dist/linter/spectral-functions.js.map +0 -7
  229. package/dist/logger/base-logger.js +0 -170
  230. package/dist/logger/base-logger.js.map +0 -7
  231. package/dist/logger/index.js +0 -86
  232. package/dist/logger/index.js.map +0 -7
  233. package/dist/package-ref.js +0 -107
  234. package/dist/package-ref.js.map +0 -7
  235. package/dist/package-ref.test.js +0 -109
  236. package/dist/package-ref.test.js.map +0 -7
  237. package/dist/register-yargs.js +0 -91
  238. package/dist/register-yargs.js.map +0 -7
  239. package/dist/root.js +0 -41
  240. package/dist/root.js.map +0 -7
  241. package/dist/sdk/index.js +0 -22
  242. package/dist/sdk/index.js.map +0 -7
  243. package/dist/sdk/resolve-bot-interfaces.js +0 -43
  244. package/dist/sdk/resolve-bot-interfaces.js.map +0 -7
  245. package/dist/sdk/resolve-integration-interfaces.js +0 -161
  246. package/dist/sdk/resolve-integration-interfaces.js.map +0 -7
  247. package/dist/sdk/validate-bot.js +0 -88
  248. package/dist/sdk/validate-bot.js.map +0 -7
  249. package/dist/sdk/validate-integration.js +0 -72
  250. package/dist/sdk/validate-integration.js.map +0 -7
  251. package/dist/typings.js +0 -17
  252. package/dist/typings.js.map +0 -7
  253. package/dist/utils/cache-utils.js +0 -104
  254. package/dist/utils/cache-utils.js.map +0 -7
  255. package/dist/utils/case-utils.js +0 -84
  256. package/dist/utils/case-utils.js.map +0 -7
  257. package/dist/utils/case-utils.test.js +0 -75
  258. package/dist/utils/case-utils.test.js.map +0 -7
  259. package/dist/utils/esbuild-utils.js +0 -92
  260. package/dist/utils/esbuild-utils.js.map +0 -7
  261. package/dist/utils/event-emitter.js +0 -63
  262. package/dist/utils/event-emitter.js.map +0 -7
  263. package/dist/utils/file-watcher.js +0 -73
  264. package/dist/utils/file-watcher.js.map +0 -7
  265. package/dist/utils/guard-utils.js +0 -32
  266. package/dist/utils/guard-utils.js.map +0 -7
  267. package/dist/utils/id-utils.js +0 -59
  268. package/dist/utils/id-utils.js.map +0 -7
  269. package/dist/utils/index.js +0 -99
  270. package/dist/utils/index.js.map +0 -7
  271. package/dist/utils/object-utils.js +0 -32
  272. package/dist/utils/object-utils.js.map +0 -7
  273. package/dist/utils/path-utils.js +0 -106
  274. package/dist/utils/path-utils.js.map +0 -7
  275. package/dist/utils/path-utils.test.js +0 -72
  276. package/dist/utils/path-utils.test.js.map +0 -7
  277. package/dist/utils/pkgjson-utils.js +0 -57
  278. package/dist/utils/pkgjson-utils.js.map +0 -7
  279. package/dist/utils/promise-utils.js +0 -33
  280. package/dist/utils/promise-utils.js.map +0 -7
  281. package/dist/utils/promise-utils.test.js +0 -14
  282. package/dist/utils/promise-utils.test.js.map +0 -7
  283. package/dist/utils/prompt-utils.js +0 -105
  284. package/dist/utils/prompt-utils.js.map +0 -7
  285. package/dist/utils/record-utils.js +0 -118
  286. package/dist/utils/record-utils.js.map +0 -7
  287. package/dist/utils/record-utils.test.js +0 -38
  288. package/dist/utils/record-utils.test.js.map +0 -7
  289. package/dist/utils/require-utils.js +0 -90
  290. package/dist/utils/require-utils.js.map +0 -7
  291. package/dist/utils/require-utils.test.js +0 -54
  292. package/dist/utils/require-utils.test.js.map +0 -7
  293. package/dist/utils/schema-utils.js +0 -64
  294. package/dist/utils/schema-utils.js.map +0 -7
  295. package/dist/utils/schema-utils.test.js +0 -50
  296. package/dist/utils/schema-utils.test.js.map +0 -7
  297. package/dist/utils/semver-utils.js +0 -45
  298. package/dist/utils/semver-utils.js.map +0 -7
  299. package/dist/utils/string-utils.js +0 -42
  300. package/dist/utils/string-utils.js.map +0 -7
  301. package/dist/utils/template-utils.js +0 -51
  302. package/dist/utils/template-utils.js.map +0 -7
  303. package/dist/utils/tunnel-utils.js +0 -129
  304. package/dist/utils/tunnel-utils.js.map +0 -7
  305. package/dist/utils/type-utils.js +0 -17
  306. package/dist/utils/type-utils.js.map +0 -7
  307. package/dist/utils/url-utils.js +0 -67
  308. package/dist/utils/url-utils.js.map +0 -7
  309. package/dist/worker/child-entrypoint.js +0 -58
  310. package/dist/worker/child-entrypoint.js.map +0 -7
  311. package/dist/worker/child-wrapper.js +0 -119
  312. package/dist/worker/child-wrapper.js.map +0 -7
  313. package/dist/worker/config.js +0 -44
  314. package/dist/worker/config.js.map +0 -7
  315. package/dist/worker/index.js +0 -32
  316. package/dist/worker/index.js.map +0 -7
  317. package/dist/worker/is-child.js +0 -55
  318. package/dist/worker/is-child.js.map +0 -7
  319. package/dist/worker/worker-state.js +0 -71
  320. package/dist/worker/worker-state.js.map +0 -7
  321. package/dist/worker/worker.js +0 -91
  322. package/dist/worker/worker.js.map +0 -7
  323. package/templates/empty-bot/.botpress/implementation/index.ts +0 -50
  324. package/templates/empty-bot/.botpress/implementation/plugins/index.ts +0 -11
  325. package/templates/empty-bot/.botpress/implementation/typings/actions/index.ts +0 -6
  326. package/templates/empty-bot/.botpress/implementation/typings/events/index.ts +0 -6
  327. package/templates/empty-bot/.botpress/implementation/typings/index.ts +0 -20
  328. package/templates/empty-bot/.botpress/implementation/typings/integrations/index.ts +0 -6
  329. package/templates/empty-bot/.botpress/implementation/typings/states/index.ts +0 -6
  330. package/templates/empty-bot/.botpress/index.ts +0 -5
  331. package/templates/empty-integration/.botpress/implementation/index.ts +0 -57
  332. package/templates/empty-integration/.botpress/implementation/typings/actions/index.ts +0 -6
  333. package/templates/empty-integration/.botpress/implementation/typings/channels/index.ts +0 -6
  334. package/templates/empty-integration/.botpress/implementation/typings/configuration/index.ts +0 -2
  335. package/templates/empty-integration/.botpress/implementation/typings/configurations/index.ts +0 -6
  336. package/templates/empty-integration/.botpress/implementation/typings/entities/index.ts +0 -6
  337. package/templates/empty-integration/.botpress/implementation/typings/events/index.ts +0 -6
  338. package/templates/empty-integration/.botpress/implementation/typings/index.ts +0 -31
  339. package/templates/empty-integration/.botpress/implementation/typings/states/index.ts +0 -6
  340. package/templates/empty-integration/.botpress/index.ts +0 -2
  341. package/templates/empty-integration/.botpress/secrets/index.ts +0 -6
  342. package/templates/empty-plugin/.botpress/implementation/index.ts +0 -35
  343. package/templates/empty-plugin/.botpress/implementation/typings/actions/index.ts +0 -6
  344. package/templates/empty-plugin/.botpress/implementation/typings/configuration/index.ts +0 -2
  345. package/templates/empty-plugin/.botpress/implementation/typings/events/index.ts +0 -6
  346. package/templates/empty-plugin/.botpress/implementation/typings/index.ts +0 -26
  347. package/templates/empty-plugin/.botpress/implementation/typings/integrations/index.ts +0 -6
  348. package/templates/empty-plugin/.botpress/implementation/typings/interfaces/index.ts +0 -6
  349. package/templates/empty-plugin/.botpress/implementation/typings/states/index.ts +0 -6
  350. package/templates/empty-plugin/.botpress/index.ts +0 -1
  351. package/templates/hello-world/.botpress/implementation/index.ts +0 -57
  352. package/templates/hello-world/.botpress/implementation/typings/actions/helloWorld/index.ts +0 -12
  353. package/templates/hello-world/.botpress/implementation/typings/actions/helloWorld/input.ts +0 -5
  354. package/templates/hello-world/.botpress/implementation/typings/actions/helloWorld/output.ts +0 -5
  355. package/templates/hello-world/.botpress/implementation/typings/actions/index.ts +0 -9
  356. package/templates/hello-world/.botpress/implementation/typings/channels/index.ts +0 -6
  357. package/templates/hello-world/.botpress/implementation/typings/configuration/index.ts +0 -2
  358. package/templates/hello-world/.botpress/implementation/typings/configurations/index.ts +0 -6
  359. package/templates/hello-world/.botpress/implementation/typings/entities/index.ts +0 -6
  360. package/templates/hello-world/.botpress/implementation/typings/events/index.ts +0 -6
  361. package/templates/hello-world/.botpress/implementation/typings/index.ts +0 -31
  362. package/templates/hello-world/.botpress/implementation/typings/states/index.ts +0 -6
  363. package/templates/hello-world/.botpress/index.ts +0 -2
  364. package/templates/hello-world/.botpress/secrets/index.ts +0 -6
  365. package/templates/webhook-message/.botpress/implementation/index.ts +0 -57
  366. package/templates/webhook-message/.botpress/implementation/typings/actions/index.ts +0 -6
  367. package/templates/webhook-message/.botpress/implementation/typings/channels/index.ts +0 -9
  368. package/templates/webhook-message/.botpress/implementation/typings/channels/webhook/index.ts +0 -12
  369. package/templates/webhook-message/.botpress/implementation/typings/channels/webhook/messages/index.ts +0 -9
  370. package/templates/webhook-message/.botpress/implementation/typings/channels/webhook/messages/text.ts +0 -5
  371. package/templates/webhook-message/.botpress/implementation/typings/configuration/index.ts +0 -8
  372. package/templates/webhook-message/.botpress/implementation/typings/configurations/index.ts +0 -6
  373. package/templates/webhook-message/.botpress/implementation/typings/entities/index.ts +0 -6
  374. package/templates/webhook-message/.botpress/implementation/typings/events/index.ts +0 -6
  375. package/templates/webhook-message/.botpress/implementation/typings/index.ts +0 -31
  376. package/templates/webhook-message/.botpress/implementation/typings/states/index.ts +0 -6
  377. package/templates/webhook-message/.botpress/index.ts +0 -2
  378. package/templates/webhook-message/.botpress/secrets/index.ts +0 -6
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/linter/ruleset-tests/integration.ruleset.test.ts"],
4
- "sourcesContent": ["import { test, expect } from 'vitest'\nimport { INTEGRATION_RULESET } from '../rulesets/integration.ruleset'\nimport { type AggregateIntegrationBody } from '../integration-linter'\nimport { createDescribeRule, type RecursivePartial } from './common'\n\ntype PartialIntegration = RecursivePartial<AggregateIntegrationBody>\nconst describeRule = createDescribeRule<AggregateIntegrationBody>()(INTEGRATION_RULESET)\n\nconst EMPTY_STRING = ''\nconst TRUTHY_STRING = 'truthy'\nconst ACTION_NAME = 'actionName'\nconst EVENT_NAME = 'eventName'\nconst CONFIG_NAME = 'configName'\nconst PARAM_NAME = 'paramName'\nconst PROPERTIES_PARAM = 'properties'\nconst PARAM_NAMES = [PARAM_NAME, PROPERTIES_PARAM] as const\nconst TAG_NAME = 'tagName'\nconst CHANNEL_NAME = 'channelName'\nconst STATE_NAME = 'stateName'\nconst SECRET_NAME = 'SECRET_NAME'\nconst MESSAGE_TYPE = 'text'\nconst ZUI = 'x-zui'\nconst LEGACY_ZUI = 'ui'\n\ndescribeRule('integration-title-must-be-present', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = {} as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = { title: EMPTY_STRING } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['title'])\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = { title: TRUTHY_STRING } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('integration-description-must-be-present', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = {} as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = { description: EMPTY_STRING } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['description'])\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = { description: TRUTHY_STRING } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('integration-must-have-an-icon', (lint) => {\n test('missing icon should trigger', async () => {\n // arrange\n const definition = {} as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.message).toContain('icon')\n })\n\n test('empty icon should trigger', async () => {\n // arrange\n const definition = { icon: EMPTY_STRING } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['icon'])\n })\n\n test('valid icon should not trigger', async () => {\n // arrange\n const definition = { icon: TRUTHY_STRING } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('integration-must-have-a-readme-file', (lint) => {\n test('missing readme should trigger', async () => {\n // arrange\n const definition = {} as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.message).toContain('readme')\n })\n\n test('empty readme should trigger', async () => {\n // arrange\n const definition = { readme: EMPTY_STRING } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['readme'])\n })\n\n test('valid readme should not trigger', async () => {\n // arrange\n const definition = { readme: TRUTHY_STRING } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('actions-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = { actions: { [ACTION_NAME]: {} } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['actions', ACTION_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = { actions: { [ACTION_NAME]: { title: EMPTY_STRING } } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['actions', ACTION_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = { actions: { [ACTION_NAME]: { title: TRUTHY_STRING } } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('actions-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { actions: { [ACTION_NAME]: {} } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['actions', ACTION_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n actions: { [ACTION_NAME]: { description: EMPTY_STRING } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['actions', ACTION_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n actions: { [ACTION_NAME]: { description: TRUTHY_STRING } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('action-inputparams-should-have-a-title', (lint) => {\n test.each(PARAM_NAMES)('missing title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n actions: { [ACTION_NAME]: { input: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['actions', ACTION_NAME, 'input', 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('empty title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n actions: {\n [ACTION_NAME]: { input: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } } },\n },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['actions', ACTION_NAME, 'input', 'schema', 'properties', paramName, ZUI, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('valid title should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n actions: {\n [ACTION_NAME]: { input: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } } },\n },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('action-inputparams-must-have-a-description', (lint) => {\n test.each(PARAM_NAMES)('missing description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n actions: { [ACTION_NAME]: { input: { schema: { properties: { [paramName]: {} } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['actions', ACTION_NAME, 'input', 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('empty description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n actions: {\n [ACTION_NAME]: { input: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } } },\n },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual([\n 'actions',\n ACTION_NAME,\n 'input',\n 'schema',\n 'properties',\n paramName,\n 'description',\n ])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('valid description should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n actions: {\n [ACTION_NAME]: { input: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } } },\n },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('action-outputparams-should-have-a-title', (lint) => {\n test.each(PARAM_NAMES)('missing title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n actions: { [ACTION_NAME]: { output: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['actions', ACTION_NAME, 'output', 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('empty title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n actions: {\n [ACTION_NAME]: { output: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } } },\n },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual([\n 'actions',\n ACTION_NAME,\n 'output',\n 'schema',\n 'properties',\n paramName,\n ZUI,\n 'title',\n ])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('valid title should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n actions: {\n [ACTION_NAME]: { output: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } } },\n },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('action-outputparams-must-have-a-description', (lint) => {\n test.each(PARAM_NAMES)('missing description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n actions: { [ACTION_NAME]: { output: { schema: { properties: { [paramName]: {} } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['actions', ACTION_NAME, 'output', 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('empty description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n actions: {\n [ACTION_NAME]: { output: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } } },\n },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual([\n 'actions',\n ACTION_NAME,\n 'output',\n 'schema',\n 'properties',\n paramName,\n 'description',\n ])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('valid description should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n actions: {\n [ACTION_NAME]: { output: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } } },\n },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('event-outputparams-should-have-title', (lint) => {\n test.each(PARAM_NAMES)('missing title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: { [EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('empty title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } },\n },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName, ZUI, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('valid title should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } },\n },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('event-outputparams-must-have-description', (lint) => {\n test.each(PARAM_NAMES)('missing description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: { [EVENT_NAME]: { schema: { properties: { [paramName]: {} } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('empty description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } },\n },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'schema', 'properties', paramName, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('valid description should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n events: {\n [EVENT_NAME]: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } },\n },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('events-must-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = { events: { [EVENT_NAME]: {} } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = { events: { [EVENT_NAME]: { title: EMPTY_STRING } } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = { events: { [EVENT_NAME]: { title: TRUTHY_STRING } } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('events-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { events: { [EVENT_NAME]: {} } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = { events: { [EVENT_NAME]: { description: EMPTY_STRING } } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['events', EVENT_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n events: { [EVENT_NAME]: { description: TRUTHY_STRING } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('configuration-fields-must-have-a-title', (lint) => {\n test.each(PARAM_NAMES)('missing title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { [ZUI]: {} } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('empty title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, ZUI, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('valid title should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('configuration-fields-must-have-a-description', (lint) => {\n test.each(PARAM_NAMES)('missing description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: {} } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('empty description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configuration', 'schema', 'properties', paramName, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('valid description should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configuration: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('multiple-configurations-must-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = {\n configurations: { [CONFIG_NAME]: {} },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configurations', CONFIG_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = {\n configurations: { [CONFIG_NAME]: { title: EMPTY_STRING } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configurations', CONFIG_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = {\n configurations: { [CONFIG_NAME]: { title: TRUTHY_STRING } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('multiple-configurations-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = {\n configurations: { [CONFIG_NAME]: {} },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configurations', CONFIG_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n configurations: { [CONFIG_NAME]: { description: EMPTY_STRING } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configurations', CONFIG_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n configurations: { [CONFIG_NAME]: { description: TRUTHY_STRING } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('multipes-configurations-fields-must-have-a-title', (lint) => {\n test.each(PARAM_NAMES)('missing title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configurations: { [CONFIG_NAME]: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configurations', CONFIG_NAME, 'schema', 'properties', paramName, ZUI])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('empty title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configurations: {\n [CONFIG_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } },\n },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configurations', CONFIG_NAME, 'schema', 'properties', paramName, ZUI, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test.each(PARAM_NAMES)('valid title should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configurations: {\n [CONFIG_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } },\n },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('multipes-configurations-fields-must-have-a-description', (lint) => {\n test.each(PARAM_NAMES)('missing description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configurations: { [CONFIG_NAME]: { schema: { properties: { [paramName]: {} } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configurations', CONFIG_NAME, 'schema', 'properties', paramName])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('empty description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configurations: {\n [CONFIG_NAME]: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } },\n },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['configurations', CONFIG_NAME, 'schema', 'properties', paramName, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test.each(PARAM_NAMES)('valid description should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n configurations: {\n [CONFIG_NAME]: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } },\n },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('user-tags-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: { title: EMPTY_STRING } } } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = {\n user: { tags: { [TAG_NAME]: { title: TRUTHY_STRING } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('user-tags-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { user: { tags: { [TAG_NAME]: {} } } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n user: { tags: { [TAG_NAME]: { description: EMPTY_STRING } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['user', 'tags', TAG_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n user: { tags: { [TAG_NAME]: { description: TRUTHY_STRING } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('channels-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = { channels: { [CHANNEL_NAME]: {} } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['channels', CHANNEL_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = { channels: { [CHANNEL_NAME]: { title: EMPTY_STRING } } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['channels', CHANNEL_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = { channels: { [CHANNEL_NAME]: { title: TRUTHY_STRING } } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('channels-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { channels: { [CHANNEL_NAME]: {} } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['channels', CHANNEL_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n channels: { [CHANNEL_NAME]: { description: EMPTY_STRING } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['channels', CHANNEL_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n channels: { [CHANNEL_NAME]: { description: TRUTHY_STRING } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('channels-conversation-tags-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = {\n channels: { [CHANNEL_NAME]: { conversation: { tags: { [TAG_NAME]: {} } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['channels', CHANNEL_NAME, 'conversation', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = {\n channels: { [CHANNEL_NAME]: { conversation: { tags: { [TAG_NAME]: { title: EMPTY_STRING } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['channels', CHANNEL_NAME, 'conversation', 'tags', TAG_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = {\n channels: { [CHANNEL_NAME]: { conversation: { tags: { [TAG_NAME]: { title: TRUTHY_STRING } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('channels-conversation-tags-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = {\n channels: { [CHANNEL_NAME]: { conversation: { tags: { [TAG_NAME]: {} } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['channels', CHANNEL_NAME, 'conversation', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n channels: { [CHANNEL_NAME]: { conversation: { tags: { [TAG_NAME]: { description: EMPTY_STRING } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['channels', CHANNEL_NAME, 'conversation', 'tags', TAG_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n channels: { [CHANNEL_NAME]: { conversation: { tags: { [TAG_NAME]: { description: TRUTHY_STRING } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('channels-message-tags-should-have-a-title', (lint) => {\n test('missing title should trigger', async () => {\n // arrange\n const definition = {\n channels: { [CHANNEL_NAME]: { message: { tags: { [TAG_NAME]: {} } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['channels', CHANNEL_NAME, 'message', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('title')\n })\n\n test('empty title should trigger', async () => {\n // arrange\n const definition = {\n channels: { [CHANNEL_NAME]: { message: { tags: { [TAG_NAME]: { title: EMPTY_STRING } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['channels', CHANNEL_NAME, 'message', 'tags', TAG_NAME, 'title'])\n expect(results[0]?.message).toContain('title')\n })\n\n test('valid title should not trigger', async () => {\n // arrange\n const definition = {\n channels: { [CHANNEL_NAME]: { message: { tags: { [TAG_NAME]: { title: TRUTHY_STRING } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('channels-message-tags-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = {\n channels: { [CHANNEL_NAME]: { message: { tags: { [TAG_NAME]: {} } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['channels', CHANNEL_NAME, 'message', 'tags', TAG_NAME])\n expect(results[0]?.message).toContain('description')\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n channels: { [CHANNEL_NAME]: { message: { tags: { [TAG_NAME]: { description: EMPTY_STRING } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['channels', CHANNEL_NAME, 'message', 'tags', TAG_NAME, 'description'])\n expect(results[0]?.message).toContain('description')\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n channels: { [CHANNEL_NAME]: { message: { tags: { [TAG_NAME]: { description: TRUTHY_STRING } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('legacy-zui-title-should-be-removed', (lint) => {\n test.each(PARAM_NAMES)('legacy zui title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n actions: {\n [ACTION_NAME]: { input: { [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } }, schema: {} } },\n },\n configuration: {\n [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } },\n schema: {},\n },\n events: { [EVENT_NAME]: { [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } }, schema: {} } },\n channels: {\n [CHANNEL_NAME]: {\n messages: { [MESSAGE_TYPE]: { [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } }, schema: {} } },\n },\n },\n states: { [STATE_NAME]: { [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } }, schema: {} } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(5)\n expect(results[0]?.message).toContain('.title()')\n })\n})\n\ndescribeRule('legacy-zui-examples-should-be-removed', (lint) => {\n test.each(PARAM_NAMES)('legacy zui examples should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n actions: {\n [ACTION_NAME]: { input: { [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } }, schema: {} } },\n },\n configuration: {\n [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } },\n schema: {},\n },\n events: { [EVENT_NAME]: { [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } }, schema: {} } },\n channels: {\n [CHANNEL_NAME]: {\n messages: { [MESSAGE_TYPE]: { [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } }, schema: {} } },\n },\n },\n states: { [STATE_NAME]: { [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } }, schema: {} } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(5)\n expect(results[0]?.message).toContain('examples')\n })\n})\n\ndescribeRule('state-fields-should-have-title', (lint) => {\n test.each(PARAM_NAMES)('missing title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName, ZUI])\n })\n\n test.each(PARAM_NAMES)('empty title should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName, ZUI, 'title'])\n })\n\n test.each(PARAM_NAMES)('valid title should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('state-fields-must-have-description', (lint) => {\n test.each(PARAM_NAMES)('missing description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: {} } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName])\n })\n\n test.each(PARAM_NAMES)('empty description should trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n expect(results[0]?.path).toEqual(['states', STATE_NAME, 'schema', 'properties', paramName, 'description'])\n })\n\n test.each(PARAM_NAMES)('valid description should not trigger (%s)', async (paramName) => {\n // arrange\n const definition = {\n states: { [STATE_NAME]: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n\ndescribeRule('secrets-must-have-a-description', (lint) => {\n test('missing description should trigger', async () => {\n // arrange\n const definition = { secrets: { [SECRET_NAME]: {} } } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n })\n\n test('empty description should trigger', async () => {\n // arrange\n const definition = {\n secrets: { [SECRET_NAME]: { description: EMPTY_STRING } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(1)\n })\n\n test('valid description should not trigger', async () => {\n // arrange\n const definition = {\n secrets: { [SECRET_NAME]: { description: TRUTHY_STRING } },\n } as const satisfies PartialIntegration\n\n // act\n const results = await lint(definition)\n\n // assert\n expect(results).toHaveLength(0)\n })\n})\n"],
5
- "mappings": "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",
6
- "names": []
7
- }
@@ -1,383 +0,0 @@
1
- "use strict";
2
- var import_vitest = require("vitest");
3
- var import_interface = require("../rulesets/interface.ruleset");
4
- var import_common = require("./common");
5
- const describeRule = (0, import_common.createDescribeRule)()(import_interface.INTERFACE_RULESET);
6
- const EMPTY_STRING = "";
7
- const TRUTHY_STRING = "truthy";
8
- const ACTION_NAME = "actionName";
9
- const EVENT_NAME = "eventName";
10
- const PARAM_NAME = "paramName";
11
- const PROPERTIES_PARAM = "properties";
12
- const PARAM_NAMES = [PARAM_NAME, PROPERTIES_PARAM];
13
- const CHANNEL_NAME = "channelName";
14
- const ENTITY_NAME = "entityName";
15
- const MESSAGE_TYPE = "text";
16
- const ZUI = "x-zui";
17
- const LEGACY_ZUI = "ui";
18
- describeRule("action-inputparams-should-have-a-title", (lint) => {
19
- import_vitest.test.each(PARAM_NAMES)("missing title should trigger (%s)", async (paramName) => {
20
- const definition = {
21
- actions: { [ACTION_NAME]: { input: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } } }
22
- };
23
- const results = await lint(definition);
24
- (0, import_vitest.expect)(results).toHaveLength(1);
25
- (0, import_vitest.expect)(results[0]?.path).toEqual(["actions", ACTION_NAME, "input", "schema", "properties", paramName, ZUI]);
26
- (0, import_vitest.expect)(results[0]?.message).toContain("title");
27
- });
28
- import_vitest.test.each(PARAM_NAMES)("empty title should trigger (%s)", async (paramName) => {
29
- const definition = {
30
- actions: {
31
- [ACTION_NAME]: { input: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } } }
32
- }
33
- };
34
- const results = await lint(definition);
35
- (0, import_vitest.expect)(results).toHaveLength(1);
36
- (0, import_vitest.expect)(results[0]?.path).toEqual(["actions", ACTION_NAME, "input", "schema", "properties", paramName, ZUI, "title"]);
37
- (0, import_vitest.expect)(results[0]?.message).toContain("title");
38
- });
39
- import_vitest.test.each(PARAM_NAMES)("valid title should not trigger (%s)", async (paramName) => {
40
- const definition = {
41
- actions: {
42
- [ACTION_NAME]: { input: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } } }
43
- }
44
- };
45
- const results = await lint(definition);
46
- (0, import_vitest.expect)(results).toHaveLength(0);
47
- });
48
- });
49
- describeRule("action-inputparams-must-have-a-description", (lint) => {
50
- import_vitest.test.each(PARAM_NAMES)("missing description should trigger (%s)", async (paramName) => {
51
- const definition = {
52
- actions: { [ACTION_NAME]: { input: { schema: { properties: { [paramName]: {} } } } } }
53
- };
54
- const results = await lint(definition);
55
- (0, import_vitest.expect)(results).toHaveLength(1);
56
- (0, import_vitest.expect)(results[0]?.path).toEqual(["actions", ACTION_NAME, "input", "schema", "properties", paramName]);
57
- (0, import_vitest.expect)(results[0]?.message).toContain("description");
58
- });
59
- import_vitest.test.each(PARAM_NAMES)("empty description should trigger (%s)", async (paramName) => {
60
- const definition = {
61
- actions: {
62
- [ACTION_NAME]: { input: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } } }
63
- }
64
- };
65
- const results = await lint(definition);
66
- (0, import_vitest.expect)(results).toHaveLength(1);
67
- (0, import_vitest.expect)(results[0]?.path).toEqual([
68
- "actions",
69
- ACTION_NAME,
70
- "input",
71
- "schema",
72
- "properties",
73
- paramName,
74
- "description"
75
- ]);
76
- (0, import_vitest.expect)(results[0]?.message).toContain("description");
77
- });
78
- import_vitest.test.each(PARAM_NAMES)("valid description should not trigger (%s)", async (paramName) => {
79
- const definition = {
80
- actions: {
81
- [ACTION_NAME]: { input: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } } }
82
- }
83
- };
84
- const results = await lint(definition);
85
- (0, import_vitest.expect)(results).toHaveLength(0);
86
- });
87
- });
88
- describeRule("action-outputparams-should-have-a-title", (lint) => {
89
- import_vitest.test.each(PARAM_NAMES)("missing title should trigger (%s)", async (paramName) => {
90
- const definition = {
91
- actions: { [ACTION_NAME]: { output: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } } }
92
- };
93
- const results = await lint(definition);
94
- (0, import_vitest.expect)(results).toHaveLength(1);
95
- (0, import_vitest.expect)(results[0]?.path).toEqual(["actions", ACTION_NAME, "output", "schema", "properties", paramName, ZUI]);
96
- (0, import_vitest.expect)(results[0]?.message).toContain("title");
97
- });
98
- import_vitest.test.each(PARAM_NAMES)("empty title should trigger (%s)", async (paramName) => {
99
- const definition = {
100
- actions: {
101
- [ACTION_NAME]: { output: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } } }
102
- }
103
- };
104
- const results = await lint(definition);
105
- (0, import_vitest.expect)(results).toHaveLength(1);
106
- (0, import_vitest.expect)(results[0]?.path).toEqual([
107
- "actions",
108
- ACTION_NAME,
109
- "output",
110
- "schema",
111
- "properties",
112
- paramName,
113
- ZUI,
114
- "title"
115
- ]);
116
- (0, import_vitest.expect)(results[0]?.message).toContain("title");
117
- });
118
- import_vitest.test.each(PARAM_NAMES)("valid title should not trigger (%s)", async (paramName) => {
119
- const definition = {
120
- actions: {
121
- [ACTION_NAME]: { output: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } } }
122
- }
123
- };
124
- const results = await lint(definition);
125
- (0, import_vitest.expect)(results).toHaveLength(0);
126
- });
127
- });
128
- describeRule("action-outputparams-must-have-a-description", (lint) => {
129
- import_vitest.test.each(PARAM_NAMES)("missing description should trigger (%s)", async (paramName) => {
130
- const definition = {
131
- actions: { [ACTION_NAME]: { output: { schema: { properties: { [paramName]: {} } } } } }
132
- };
133
- const results = await lint(definition);
134
- (0, import_vitest.expect)(results).toHaveLength(1);
135
- (0, import_vitest.expect)(results[0]?.path).toEqual(["actions", ACTION_NAME, "output", "schema", "properties", paramName]);
136
- (0, import_vitest.expect)(results[0]?.message).toContain("description");
137
- });
138
- import_vitest.test.each(PARAM_NAMES)("empty description should trigger (%s)", async (paramName) => {
139
- const definition = {
140
- actions: {
141
- [ACTION_NAME]: { output: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } } }
142
- }
143
- };
144
- const results = await lint(definition);
145
- (0, import_vitest.expect)(results).toHaveLength(1);
146
- (0, import_vitest.expect)(results[0]?.path).toEqual([
147
- "actions",
148
- ACTION_NAME,
149
- "output",
150
- "schema",
151
- "properties",
152
- paramName,
153
- "description"
154
- ]);
155
- (0, import_vitest.expect)(results[0]?.message).toContain("description");
156
- });
157
- import_vitest.test.each(PARAM_NAMES)("valid description should not trigger (%s)", async (paramName) => {
158
- const definition = {
159
- actions: {
160
- [ACTION_NAME]: { output: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } } }
161
- }
162
- };
163
- const results = await lint(definition);
164
- (0, import_vitest.expect)(results).toHaveLength(0);
165
- });
166
- });
167
- describeRule("event-outputparams-should-have-title", (lint) => {
168
- import_vitest.test.each(PARAM_NAMES)("missing title should trigger (%s)", async (paramName) => {
169
- const definition = {
170
- events: { [EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } }
171
- };
172
- const results = await lint(definition);
173
- (0, import_vitest.expect)(results).toHaveLength(1);
174
- (0, import_vitest.expect)(results[0]?.path).toEqual(["events", EVENT_NAME, "schema", "properties", paramName, ZUI]);
175
- (0, import_vitest.expect)(results[0]?.message).toContain("title");
176
- });
177
- import_vitest.test.each(PARAM_NAMES)("empty title should trigger (%s)", async (paramName) => {
178
- const definition = {
179
- events: {
180
- [EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } }
181
- }
182
- };
183
- const results = await lint(definition);
184
- (0, import_vitest.expect)(results).toHaveLength(1);
185
- (0, import_vitest.expect)(results[0]?.path).toEqual(["events", EVENT_NAME, "schema", "properties", paramName, ZUI, "title"]);
186
- (0, import_vitest.expect)(results[0]?.message).toContain("title");
187
- });
188
- import_vitest.test.each(PARAM_NAMES)("valid title should not trigger (%s)", async (paramName) => {
189
- const definition = {
190
- events: {
191
- [EVENT_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } }
192
- }
193
- };
194
- const results = await lint(definition);
195
- (0, import_vitest.expect)(results).toHaveLength(0);
196
- });
197
- });
198
- describeRule("event-outputparams-must-have-description", (lint) => {
199
- import_vitest.test.each(PARAM_NAMES)("missing description should trigger (%s)", async (paramName) => {
200
- const definition = {
201
- events: { [EVENT_NAME]: { schema: { properties: { [paramName]: {} } } } }
202
- };
203
- const results = await lint(definition);
204
- (0, import_vitest.expect)(results).toHaveLength(1);
205
- (0, import_vitest.expect)(results[0]?.path).toEqual(["events", EVENT_NAME, "schema", "properties", paramName]);
206
- (0, import_vitest.expect)(results[0]?.message).toContain("description");
207
- });
208
- import_vitest.test.each(PARAM_NAMES)("empty description should trigger (%s)", async (paramName) => {
209
- const definition = {
210
- events: {
211
- [EVENT_NAME]: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } }
212
- }
213
- };
214
- const results = await lint(definition);
215
- (0, import_vitest.expect)(results).toHaveLength(1);
216
- (0, import_vitest.expect)(results[0]?.path).toEqual(["events", EVENT_NAME, "schema", "properties", paramName, "description"]);
217
- (0, import_vitest.expect)(results[0]?.message).toContain("description");
218
- });
219
- import_vitest.test.each(PARAM_NAMES)("valid description should not trigger (%s)", async (paramName) => {
220
- const definition = {
221
- events: {
222
- [EVENT_NAME]: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } }
223
- }
224
- };
225
- const results = await lint(definition);
226
- (0, import_vitest.expect)(results).toHaveLength(0);
227
- });
228
- });
229
- describeRule("legacy-zui-title-should-be-removed", (lint) => {
230
- import_vitest.test.each(PARAM_NAMES)("legacy zui title should trigger (%s)", async (paramName) => {
231
- const definition = {
232
- actions: {
233
- [ACTION_NAME]: { input: { [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } }, schema: {} } }
234
- },
235
- events: { [EVENT_NAME]: { [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } }, schema: {} } },
236
- channels: {
237
- [CHANNEL_NAME]: {
238
- messages: { [MESSAGE_TYPE]: { [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } }, schema: {} } }
239
- }
240
- },
241
- entities: { [ENTITY_NAME]: { [LEGACY_ZUI]: { [paramName]: { title: TRUTHY_STRING } }, schema: {} } }
242
- };
243
- const results = await lint(definition);
244
- (0, import_vitest.expect)(results).toHaveLength(4);
245
- (0, import_vitest.expect)(results[0]?.message).toContain(".title()");
246
- });
247
- });
248
- describeRule("legacy-zui-examples-should-be-removed", (lint) => {
249
- import_vitest.test.each(PARAM_NAMES)("legacy zui examples should trigger (%s)", async (paramName) => {
250
- const definition = {
251
- actions: {
252
- [ACTION_NAME]: { input: { [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } }, schema: {} } }
253
- },
254
- events: { [EVENT_NAME]: { [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } }, schema: {} } },
255
- channels: {
256
- [CHANNEL_NAME]: {
257
- messages: { [MESSAGE_TYPE]: { [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } }, schema: {} } }
258
- }
259
- },
260
- entities: { [ENTITY_NAME]: { [LEGACY_ZUI]: { [paramName]: { examples: [TRUTHY_STRING] } }, schema: {} } }
261
- };
262
- const results = await lint(definition);
263
- (0, import_vitest.expect)(results).toHaveLength(4);
264
- (0, import_vitest.expect)(results[0]?.message).toContain("examples");
265
- });
266
- });
267
- describeRule("entities-should-have-a-title", (lint) => {
268
- (0, import_vitest.test)("missing title should trigger", async () => {
269
- const definition = {
270
- entities: { [ENTITY_NAME]: {} }
271
- };
272
- const results = await lint(definition);
273
- (0, import_vitest.expect)(results).toHaveLength(1);
274
- (0, import_vitest.expect)(results[0]?.path).toEqual(["entities", ENTITY_NAME]);
275
- (0, import_vitest.expect)(results[0]?.message).toContain("title");
276
- });
277
- (0, import_vitest.test)("empty title should trigger", async () => {
278
- const definition = {
279
- entities: { [ENTITY_NAME]: { title: EMPTY_STRING } }
280
- };
281
- const results = await lint(definition);
282
- (0, import_vitest.expect)(results).toHaveLength(1);
283
- (0, import_vitest.expect)(results[0]?.path).toEqual(["entities", ENTITY_NAME, "title"]);
284
- (0, import_vitest.expect)(results[0]?.message).toContain("title");
285
- });
286
- (0, import_vitest.test)("valid title should not trigger", async () => {
287
- const definition = {
288
- entities: { [ENTITY_NAME]: { title: TRUTHY_STRING } }
289
- };
290
- const results = await lint(definition);
291
- (0, import_vitest.expect)(results).toHaveLength(0);
292
- });
293
- });
294
- describeRule("entities-must-have-a-description", (lint) => {
295
- (0, import_vitest.test)("missing description should trigger", async () => {
296
- const definition = {
297
- entities: { [ENTITY_NAME]: {} }
298
- };
299
- const results = await lint(definition);
300
- (0, import_vitest.expect)(results).toHaveLength(1);
301
- (0, import_vitest.expect)(results[0]?.path).toEqual(["entities", ENTITY_NAME]);
302
- (0, import_vitest.expect)(results[0]?.message).toContain("description");
303
- });
304
- (0, import_vitest.test)("empty description should trigger", async () => {
305
- const definition = {
306
- entities: { [ENTITY_NAME]: { description: EMPTY_STRING } }
307
- };
308
- const results = await lint(definition);
309
- (0, import_vitest.expect)(results).toHaveLength(1);
310
- (0, import_vitest.expect)(results[0]?.path).toEqual(["entities", ENTITY_NAME, "description"]);
311
- (0, import_vitest.expect)(results[0]?.message).toContain("description");
312
- });
313
- (0, import_vitest.test)("valid description should not trigger", async () => {
314
- const definition = {
315
- entities: { [ENTITY_NAME]: { description: TRUTHY_STRING } }
316
- };
317
- const results = await lint(definition);
318
- (0, import_vitest.expect)(results).toHaveLength(0);
319
- });
320
- });
321
- describeRule("entity-fields-should-have-a-title", (lint) => {
322
- import_vitest.test.each(PARAM_NAMES)("missing title should trigger (%s)", async (paramName) => {
323
- const definition = {
324
- entities: { [ENTITY_NAME]: { schema: { properties: { [paramName]: { [ZUI]: {} } } } } }
325
- };
326
- const results = await lint(definition);
327
- (0, import_vitest.expect)(results).toHaveLength(1);
328
- (0, import_vitest.expect)(results[0]?.path).toEqual(["entities", ENTITY_NAME, "schema", "properties", paramName, ZUI]);
329
- (0, import_vitest.expect)(results[0]?.message).toContain("title");
330
- });
331
- import_vitest.test.each(PARAM_NAMES)("empty title should trigger (%s)", async (paramName) => {
332
- const definition = {
333
- entities: {
334
- [ENTITY_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: EMPTY_STRING } } } } }
335
- }
336
- };
337
- const results = await lint(definition);
338
- (0, import_vitest.expect)(results).toHaveLength(1);
339
- (0, import_vitest.expect)(results[0]?.path).toEqual(["entities", ENTITY_NAME, "schema", "properties", paramName, ZUI, "title"]);
340
- (0, import_vitest.expect)(results[0]?.message).toContain("title");
341
- });
342
- import_vitest.test.each(PARAM_NAMES)("valid title should not trigger (%s)", async (paramName) => {
343
- const definition = {
344
- entities: {
345
- [ENTITY_NAME]: { schema: { properties: { [paramName]: { [ZUI]: { title: TRUTHY_STRING } } } } }
346
- }
347
- };
348
- const results = await lint(definition);
349
- (0, import_vitest.expect)(results).toHaveLength(0);
350
- });
351
- });
352
- describeRule("entity-fields-must-have-a-description", (lint) => {
353
- import_vitest.test.each(PARAM_NAMES)("missing description should trigger (%s)", async (paramName) => {
354
- const definition = {
355
- entities: { [ENTITY_NAME]: { schema: { properties: { [paramName]: {} } } } }
356
- };
357
- const results = await lint(definition);
358
- (0, import_vitest.expect)(results).toHaveLength(1);
359
- (0, import_vitest.expect)(results[0]?.path).toEqual(["entities", ENTITY_NAME, "schema", "properties", paramName]);
360
- (0, import_vitest.expect)(results[0]?.message).toContain("description");
361
- });
362
- import_vitest.test.each(PARAM_NAMES)("empty description should trigger (%s)", async (paramName) => {
363
- const definition = {
364
- entities: {
365
- [ENTITY_NAME]: { schema: { properties: { [paramName]: { description: EMPTY_STRING } } } }
366
- }
367
- };
368
- const results = await lint(definition);
369
- (0, import_vitest.expect)(results).toHaveLength(1);
370
- (0, import_vitest.expect)(results[0]?.path).toEqual(["entities", ENTITY_NAME, "schema", "properties", paramName, "description"]);
371
- (0, import_vitest.expect)(results[0]?.message).toContain("description");
372
- });
373
- import_vitest.test.each(PARAM_NAMES)("valid description should not trigger (%s)", async (paramName) => {
374
- const definition = {
375
- entities: {
376
- [ENTITY_NAME]: { schema: { properties: { [paramName]: { description: TRUTHY_STRING } } } }
377
- }
378
- };
379
- const results = await lint(definition);
380
- (0, import_vitest.expect)(results).toHaveLength(0);
381
- });
382
- });
383
- //# sourceMappingURL=interface.ruleset.test.js.map