yuzuha 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (692) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/README.md +22 -14
  3. package/VERSIONING.md +56 -7
  4. package/benchmarks/parser.mjs +1 -1
  5. package/benchmarks/run.mjs +3 -2
  6. package/dist/canvas/card.d.ts +10 -0
  7. package/dist/canvas/card.d.ts.map +1 -0
  8. package/dist/canvas/card.js +11 -0
  9. package/dist/canvas/card.js.map +1 -0
  10. package/dist/canvas.d.ts +30 -9
  11. package/dist/canvas.d.ts.map +1 -1
  12. package/dist/canvas.js +64 -9
  13. package/dist/canvas.js.map +1 -1
  14. package/dist/cli/config.d.ts.map +1 -1
  15. package/dist/cli/config.js +2 -1
  16. package/dist/cli/config.js.map +1 -1
  17. package/dist/cli/lint.d.ts.map +1 -1
  18. package/dist/cli/lint.js +1 -2
  19. package/dist/cli/lint.js.map +1 -1
  20. package/dist/cli/main.d.ts.map +1 -1
  21. package/dist/cli/main.js +8 -9
  22. package/dist/cli/main.js.map +1 -1
  23. package/dist/cli/scaffold.js +1 -1
  24. package/dist/cli/scaffold.js.map +1 -1
  25. package/dist/cli/scenarios.d.ts.map +1 -1
  26. package/dist/cli/scenarios.js +2 -1
  27. package/dist/cli/scenarios.js.map +1 -1
  28. package/dist/commands/context.d.ts.map +1 -1
  29. package/dist/commands/context.js +7 -2
  30. package/dist/commands/context.js.map +1 -1
  31. package/dist/domain/resource-batches.d.ts +6 -0
  32. package/dist/domain/resource-batches.d.ts.map +1 -1
  33. package/dist/domain/resource-batches.js +31 -0
  34. package/dist/domain/resource-batches.js.map +1 -1
  35. package/dist/framework/bot.d.ts +9 -5
  36. package/dist/framework/bot.d.ts.map +1 -1
  37. package/dist/framework/bot.js +51 -27
  38. package/dist/framework/bot.js.map +1 -1
  39. package/dist/framework/command-registry.d.ts +8 -7
  40. package/dist/framework/command-registry.d.ts.map +1 -1
  41. package/dist/framework/command-registry.js +14 -11
  42. package/dist/framework/command-registry.js.map +1 -1
  43. package/dist/framework/options.d.ts +3 -3
  44. package/dist/framework/options.d.ts.map +1 -1
  45. package/dist/framework/options.js.map +1 -1
  46. package/dist/{scripting → functions}/builtins/arguments.d.ts.map +1 -1
  47. package/dist/{scripting → functions}/builtins/arguments.js.map +1 -1
  48. package/dist/functions/builtins/canvas.d.ts +2 -0
  49. package/dist/functions/builtins/canvas.d.ts.map +1 -0
  50. package/dist/{scripting → functions}/builtins/canvas.js +1 -1
  51. package/dist/{scripting → functions}/builtins/canvas.js.map +1 -1
  52. package/dist/functions/builtins/context.d.ts +2 -0
  53. package/dist/functions/builtins/context.d.ts.map +1 -0
  54. package/dist/{scripting → functions}/builtins/context.js.map +1 -1
  55. package/dist/{scripting → functions}/builtins/definition.d.ts +1 -1
  56. package/dist/functions/builtins/definition.d.ts.map +1 -0
  57. package/dist/functions/builtins/definition.js.map +1 -0
  58. package/dist/functions/builtins/embeds.d.ts +3 -0
  59. package/dist/{scripting → functions}/builtins/embeds.d.ts.map +1 -1
  60. package/dist/{scripting → functions}/builtins/embeds.js +1 -1
  61. package/dist/functions/builtins/embeds.js.map +1 -0
  62. package/dist/functions/builtins/events.d.ts +2 -0
  63. package/dist/functions/builtins/events.d.ts.map +1 -0
  64. package/dist/{scripting → functions}/builtins/events.js.map +1 -1
  65. package/dist/functions/builtins/flow.d.ts +2 -0
  66. package/dist/functions/builtins/flow.d.ts.map +1 -0
  67. package/dist/{scripting → functions}/builtins/flow.js +2 -2
  68. package/dist/functions/builtins/flow.js.map +1 -0
  69. package/dist/functions/builtins/guards.d.ts +2 -0
  70. package/dist/functions/builtins/guards.d.ts.map +1 -0
  71. package/dist/{scripting → functions}/builtins/guards.js +1 -1
  72. package/dist/functions/builtins/guards.js.map +1 -0
  73. package/dist/functions/builtins/http.d.ts +2 -0
  74. package/dist/functions/builtins/http.d.ts.map +1 -0
  75. package/dist/{scripting → functions}/builtins/http.js +2 -2
  76. package/dist/functions/builtins/http.js.map +1 -0
  77. package/dist/functions/builtins/index.d.ts +5 -0
  78. package/dist/functions/builtins/index.d.ts.map +1 -0
  79. package/dist/functions/builtins/index.js.map +1 -0
  80. package/dist/functions/builtins/language/array-callbacks.d.ts +2 -0
  81. package/dist/functions/builtins/language/array-callbacks.d.ts.map +1 -0
  82. package/dist/{scripting → functions}/builtins/language/array-callbacks.js +1 -1
  83. package/dist/{scripting → functions}/builtins/language/array-callbacks.js.map +1 -1
  84. package/dist/functions/builtins/language/arrays.d.ts +2 -0
  85. package/dist/functions/builtins/language/arrays.d.ts.map +1 -0
  86. package/dist/{scripting → functions}/builtins/language/arrays.js +1 -1
  87. package/dist/{scripting → functions}/builtins/language/arrays.js.map +1 -1
  88. package/dist/{scripting → functions}/builtins/language/common.d.ts.map +1 -1
  89. package/dist/{scripting → functions}/builtins/language/common.js.map +1 -1
  90. package/dist/functions/builtins/language/decimals.d.ts +2 -0
  91. package/dist/functions/builtins/language/decimals.d.ts.map +1 -0
  92. package/dist/{scripting → functions}/builtins/language/decimals.js.map +1 -1
  93. package/dist/functions/builtins/language/index.d.ts +3 -0
  94. package/dist/functions/builtins/language/index.d.ts.map +1 -0
  95. package/dist/functions/builtins/language/index.js.map +1 -0
  96. package/dist/functions/builtins/language/loops.d.ts +4 -0
  97. package/dist/{scripting → functions}/builtins/language/loops.d.ts.map +1 -1
  98. package/dist/{scripting → functions}/builtins/language/loops.js +3 -3
  99. package/dist/{scripting → functions}/builtins/language/loops.js.map +1 -1
  100. package/dist/functions/builtins/language/numbers.d.ts +2 -0
  101. package/dist/functions/builtins/language/numbers.d.ts.map +1 -0
  102. package/dist/{scripting → functions}/builtins/language/numbers.js.map +1 -1
  103. package/dist/{scripting → functions}/builtins/language/objects.d.ts +1 -1
  104. package/dist/{scripting → functions}/builtins/language/objects.d.ts.map +1 -1
  105. package/dist/{scripting → functions}/builtins/language/objects.js.map +1 -1
  106. package/dist/functions/builtins/language/regex.d.ts +2 -0
  107. package/dist/functions/builtins/language/regex.d.ts.map +1 -0
  108. package/dist/{scripting → functions}/builtins/language/regex.js +1 -1
  109. package/dist/{scripting → functions}/builtins/language/regex.js.map +1 -1
  110. package/dist/functions/builtins/language/sort.d.ts +2 -0
  111. package/dist/functions/builtins/language/sort.d.ts.map +1 -0
  112. package/dist/{scripting → functions}/builtins/language/sort.js.map +1 -1
  113. package/dist/{scripting → functions}/builtins/language/state.d.ts +1 -1
  114. package/dist/{scripting → functions}/builtins/language/state.d.ts.map +1 -1
  115. package/dist/{scripting → functions}/builtins/language/state.js.map +1 -1
  116. package/dist/functions/builtins/language/texts.d.ts +2 -0
  117. package/dist/functions/builtins/language/texts.d.ts.map +1 -0
  118. package/dist/{scripting → functions}/builtins/language/texts.js.map +1 -1
  119. package/dist/functions/builtins/messages.d.ts +2 -0
  120. package/dist/functions/builtins/messages.d.ts.map +1 -0
  121. package/dist/{scripting → functions}/builtins/messages.js.map +1 -1
  122. package/dist/functions/builtins/moderation.d.ts +2 -0
  123. package/dist/functions/builtins/moderation.d.ts.map +1 -0
  124. package/dist/{scripting → functions}/builtins/moderation.js.map +1 -1
  125. package/dist/functions/builtins/native-channels.d.ts +2 -0
  126. package/dist/functions/builtins/native-channels.d.ts.map +1 -0
  127. package/dist/{scripting → functions}/builtins/native-channels.js.map +1 -1
  128. package/dist/functions/builtins/native-collectors.d.ts +2 -0
  129. package/dist/functions/builtins/native-collectors.d.ts.map +1 -0
  130. package/dist/{scripting → functions}/builtins/native-collectors.js.map +1 -1
  131. package/dist/functions/builtins/native-expressions.d.ts +2 -0
  132. package/dist/functions/builtins/native-expressions.d.ts.map +1 -0
  133. package/dist/{scripting → functions}/builtins/native-expressions.js.map +1 -1
  134. package/dist/functions/builtins/native-invites.d.ts +2 -0
  135. package/dist/functions/builtins/native-invites.d.ts.map +1 -0
  136. package/dist/{scripting → functions}/builtins/native-invites.js.map +1 -1
  137. package/dist/functions/builtins/native-messages.d.ts +2 -0
  138. package/dist/functions/builtins/native-messages.d.ts.map +1 -0
  139. package/dist/{scripting → functions}/builtins/native-messages.js.map +1 -1
  140. package/dist/functions/builtins/native-roles.d.ts +2 -0
  141. package/dist/functions/builtins/native-roles.d.ts.map +1 -0
  142. package/dist/{scripting → functions}/builtins/native-roles.js.map +1 -1
  143. package/dist/functions/builtins/native-threads.d.ts +2 -0
  144. package/dist/functions/builtins/native-threads.d.ts.map +1 -0
  145. package/dist/{scripting → functions}/builtins/native-threads.js.map +1 -1
  146. package/dist/functions/builtins/native-users.d.ts +2 -0
  147. package/dist/functions/builtins/native-users.d.ts.map +1 -0
  148. package/dist/{scripting → functions}/builtins/native-users.js.map +1 -1
  149. package/dist/functions/builtins/native-webhooks.d.ts +2 -0
  150. package/dist/functions/builtins/native-webhooks.d.ts.map +1 -0
  151. package/dist/{scripting → functions}/builtins/native-webhooks.js.map +1 -1
  152. package/dist/{scripting → functions}/builtins/payload.d.ts +2 -2
  153. package/dist/functions/builtins/payload.d.ts.map +1 -0
  154. package/dist/{scripting → functions}/builtins/payload.js +1 -1
  155. package/dist/functions/builtins/payload.js.map +1 -0
  156. package/dist/functions/builtins/resource-extras.d.ts +2 -0
  157. package/dist/functions/builtins/resource-extras.d.ts.map +1 -0
  158. package/dist/{scripting → functions}/builtins/resource-extras.js.map +1 -1
  159. package/dist/functions/builtins/schedule.d.ts +2 -0
  160. package/dist/functions/builtins/schedule.d.ts.map +1 -0
  161. package/dist/{scripting → functions}/builtins/schedule.js.map +1 -1
  162. package/dist/functions/builtins/storage.d.ts +2 -0
  163. package/dist/functions/builtins/storage.d.ts.map +1 -0
  164. package/dist/{scripting → functions}/builtins/storage.js.map +1 -1
  165. package/dist/functions/builtins/values.d.ts +2 -0
  166. package/dist/functions/builtins/values.d.ts.map +1 -0
  167. package/dist/{scripting → functions}/builtins/values.js +1 -1
  168. package/dist/functions/builtins/values.js.map +1 -0
  169. package/dist/functions/runtime/ast.d.ts.map +1 -0
  170. package/dist/functions/runtime/ast.js.map +1 -0
  171. package/dist/{scripting → functions/runtime}/canvas-execution.d.ts +1 -1
  172. package/dist/functions/runtime/canvas-execution.d.ts.map +1 -0
  173. package/dist/functions/runtime/canvas-execution.js.map +1 -0
  174. package/dist/functions/runtime/control-flow.d.ts.map +1 -0
  175. package/dist/functions/runtime/control-flow.js.map +1 -0
  176. package/dist/{scripting → functions/runtime}/evaluator.d.ts +1 -1
  177. package/dist/functions/runtime/evaluator.d.ts.map +1 -0
  178. package/dist/{scripting → functions/runtime}/evaluator.js +1 -1
  179. package/dist/functions/runtime/evaluator.js.map +1 -0
  180. package/dist/functions/runtime/limits.d.ts.map +1 -0
  181. package/dist/{scripting → functions/runtime}/limits.js +1 -1
  182. package/dist/functions/runtime/limits.js.map +1 -0
  183. package/dist/functions/runtime/parser.d.ts.map +1 -0
  184. package/dist/{scripting → functions/runtime}/parser.js +1 -1
  185. package/dist/functions/runtime/parser.js.map +1 -0
  186. package/dist/functions/runtime/regex.d.ts.map +1 -0
  187. package/dist/{scripting → functions/runtime}/regex.js +1 -1
  188. package/dist/functions/runtime/regex.js.map +1 -0
  189. package/dist/functions/runtime/registry.d.ts.map +1 -0
  190. package/dist/{scripting → functions/runtime}/registry.js +1 -1
  191. package/dist/functions/runtime/registry.js.map +1 -0
  192. package/dist/{scripting → functions/runtime}/runtime.d.ts +3 -1
  193. package/dist/functions/runtime/runtime.d.ts.map +1 -0
  194. package/dist/{scripting → functions/runtime}/runtime.js +3 -0
  195. package/dist/functions/runtime/runtime.js.map +1 -0
  196. package/dist/{scripting → functions/runtime}/types.d.ts +1 -1
  197. package/dist/functions/runtime/types.d.ts.map +1 -0
  198. package/dist/functions/runtime/types.js.map +1 -0
  199. package/dist/functions/runtime/values.d.ts.map +1 -0
  200. package/dist/functions/runtime/values.js.map +1 -0
  201. package/dist/functions.d.ts +19 -8
  202. package/dist/functions.d.ts.map +1 -1
  203. package/dist/functions.js +18 -6
  204. package/dist/functions.js.map +1 -1
  205. package/dist/index.d.ts +7 -2
  206. package/dist/index.d.ts.map +1 -1
  207. package/dist/index.js.map +1 -1
  208. package/dist/infrastructure/canvas/napi.d.ts +4 -0
  209. package/dist/infrastructure/canvas/napi.d.ts.map +1 -0
  210. package/dist/infrastructure/canvas/napi.js +17 -0
  211. package/dist/infrastructure/canvas/napi.js.map +1 -0
  212. package/dist/infrastructure/fluxer/resources/cache.d.ts +4 -0
  213. package/dist/infrastructure/fluxer/resources/cache.d.ts.map +1 -0
  214. package/dist/infrastructure/fluxer/resources/cache.js +68 -0
  215. package/dist/infrastructure/fluxer/resources/cache.js.map +1 -0
  216. package/dist/infrastructure/fluxer/resources/channels.d.ts +3 -2
  217. package/dist/infrastructure/fluxer/resources/channels.d.ts.map +1 -1
  218. package/dist/infrastructure/fluxer/resources/channels.js +54 -2
  219. package/dist/infrastructure/fluxer/resources/channels.js.map +1 -1
  220. package/dist/infrastructure/fluxer/resources/collectors.d.ts.map +1 -1
  221. package/dist/infrastructure/fluxer/resources/collectors.js +86 -4
  222. package/dist/infrastructure/fluxer/resources/collectors.js.map +1 -1
  223. package/dist/infrastructure/fluxer/resources/expressions.d.ts.map +1 -1
  224. package/dist/infrastructure/fluxer/resources/expressions.js +8 -1
  225. package/dist/infrastructure/fluxer/resources/expressions.js.map +1 -1
  226. package/dist/infrastructure/fluxer/resources/gateway.d.ts +4 -0
  227. package/dist/infrastructure/fluxer/resources/gateway.d.ts.map +1 -0
  228. package/dist/infrastructure/fluxer/resources/gateway.js +31 -0
  229. package/dist/infrastructure/fluxer/resources/gateway.js.map +1 -0
  230. package/dist/infrastructure/fluxer/resources/instance.d.ts +4 -0
  231. package/dist/infrastructure/fluxer/resources/instance.d.ts.map +1 -0
  232. package/dist/infrastructure/fluxer/resources/instance.js +96 -0
  233. package/dist/infrastructure/fluxer/resources/instance.js.map +1 -0
  234. package/dist/infrastructure/fluxer/resources/messages.d.ts +3 -1
  235. package/dist/infrastructure/fluxer/resources/messages.d.ts.map +1 -1
  236. package/dist/infrastructure/fluxer/resources/messages.js +91 -36
  237. package/dist/infrastructure/fluxer/resources/messages.js.map +1 -1
  238. package/dist/infrastructure/fluxer/resources/roles.d.ts.map +1 -1
  239. package/dist/infrastructure/fluxer/resources/roles.js +8 -0
  240. package/dist/infrastructure/fluxer/resources/roles.js.map +1 -1
  241. package/dist/infrastructure/fluxer/resources/self.d.ts +4 -0
  242. package/dist/infrastructure/fluxer/resources/self.d.ts.map +1 -0
  243. package/dist/infrastructure/fluxer/resources/self.js +36 -0
  244. package/dist/infrastructure/fluxer/resources/self.js.map +1 -0
  245. package/dist/infrastructure/fluxer/resources/threads.d.ts.map +1 -1
  246. package/dist/infrastructure/fluxer/resources/threads.js +15 -0
  247. package/dist/infrastructure/fluxer/resources/threads.js.map +1 -1
  248. package/dist/infrastructure/fluxer/resources/users.d.ts +5 -2
  249. package/dist/infrastructure/fluxer/resources/users.d.ts.map +1 -1
  250. package/dist/infrastructure/fluxer/resources/users.js +36 -3
  251. package/dist/infrastructure/fluxer/resources/users.js.map +1 -1
  252. package/dist/infrastructure/fluxer/resources/webhooks.d.ts.map +1 -1
  253. package/dist/infrastructure/fluxer/resources/webhooks.js +9 -0
  254. package/dist/infrastructure/fluxer/resources/webhooks.js.map +1 -1
  255. package/dist/infrastructure/fluxer/resources.d.ts +4 -0
  256. package/dist/infrastructure/fluxer/resources.d.ts.map +1 -1
  257. package/dist/infrastructure/fluxer/resources.js +12 -0
  258. package/dist/infrastructure/fluxer/resources.js.map +1 -1
  259. package/dist/ports/resources/cache.d.ts +74 -0
  260. package/dist/ports/resources/cache.d.ts.map +1 -0
  261. package/dist/ports/resources/cache.js +2 -0
  262. package/dist/ports/resources/cache.js.map +1 -0
  263. package/dist/ports/resources/channels.d.ts +17 -0
  264. package/dist/ports/resources/channels.d.ts.map +1 -1
  265. package/dist/ports/resources/channels.js.map +1 -1
  266. package/dist/ports/resources/collectors.d.ts +18 -0
  267. package/dist/ports/resources/collectors.d.ts.map +1 -1
  268. package/dist/ports/resources/collectors.js.map +1 -1
  269. package/dist/ports/resources/common.d.ts +2 -0
  270. package/dist/ports/resources/common.d.ts.map +1 -1
  271. package/dist/ports/resources/common.js.map +1 -1
  272. package/dist/ports/resources/expressions.d.ts +8 -0
  273. package/dist/ports/resources/expressions.d.ts.map +1 -1
  274. package/dist/ports/resources/expressions.js.map +1 -1
  275. package/dist/ports/resources/gateway.d.ts +48 -0
  276. package/dist/ports/resources/gateway.d.ts.map +1 -0
  277. package/dist/ports/resources/gateway.js +2 -0
  278. package/dist/ports/resources/gateway.js.map +1 -0
  279. package/dist/ports/resources/instance.d.ts +101 -0
  280. package/dist/ports/resources/instance.d.ts.map +1 -0
  281. package/dist/ports/resources/instance.js +2 -0
  282. package/dist/ports/resources/instance.js.map +1 -0
  283. package/dist/ports/resources/messages.d.ts +27 -0
  284. package/dist/ports/resources/messages.d.ts.map +1 -1
  285. package/dist/ports/resources/messages.js.map +1 -1
  286. package/dist/ports/resources/roles.d.ts +6 -0
  287. package/dist/ports/resources/roles.d.ts.map +1 -1
  288. package/dist/ports/resources/roles.js.map +1 -1
  289. package/dist/ports/resources/self.d.ts +30 -0
  290. package/dist/ports/resources/self.d.ts.map +1 -0
  291. package/dist/ports/resources/self.js +2 -0
  292. package/dist/ports/resources/self.js.map +1 -0
  293. package/dist/ports/resources/threads.d.ts +16 -0
  294. package/dist/ports/resources/threads.d.ts.map +1 -1
  295. package/dist/ports/resources/threads.js.map +1 -1
  296. package/dist/ports/resources/users.d.ts +30 -0
  297. package/dist/ports/resources/users.d.ts.map +1 -1
  298. package/dist/ports/resources/users.js.map +1 -1
  299. package/dist/ports/resources/webhooks.d.ts +5 -0
  300. package/dist/ports/resources/webhooks.d.ts.map +1 -1
  301. package/dist/ports/resources/webhooks.js.map +1 -1
  302. package/dist/ports/resources.d.ts +8 -0
  303. package/dist/ports/resources.d.ts.map +1 -1
  304. package/dist/ports/resources.js.map +1 -1
  305. package/dist/ports/script-engine.d.ts +45 -0
  306. package/dist/ports/script-engine.d.ts.map +1 -0
  307. package/dist/ports/script-engine.js +2 -0
  308. package/dist/ports/script-engine.js.map +1 -0
  309. package/dist/sdk/builders.d.ts +2 -0
  310. package/dist/sdk/builders.d.ts.map +1 -0
  311. package/dist/sdk/builders.js +2 -0
  312. package/dist/sdk/builders.js.map +1 -0
  313. package/dist/sdk/client.d.ts +2 -0
  314. package/dist/sdk/client.d.ts.map +1 -0
  315. package/dist/sdk/client.js +2 -0
  316. package/dist/sdk/client.js.map +1 -0
  317. package/dist/sdk/cluster.d.ts +2 -0
  318. package/dist/sdk/cluster.d.ts.map +1 -0
  319. package/dist/sdk/cluster.js +2 -0
  320. package/dist/sdk/cluster.js.map +1 -0
  321. package/dist/sdk/collection.d.ts +2 -0
  322. package/dist/sdk/collection.d.ts.map +1 -0
  323. package/dist/sdk/collection.js +2 -0
  324. package/dist/sdk/collection.js.map +1 -0
  325. package/dist/sdk/errors.d.ts +2 -0
  326. package/dist/sdk/errors.d.ts.map +1 -0
  327. package/dist/sdk/errors.js +2 -0
  328. package/dist/sdk/errors.js.map +1 -0
  329. package/dist/sdk/internal.d.ts +2 -0
  330. package/dist/sdk/internal.d.ts.map +1 -0
  331. package/dist/sdk/internal.js +2 -0
  332. package/dist/sdk/internal.js.map +1 -0
  333. package/dist/sdk/message.d.ts +2 -0
  334. package/dist/sdk/message.d.ts.map +1 -0
  335. package/dist/sdk/message.js +2 -0
  336. package/dist/sdk/message.js.map +1 -0
  337. package/dist/sdk/rest/request-manager.d.ts +2 -0
  338. package/dist/sdk/rest/request-manager.d.ts.map +1 -0
  339. package/dist/sdk/rest/request-manager.js +2 -0
  340. package/dist/sdk/rest/request-manager.js.map +1 -0
  341. package/dist/sdk/rest.d.ts +2 -0
  342. package/dist/sdk/rest.d.ts.map +1 -0
  343. package/dist/sdk/rest.js +2 -0
  344. package/dist/sdk/rest.js.map +1 -0
  345. package/dist/sdk/sharding.d.ts +2 -0
  346. package/dist/sdk/sharding.d.ts.map +1 -0
  347. package/dist/sdk/sharding.js +2 -0
  348. package/dist/sdk/sharding.js.map +1 -0
  349. package/dist/sdk/types/routes.d.ts +2 -0
  350. package/dist/sdk/types/routes.d.ts.map +1 -0
  351. package/dist/sdk/types/routes.js +2 -0
  352. package/dist/sdk/types/routes.js.map +1 -0
  353. package/dist/sdk/types.d.ts +2 -0
  354. package/dist/sdk/types.d.ts.map +1 -0
  355. package/dist/sdk/types.js +2 -0
  356. package/dist/sdk/types.js.map +1 -0
  357. package/dist/sdk/util.d.ts +2 -0
  358. package/dist/sdk/util.d.ts.map +1 -0
  359. package/dist/sdk/util.js +2 -0
  360. package/dist/sdk/util.js.map +1 -0
  361. package/dist/sdk/voice.d.ts +2 -0
  362. package/dist/sdk/voice.d.ts.map +1 -0
  363. package/dist/sdk/voice.js +2 -0
  364. package/dist/sdk/voice.js.map +1 -0
  365. package/dist/sdk/ws.d.ts +2 -0
  366. package/dist/sdk/ws.d.ts.map +1 -0
  367. package/dist/sdk/ws.js +2 -0
  368. package/dist/sdk/ws.js.map +1 -0
  369. package/dist/services/canvas-image.d.ts +12 -0
  370. package/dist/services/canvas-image.d.ts.map +1 -0
  371. package/dist/services/canvas-image.js +56 -0
  372. package/dist/services/canvas-image.js.map +1 -0
  373. package/dist/services/canvas.d.ts +12 -2
  374. package/dist/services/canvas.d.ts.map +1 -1
  375. package/dist/services/canvas.js +91 -5
  376. package/dist/services/canvas.js.map +1 -1
  377. package/dist/services/moderation.d.ts +1 -0
  378. package/dist/services/moderation.d.ts.map +1 -1
  379. package/dist/services/moderation.js +11 -0
  380. package/dist/services/moderation.js.map +1 -1
  381. package/dist/services/native-moderation.d.ts +6 -1
  382. package/dist/services/native-moderation.d.ts.map +1 -1
  383. package/dist/services/native-moderation.js +11 -1
  384. package/dist/services/native-moderation.js.map +1 -1
  385. package/dist/services/resource-authorization.d.ts.map +1 -1
  386. package/dist/services/resource-authorization.js +95 -3
  387. package/dist/services/resource-authorization.js.map +1 -1
  388. package/dist/testing.d.ts.map +1 -1
  389. package/dist/testing.js +4 -0
  390. package/dist/testing.js.map +1 -1
  391. package/docs/API.md +8 -7
  392. package/docs/ARCHITECTURE.md +14 -9
  393. package/docs/BENCHMARKS.md +1 -1
  394. package/docs/CANVAS.md +70 -15
  395. package/docs/EDITOR.md +1 -1
  396. package/docs/FRAMEWORK.md +2 -3
  397. package/docs/HTTP.md +1 -1
  398. package/docs/IMAGES.md +2 -1
  399. package/docs/NATIVE.md +45 -14
  400. package/docs/PARITY-MATRIX.md +853 -843
  401. package/docs/PARITY.md +24 -12
  402. package/docs/PLAN.md +14 -3
  403. package/docs/QUICKSTART.md +5 -5
  404. package/docs/README.md +7 -7
  405. package/docs/REPOSITORY.md +1 -1
  406. package/docs/SCHEDULER.md +1 -1
  407. package/docs/TROUBLESHOOTING.md +1 -1
  408. package/docs/VALIDATION.md +5 -5
  409. package/docs/{FUNCTION-GAPS.md → functions/FUNCTION-GAPS.md} +18 -13
  410. package/docs/{LANGUAGE.md → functions/LANGUAGE.md} +7 -7
  411. package/docs/functions/README.md +33 -0
  412. package/docs/tutorials/DATA.md +2 -2
  413. package/docs/tutorials/FUNCTION-MODE.md +2 -2
  414. package/examples/canvas/napi-style.ts +24 -0
  415. package/examples/canvas/output/napi-style.png +0 -0
  416. package/examples/canvas/profile.d.mts +1 -1
  417. package/examples/canvas/profile.mjs +2 -2
  418. package/examples/canvas/profile.ts +3 -3
  419. package/examples/canvas/ranking.d.mts +1 -1
  420. package/examples/canvas/ranking.mjs +2 -2
  421. package/examples/canvas/ranking.ts +3 -3
  422. package/examples/canvas/render.ts +2 -1
  423. package/examples/canvas/welcome.d.mts +1 -1
  424. package/examples/canvas/welcome.mjs +2 -2
  425. package/examples/canvas/welcome.ts +3 -3
  426. package/examples/embeds/complete-embed-functions.ts +2 -2
  427. package/examples/function-mode.ts +3 -3
  428. package/examples/yuzuha.config.js +2 -0
  429. package/package.json +26 -1
  430. package/src/canvas/card.ts +20 -0
  431. package/src/canvas.ts +69 -17
  432. package/src/cli/config.ts +2 -1
  433. package/src/cli/lint.ts +1 -2
  434. package/src/cli/main.ts +8 -9
  435. package/src/cli/scaffold.ts +1 -1
  436. package/src/cli/scenarios.ts +2 -1
  437. package/src/commands/context.ts +9 -2
  438. package/src/domain/resource-batches.ts +31 -0
  439. package/src/framework/bot.ts +44 -27
  440. package/src/framework/command-registry.ts +15 -10
  441. package/src/framework/options.ts +3 -3
  442. package/src/{scripting → functions}/builtins/canvas.ts +2 -2
  443. package/src/{scripting → functions}/builtins/context.ts +1 -1
  444. package/src/{scripting → functions}/builtins/definition.ts +1 -1
  445. package/src/{scripting → functions}/builtins/embeds.ts +1 -1
  446. package/src/{scripting → functions}/builtins/flow.ts +2 -2
  447. package/src/{scripting → functions}/builtins/guards.ts +1 -1
  448. package/src/{scripting → functions}/builtins/http.ts +2 -2
  449. package/src/{scripting → functions}/builtins/index.ts +2 -2
  450. package/src/{scripting → functions}/builtins/language/array-callbacks.ts +2 -2
  451. package/src/{scripting → functions}/builtins/language/arrays.ts +1 -1
  452. package/src/{scripting → functions}/builtins/language/index.ts +1 -1
  453. package/src/{scripting → functions}/builtins/language/loops.ts +4 -4
  454. package/src/{scripting → functions}/builtins/language/regex.ts +1 -1
  455. package/src/{scripting → functions}/builtins/moderation.ts +1 -1
  456. package/src/{scripting → functions}/builtins/native-channels.ts +1 -1
  457. package/src/{scripting → functions}/builtins/native-roles.ts +1 -1
  458. package/src/{scripting → functions}/builtins/native-users.ts +1 -1
  459. package/src/{scripting → functions}/builtins/payload.ts +2 -2
  460. package/src/{scripting → functions}/builtins/resource-extras.ts +1 -1
  461. package/src/{scripting → functions}/builtins/values.ts +1 -1
  462. package/src/{scripting → functions/runtime}/canvas-execution.ts +1 -1
  463. package/src/{scripting → functions/runtime}/evaluator.ts +2 -2
  464. package/src/{scripting → functions/runtime}/limits.ts +1 -1
  465. package/src/{scripting → functions/runtime}/parser.ts +1 -1
  466. package/src/{scripting → functions/runtime}/regex.ts +1 -1
  467. package/src/{scripting → functions/runtime}/registry.ts +1 -1
  468. package/src/{scripting → functions/runtime}/runtime.ts +6 -1
  469. package/src/{scripting → functions/runtime}/types.ts +1 -1
  470. package/src/functions.ts +28 -8
  471. package/src/index.ts +9 -2
  472. package/src/infrastructure/canvas/napi.ts +17 -0
  473. package/src/infrastructure/fluxer/resources/cache.ts +69 -0
  474. package/src/infrastructure/fluxer/resources/channels.ts +51 -3
  475. package/src/infrastructure/fluxer/resources/collectors.ts +87 -4
  476. package/src/infrastructure/fluxer/resources/expressions.ts +7 -1
  477. package/src/infrastructure/fluxer/resources/gateway.ts +33 -0
  478. package/src/infrastructure/fluxer/resources/instance.ts +105 -0
  479. package/src/infrastructure/fluxer/resources/messages.ts +84 -36
  480. package/src/infrastructure/fluxer/resources/roles.ts +8 -0
  481. package/src/infrastructure/fluxer/resources/self.ts +39 -0
  482. package/src/infrastructure/fluxer/resources/threads.ts +14 -0
  483. package/src/infrastructure/fluxer/resources/users.ts +40 -4
  484. package/src/infrastructure/fluxer/resources/webhooks.ts +9 -0
  485. package/src/infrastructure/fluxer/resources.ts +12 -0
  486. package/src/ports/resources/cache.ts +81 -0
  487. package/src/ports/resources/channels.ts +12 -0
  488. package/src/ports/resources/collectors.ts +20 -0
  489. package/src/ports/resources/common.ts +2 -0
  490. package/src/ports/resources/expressions.ts +6 -0
  491. package/src/ports/resources/gateway.ts +49 -0
  492. package/src/ports/resources/instance.ts +109 -0
  493. package/src/ports/resources/messages.ts +30 -0
  494. package/src/ports/resources/roles.ts +3 -0
  495. package/src/ports/resources/self.ts +30 -0
  496. package/src/ports/resources/threads.ts +15 -0
  497. package/src/ports/resources/users.ts +33 -0
  498. package/src/ports/resources/webhooks.ts +6 -0
  499. package/src/ports/resources.ts +8 -0
  500. package/src/ports/script-engine.ts +42 -0
  501. package/src/sdk/builders.ts +1 -0
  502. package/src/sdk/client.ts +1 -0
  503. package/src/sdk/cluster.ts +1 -0
  504. package/src/sdk/collection.ts +1 -0
  505. package/src/sdk/errors.ts +1 -0
  506. package/src/sdk/internal.ts +1 -0
  507. package/src/sdk/message.ts +1 -0
  508. package/src/sdk/rest/request-manager.ts +1 -0
  509. package/src/sdk/rest.ts +1 -0
  510. package/src/sdk/sharding.ts +1 -0
  511. package/src/sdk/types/routes.ts +1 -0
  512. package/src/sdk/types.ts +1 -0
  513. package/src/sdk/util.ts +1 -0
  514. package/src/sdk/voice.ts +1 -0
  515. package/src/sdk/ws.ts +1 -0
  516. package/src/services/canvas-image.ts +54 -0
  517. package/src/services/canvas.ts +89 -6
  518. package/src/services/moderation.ts +4 -0
  519. package/src/services/native-moderation.ts +11 -1
  520. package/src/services/resource-authorization.ts +89 -3
  521. package/src/testing.ts +4 -0
  522. package/dist/parser.d.ts +0 -3
  523. package/dist/parser.d.ts.map +0 -1
  524. package/dist/parser.js +0 -2
  525. package/dist/parser.js.map +0 -1
  526. package/dist/runtime.d.ts +0 -5
  527. package/dist/runtime.d.ts.map +0 -1
  528. package/dist/runtime.js +0 -4
  529. package/dist/runtime.js.map +0 -1
  530. package/dist/scripting/ast.d.ts.map +0 -1
  531. package/dist/scripting/ast.js.map +0 -1
  532. package/dist/scripting/builtins/canvas.d.ts +0 -2
  533. package/dist/scripting/builtins/canvas.d.ts.map +0 -1
  534. package/dist/scripting/builtins/context.d.ts +0 -2
  535. package/dist/scripting/builtins/context.d.ts.map +0 -1
  536. package/dist/scripting/builtins/definition.d.ts.map +0 -1
  537. package/dist/scripting/builtins/definition.js.map +0 -1
  538. package/dist/scripting/builtins/embeds.d.ts +0 -3
  539. package/dist/scripting/builtins/embeds.js.map +0 -1
  540. package/dist/scripting/builtins/events.d.ts +0 -2
  541. package/dist/scripting/builtins/events.d.ts.map +0 -1
  542. package/dist/scripting/builtins/flow.d.ts +0 -2
  543. package/dist/scripting/builtins/flow.d.ts.map +0 -1
  544. package/dist/scripting/builtins/flow.js.map +0 -1
  545. package/dist/scripting/builtins/guards.d.ts +0 -2
  546. package/dist/scripting/builtins/guards.d.ts.map +0 -1
  547. package/dist/scripting/builtins/guards.js.map +0 -1
  548. package/dist/scripting/builtins/http.d.ts +0 -2
  549. package/dist/scripting/builtins/http.d.ts.map +0 -1
  550. package/dist/scripting/builtins/http.js.map +0 -1
  551. package/dist/scripting/builtins/index.d.ts +0 -5
  552. package/dist/scripting/builtins/index.d.ts.map +0 -1
  553. package/dist/scripting/builtins/index.js.map +0 -1
  554. package/dist/scripting/builtins/language/array-callbacks.d.ts +0 -2
  555. package/dist/scripting/builtins/language/array-callbacks.d.ts.map +0 -1
  556. package/dist/scripting/builtins/language/arrays.d.ts +0 -2
  557. package/dist/scripting/builtins/language/arrays.d.ts.map +0 -1
  558. package/dist/scripting/builtins/language/decimals.d.ts +0 -2
  559. package/dist/scripting/builtins/language/decimals.d.ts.map +0 -1
  560. package/dist/scripting/builtins/language/index.d.ts +0 -3
  561. package/dist/scripting/builtins/language/index.d.ts.map +0 -1
  562. package/dist/scripting/builtins/language/index.js.map +0 -1
  563. package/dist/scripting/builtins/language/loops.d.ts +0 -4
  564. package/dist/scripting/builtins/language/numbers.d.ts +0 -2
  565. package/dist/scripting/builtins/language/numbers.d.ts.map +0 -1
  566. package/dist/scripting/builtins/language/regex.d.ts +0 -2
  567. package/dist/scripting/builtins/language/regex.d.ts.map +0 -1
  568. package/dist/scripting/builtins/language/sort.d.ts +0 -2
  569. package/dist/scripting/builtins/language/sort.d.ts.map +0 -1
  570. package/dist/scripting/builtins/language/texts.d.ts +0 -2
  571. package/dist/scripting/builtins/language/texts.d.ts.map +0 -1
  572. package/dist/scripting/builtins/messages.d.ts +0 -2
  573. package/dist/scripting/builtins/messages.d.ts.map +0 -1
  574. package/dist/scripting/builtins/moderation.d.ts +0 -2
  575. package/dist/scripting/builtins/moderation.d.ts.map +0 -1
  576. package/dist/scripting/builtins/native-channels.d.ts +0 -2
  577. package/dist/scripting/builtins/native-channels.d.ts.map +0 -1
  578. package/dist/scripting/builtins/native-collectors.d.ts +0 -2
  579. package/dist/scripting/builtins/native-collectors.d.ts.map +0 -1
  580. package/dist/scripting/builtins/native-expressions.d.ts +0 -2
  581. package/dist/scripting/builtins/native-expressions.d.ts.map +0 -1
  582. package/dist/scripting/builtins/native-invites.d.ts +0 -2
  583. package/dist/scripting/builtins/native-invites.d.ts.map +0 -1
  584. package/dist/scripting/builtins/native-messages.d.ts +0 -2
  585. package/dist/scripting/builtins/native-messages.d.ts.map +0 -1
  586. package/dist/scripting/builtins/native-roles.d.ts +0 -2
  587. package/dist/scripting/builtins/native-roles.d.ts.map +0 -1
  588. package/dist/scripting/builtins/native-threads.d.ts +0 -2
  589. package/dist/scripting/builtins/native-threads.d.ts.map +0 -1
  590. package/dist/scripting/builtins/native-users.d.ts +0 -2
  591. package/dist/scripting/builtins/native-users.d.ts.map +0 -1
  592. package/dist/scripting/builtins/native-webhooks.d.ts +0 -2
  593. package/dist/scripting/builtins/native-webhooks.d.ts.map +0 -1
  594. package/dist/scripting/builtins/payload.d.ts.map +0 -1
  595. package/dist/scripting/builtins/payload.js.map +0 -1
  596. package/dist/scripting/builtins/resource-extras.d.ts +0 -2
  597. package/dist/scripting/builtins/resource-extras.d.ts.map +0 -1
  598. package/dist/scripting/builtins/schedule.d.ts +0 -2
  599. package/dist/scripting/builtins/schedule.d.ts.map +0 -1
  600. package/dist/scripting/builtins/storage.d.ts +0 -2
  601. package/dist/scripting/builtins/storage.d.ts.map +0 -1
  602. package/dist/scripting/builtins/values.d.ts +0 -2
  603. package/dist/scripting/builtins/values.d.ts.map +0 -1
  604. package/dist/scripting/builtins/values.js.map +0 -1
  605. package/dist/scripting/canvas-execution.d.ts.map +0 -1
  606. package/dist/scripting/canvas-execution.js.map +0 -1
  607. package/dist/scripting/control-flow.d.ts.map +0 -1
  608. package/dist/scripting/control-flow.js.map +0 -1
  609. package/dist/scripting/evaluator.d.ts.map +0 -1
  610. package/dist/scripting/evaluator.js.map +0 -1
  611. package/dist/scripting/limits.d.ts.map +0 -1
  612. package/dist/scripting/limits.js.map +0 -1
  613. package/dist/scripting/parser.d.ts.map +0 -1
  614. package/dist/scripting/parser.js.map +0 -1
  615. package/dist/scripting/regex.d.ts.map +0 -1
  616. package/dist/scripting/regex.js.map +0 -1
  617. package/dist/scripting/registry.d.ts.map +0 -1
  618. package/dist/scripting/registry.js.map +0 -1
  619. package/dist/scripting/runtime.d.ts.map +0 -1
  620. package/dist/scripting/runtime.js.map +0 -1
  621. package/dist/scripting/types.d.ts.map +0 -1
  622. package/dist/scripting/types.js.map +0 -1
  623. package/dist/scripting/values.d.ts.map +0 -1
  624. package/dist/scripting/values.js.map +0 -1
  625. package/src/parser.ts +0 -2
  626. package/src/runtime.ts +0 -4
  627. /package/dist/{scripting → functions}/builtins/arguments.d.ts +0 -0
  628. /package/dist/{scripting → functions}/builtins/arguments.js +0 -0
  629. /package/dist/{scripting → functions}/builtins/context.js +0 -0
  630. /package/dist/{scripting → functions}/builtins/definition.js +0 -0
  631. /package/dist/{scripting → functions}/builtins/events.js +0 -0
  632. /package/dist/{scripting → functions}/builtins/index.js +0 -0
  633. /package/dist/{scripting → functions}/builtins/language/common.d.ts +0 -0
  634. /package/dist/{scripting → functions}/builtins/language/common.js +0 -0
  635. /package/dist/{scripting → functions}/builtins/language/decimals.js +0 -0
  636. /package/dist/{scripting → functions}/builtins/language/index.js +0 -0
  637. /package/dist/{scripting → functions}/builtins/language/numbers.js +0 -0
  638. /package/dist/{scripting → functions}/builtins/language/objects.js +0 -0
  639. /package/dist/{scripting → functions}/builtins/language/sort.js +0 -0
  640. /package/dist/{scripting → functions}/builtins/language/state.js +0 -0
  641. /package/dist/{scripting → functions}/builtins/language/texts.js +0 -0
  642. /package/dist/{scripting → functions}/builtins/messages.js +0 -0
  643. /package/dist/{scripting → functions}/builtins/moderation.js +0 -0
  644. /package/dist/{scripting → functions}/builtins/native-channels.js +0 -0
  645. /package/dist/{scripting → functions}/builtins/native-collectors.js +0 -0
  646. /package/dist/{scripting → functions}/builtins/native-expressions.js +0 -0
  647. /package/dist/{scripting → functions}/builtins/native-invites.js +0 -0
  648. /package/dist/{scripting → functions}/builtins/native-messages.js +0 -0
  649. /package/dist/{scripting → functions}/builtins/native-roles.js +0 -0
  650. /package/dist/{scripting → functions}/builtins/native-threads.js +0 -0
  651. /package/dist/{scripting → functions}/builtins/native-users.js +0 -0
  652. /package/dist/{scripting → functions}/builtins/native-webhooks.js +0 -0
  653. /package/dist/{scripting → functions}/builtins/resource-extras.js +0 -0
  654. /package/dist/{scripting → functions}/builtins/schedule.js +0 -0
  655. /package/dist/{scripting → functions}/builtins/storage.js +0 -0
  656. /package/dist/{scripting → functions/runtime}/ast.d.ts +0 -0
  657. /package/dist/{scripting → functions/runtime}/ast.js +0 -0
  658. /package/dist/{scripting → functions/runtime}/canvas-execution.js +0 -0
  659. /package/dist/{scripting → functions/runtime}/control-flow.d.ts +0 -0
  660. /package/dist/{scripting → functions/runtime}/control-flow.js +0 -0
  661. /package/dist/{scripting → functions/runtime}/limits.d.ts +0 -0
  662. /package/dist/{scripting → functions/runtime}/parser.d.ts +0 -0
  663. /package/dist/{scripting → functions/runtime}/regex-worker.mjs +0 -0
  664. /package/dist/{scripting → functions/runtime}/regex.d.ts +0 -0
  665. /package/dist/{scripting → functions/runtime}/registry.d.ts +0 -0
  666. /package/dist/{scripting → functions/runtime}/types.js +0 -0
  667. /package/dist/{scripting → functions/runtime}/values.d.ts +0 -0
  668. /package/dist/{scripting → functions/runtime}/values.js +0 -0
  669. /package/docs/{FUNCTIONS.md → functions/FUNCTIONS.md} +0 -0
  670. /package/docs/{LANGUAGE-EXTENSIONS.md → functions/LANGUAGE-EXTENSIONS.md} +0 -0
  671. /package/src/{scripting → functions}/builtins/arguments.ts +0 -0
  672. /package/src/{scripting → functions}/builtins/events.ts +0 -0
  673. /package/src/{scripting → functions}/builtins/language/common.ts +0 -0
  674. /package/src/{scripting → functions}/builtins/language/decimals.ts +0 -0
  675. /package/src/{scripting → functions}/builtins/language/numbers.ts +0 -0
  676. /package/src/{scripting → functions}/builtins/language/objects.ts +0 -0
  677. /package/src/{scripting → functions}/builtins/language/sort.ts +0 -0
  678. /package/src/{scripting → functions}/builtins/language/state.ts +0 -0
  679. /package/src/{scripting → functions}/builtins/language/texts.ts +0 -0
  680. /package/src/{scripting → functions}/builtins/messages.ts +0 -0
  681. /package/src/{scripting → functions}/builtins/native-collectors.ts +0 -0
  682. /package/src/{scripting → functions}/builtins/native-expressions.ts +0 -0
  683. /package/src/{scripting → functions}/builtins/native-invites.ts +0 -0
  684. /package/src/{scripting → functions}/builtins/native-messages.ts +0 -0
  685. /package/src/{scripting → functions}/builtins/native-threads.ts +0 -0
  686. /package/src/{scripting → functions}/builtins/native-webhooks.ts +0 -0
  687. /package/src/{scripting → functions}/builtins/schedule.ts +0 -0
  688. /package/src/{scripting → functions}/builtins/storage.ts +0 -0
  689. /package/src/{scripting → functions/runtime}/ast.ts +0 -0
  690. /package/src/{scripting → functions/runtime}/control-flow.ts +0 -0
  691. /package/src/{scripting → functions/runtime}/regex-worker.mjs +0 -0
  692. /package/src/{scripting → functions/runtime}/values.ts +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"native-messages.js","sourceRoot":"","sources":["../../../src/scripting/builtins/native-messages.ts"],"names":[],"mappings":"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","sourcesContent":["import type { MessageInfo } from '../../ports/resources/messages.js';\nimport { YuzuhaError } from '../../errors.js';\nimport { defineFunctions } from './definition.js';\nimport { preloadChannels } from '../../domain/resource-batches.js';\nimport { pinnedMessagesInput, reactionUsersInput } from '../../domain/message-query.js';\n\nconst PROPERTIES: Record<string, (info: MessageInfo) => unknown> = {\n id: info => info.id,\n conteudo: info => info.content,\n content: info => info.content,\n autor: info => info.authorID,\n authorid: info => info.authorID,\n authorname: info => info.authorName,\n autorname: info => info.authorName,\n canal: info => info.channelID,\n channelid: info => info.channelID,\n criadoem: info => info.createdTimestamp,\n createdtimestamp: info => info.createdTimestamp,\n fixada: info => info.pinned,\n pinned: info => info.pinned,\n anexos: info => info.attachments,\n attachments: info => info.attachments,\n embeds: info => info.embeds,\n};\n\nfunction attachmentUrl(raw: string): string {\n const url = raw.trim();\n if (!/^https?:\\/\\/\\S+$/i.test(url)) throw new YuzuhaError('ATTACHMENT_URL', 'URL do anexo inválida. Use http(s)://...');\n return url;\n}\n\nfunction attachmentName(url: string, raw?: string): string {\n const name = raw?.trim() ?? '';\n if (name) return name;\n try {\n const last = new URL(url).pathname.split('/').filter(Boolean).pop();\n if (last) return decodeURIComponent(last);\n } catch { /* usa padrão abaixo */ }\n return 'arquivo';\n}\n\nfunction messageLimit(raw: string, fallback: number): number {\n const value = raw.trim();\n if (!value) return fallback;\n const limit = Number(value);\n if (!Number.isSafeInteger(limit) || limit < 1 || limit > 100) {\n throw new YuzuhaError('MESSAGE_LIMIT', 'Limite deve ser um inteiro entre 1 e 100.');\n }\n return limit;\n}\n\nexport const resourceMessageFunctions = defineFunctions(fn => {\n fn('preloadMessages', 'messages', 1, 1, '[canais]', 'Busca a última mensagem de até 100 canais; recebe array de IDs e retorna objeto por canal.', async c => {\n return c.ctx.resources.messages.preload(preloadChannels(await c.arg(0)));\n });\n fn('removeReaction', 'messages', 2, 4, '[mensagem;emoji;usuário?;canal?]', 'Remove a reação do bot ou de um usuário da mensagem.', async c => {\n const messageID = required(await c.text(0), 'ID da mensagem');\n const emoji = required(await c.text(1), 'Emoji');\n const user = c.count > 2 ? (await c.text(2)).trim() : '';\n const userID = user ? user.replace(/^<@!?(\\d+)>$/, '$1') : undefined;\n const channelID = c.count > 3 ? (await c.text(3)).trim() || c.ctx.message.channelID : c.ctx.message.channelID;\n await c.ctx.resources.messages.removeReaction(channelID, messageID, emoji, userID);\n return '';\n });\n fn('clearReactions', 'messages', 1, 3, '[mensagem;emoji?;canal?]', 'Remove todas as reações ou somente as de um emoji.', async c => {\n const messageID = required(await c.text(0), 'ID da mensagem');\n const emoji = c.count > 1 ? (await c.text(1)).trim() || undefined : undefined;\n const channelID = c.count > 2 ? (await c.text(2)).trim() || c.ctx.message.channelID : c.ctx.message.channelID;\n await c.ctx.resources.messages.clearReactions(channelID, messageID, emoji);\n return '';\n });\n fn('reactionUsers', 'messages', 2, 5, '[mensagem;emoji;limite?;após?;canal?]', 'Lista IDs de usuários que reagiram; limite de 1 a 100 e cursor por usuário.', async c => {\n const messageID = required(await c.text(0), 'ID da mensagem');\n const emoji = required(await c.text(1), 'Emoji');\n const limit = c.count > 2 ? messageLimit(await c.text(2), 100) : 100;\n const after = c.count > 3 ? (await c.text(3)).trim() || undefined : undefined;\n const channelID = c.count > 4 ? (await c.text(4)).trim() || c.ctx.message.channelID : c.ctx.message.channelID;\n return c.ctx.resources.messages.reactionUsers(channelID, messageID, emoji, limit, after);\n });\n fn('reactionUsersPage', 'messages', 2, 5, '[mensagem;emoji;limite?;após?;canal?]', 'Retorna users com IDs, hasMore e nextAfter; limite de 1 a 100 e cursor por usuário.', async c => {\n const messageID = required(await c.text(0), 'ID da mensagem');\n const emoji = required(await c.text(1), 'Emoji');\n const rawLimit = c.count > 2 ? (await c.text(2)).trim() : '';\n const rawAfter = c.count > 3 ? (await c.text(3)).trim() || undefined : undefined;\n const { limit, after } = reactionUsersInput({ limit: rawLimit ? Number(rawLimit) : undefined, after: rawAfter });\n const channelID = c.count > 4 ? (await c.text(4)).trim() || c.ctx.message.channelID : c.ctx.message.channelID;\n return c.ctx.resources.messages.reactionUsersPage(channelID, messageID, emoji, limit, after);\n });\n fn('fetchMessage', 'messages', 2, 3, '[canal;mensagem;propriedade?]', 'Busca uma mensagem e retorna objeto ou propriedade.', async c => {\n const channelID = (await c.text(0)).trim(), messageID = (await c.text(1)).trim();\n if (!channelID) throw new YuzuhaError('MESSAGE_CHANNEL', 'Canal da mensagem é obrigatório.');\n if (!messageID) throw new YuzuhaError('MESSAGE_ID', 'ID da mensagem é obrigatório.');\n const info = await c.ctx.resources.messages.fetch(channelID, messageID);\n if (c.count < 3) return info;\n return lookup(info, await c.text(2));\n });\n fn('messages', 'messages', 1, 5, '[canal;limite?;before?;after?;around?]', 'Lista mensagens, da mais recente para a mais antiga; aceita somente um cursor por chamada.', async c => {\n const channelID = (await c.text(0)).trim();\n if (!channelID) throw new YuzuhaError('MESSAGE_CHANNEL', 'Canal da mensagem é obrigatório.');\n const limit = c.count > 1 ? messageLimit(await c.text(1), 20) : 20;\n if (c.count <= 2) return c.ctx.resources.messages.list(channelID, limit);\n const cursor: { before?: string; after?: string; around?: string } = {};\n for (const [index, key] of [[2, 'before'], [3, 'after'], [4, 'around']] as const) {\n const value = c.count > index ? (await c.text(index)).trim() : '';\n if (value) cursor[key] = value;\n }\n if (Object.keys(cursor).length > 1) throw new YuzuhaError('MESSAGE_CURSOR', 'Use somente um cursor: before, after ou around.');\n return c.ctx.resources.messages.list(channelID, limit, cursor);\n });\n fn('pin', 'messages', 1, 2, '[mensagem;canal?]', 'Fixa uma mensagem no canal.', async c => {\n const messageID = (await c.text(0)).trim();\n if (!messageID) throw new YuzuhaError('MESSAGE_ID', 'ID da mensagem é obrigatório.');\n const channelID = c.count > 1 && (await c.text(1)).trim() ? (await c.text(1)).trim() : c.ctx.message.channelID;\n await c.ctx.resources.messages.pin(channelID, messageID);\n return '';\n });\n fn('unpin', 'messages', 1, 2, '[mensagem;canal?]', 'Desafixa uma mensagem do canal.', async c => {\n const messageID = (await c.text(0)).trim();\n if (!messageID) throw new YuzuhaError('MESSAGE_ID', 'ID da mensagem é obrigatório.');\n const channelID = c.count > 1 && (await c.text(1)).trim() ? (await c.text(1)).trim() : c.ctx.message.channelID;\n await c.ctx.resources.messages.unpin(channelID, messageID);\n return '';\n });\n fn('pinnedMessages', 'messages', 0, 2, '[canal?;limite?]', 'Lista mensagens fixadas, da mais recente para a mais antiga.', async c => {\n const first = c.count > 0 ? (await c.text(0)).trim() : '';\n const channelID = first ? first : c.ctx.message.channelID;\n return c.ctx.resources.messages.pinned(channelID, c.count > 1 ? messageLimit(await c.text(1), 20) : undefined);\n });\n fn('pinnedMessagesPage', 'messages', 0, 3, '[canal?;limite?;before?]', 'Pagina mensagens por data de fixação; retorna messages, pinnedAt, hasMore e nextBefore. Cursor ISO da página anterior.', async c => {\n const channelID = c.count > 0 ? (await c.text(0)).trim() || c.ctx.message.channelID : c.ctx.message.channelID;\n const limit = c.count > 1 ? messageLimit(await c.text(1), 50) : 50;\n const before = c.count > 2 ? (await c.text(2)).trim() || undefined : undefined;\n return c.ctx.resources.messages.pinnedPage(channelID, pinnedMessagesInput({ limit, before }));\n });\n fn('sendFiles', 'messages', 2, 4, '[canal;url;nome?;conteudo?]', 'Envia um anexo e retorna o ID da mensagem.', async c => {\n const channelID = (await c.text(0)).trim();\n if (!channelID) throw new YuzuhaError('MESSAGE_CHANNEL', 'Canal da mensagem é obrigatório.');\n const url = attachmentUrl(await c.text(1));\n const name = attachmentName(url, c.count > 2 ? await c.text(2) : undefined);\n const content = c.count > 3 ? await c.text(3) : undefined;\n return c.ctx.resources.messages.sendFiles(channelID, [{ url, name }],\n content === undefined || content === '' ? undefined : content);\n });\n fn('attachment', 'messages', 1, 2, '[url;nome?]', 'Monta especificação de anexo sem enviar.', async c => {\n const url = attachmentUrl(await c.text(0));\n return { url, name: attachmentName(url, c.count > 1 ? await c.text(1) : undefined) };\n });\n});\n\nfunction required(raw: string, label: string): string {\n const value = raw.trim();\n if (!value) throw new YuzuhaError('MESSAGE_ARGUMENT', `${label} é obrigatório.`);\n return value;\n}\n\nfunction lookup(info: MessageInfo, raw: string): unknown {\n const key = raw.trim().toLowerCase();\n if (!key) return info;\n const property = Object.hasOwn(PROPERTIES, key) ? PROPERTIES[key] : undefined;\n if (!property) throw new YuzuhaError('MESSAGE_PROPERTY', `Propriedade desconhecida: ${raw.trim()}.`);\n return property(info);\n}\n"]}
1
+ {"version":3,"file":"native-messages.js","sourceRoot":"","sources":["../../../src/functions/builtins/native-messages.ts"],"names":[],"mappings":"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","sourcesContent":["import type { MessageInfo } from '../../ports/resources/messages.js';\nimport { YuzuhaError } from '../../errors.js';\nimport { defineFunctions } from './definition.js';\nimport { preloadChannels } from '../../domain/resource-batches.js';\nimport { pinnedMessagesInput, reactionUsersInput } from '../../domain/message-query.js';\n\nconst PROPERTIES: Record<string, (info: MessageInfo) => unknown> = {\n id: info => info.id,\n conteudo: info => info.content,\n content: info => info.content,\n autor: info => info.authorID,\n authorid: info => info.authorID,\n authorname: info => info.authorName,\n autorname: info => info.authorName,\n canal: info => info.channelID,\n channelid: info => info.channelID,\n criadoem: info => info.createdTimestamp,\n createdtimestamp: info => info.createdTimestamp,\n fixada: info => info.pinned,\n pinned: info => info.pinned,\n anexos: info => info.attachments,\n attachments: info => info.attachments,\n embeds: info => info.embeds,\n};\n\nfunction attachmentUrl(raw: string): string {\n const url = raw.trim();\n if (!/^https?:\\/\\/\\S+$/i.test(url)) throw new YuzuhaError('ATTACHMENT_URL', 'URL do anexo inválida. Use http(s)://...');\n return url;\n}\n\nfunction attachmentName(url: string, raw?: string): string {\n const name = raw?.trim() ?? '';\n if (name) return name;\n try {\n const last = new URL(url).pathname.split('/').filter(Boolean).pop();\n if (last) return decodeURIComponent(last);\n } catch { /* usa padrão abaixo */ }\n return 'arquivo';\n}\n\nfunction messageLimit(raw: string, fallback: number): number {\n const value = raw.trim();\n if (!value) return fallback;\n const limit = Number(value);\n if (!Number.isSafeInteger(limit) || limit < 1 || limit > 100) {\n throw new YuzuhaError('MESSAGE_LIMIT', 'Limite deve ser um inteiro entre 1 e 100.');\n }\n return limit;\n}\n\nexport const resourceMessageFunctions = defineFunctions(fn => {\n fn('preloadMessages', 'messages', 1, 1, '[canais]', 'Busca a última mensagem de até 100 canais; recebe array de IDs e retorna objeto por canal.', async c => {\n return c.ctx.resources.messages.preload(preloadChannels(await c.arg(0)));\n });\n fn('removeReaction', 'messages', 2, 4, '[mensagem;emoji;usuário?;canal?]', 'Remove a reação do bot ou de um usuário da mensagem.', async c => {\n const messageID = required(await c.text(0), 'ID da mensagem');\n const emoji = required(await c.text(1), 'Emoji');\n const user = c.count > 2 ? (await c.text(2)).trim() : '';\n const userID = user ? user.replace(/^<@!?(\\d+)>$/, '$1') : undefined;\n const channelID = c.count > 3 ? (await c.text(3)).trim() || c.ctx.message.channelID : c.ctx.message.channelID;\n await c.ctx.resources.messages.removeReaction(channelID, messageID, emoji, userID);\n return '';\n });\n fn('clearReactions', 'messages', 1, 3, '[mensagem;emoji?;canal?]', 'Remove todas as reações ou somente as de um emoji.', async c => {\n const messageID = required(await c.text(0), 'ID da mensagem');\n const emoji = c.count > 1 ? (await c.text(1)).trim() || undefined : undefined;\n const channelID = c.count > 2 ? (await c.text(2)).trim() || c.ctx.message.channelID : c.ctx.message.channelID;\n await c.ctx.resources.messages.clearReactions(channelID, messageID, emoji);\n return '';\n });\n fn('reactionUsers', 'messages', 2, 5, '[mensagem;emoji;limite?;após?;canal?]', 'Lista IDs de usuários que reagiram; limite de 1 a 100 e cursor por usuário.', async c => {\n const messageID = required(await c.text(0), 'ID da mensagem');\n const emoji = required(await c.text(1), 'Emoji');\n const limit = c.count > 2 ? messageLimit(await c.text(2), 100) : 100;\n const after = c.count > 3 ? (await c.text(3)).trim() || undefined : undefined;\n const channelID = c.count > 4 ? (await c.text(4)).trim() || c.ctx.message.channelID : c.ctx.message.channelID;\n return c.ctx.resources.messages.reactionUsers(channelID, messageID, emoji, limit, after);\n });\n fn('reactionUsersPage', 'messages', 2, 5, '[mensagem;emoji;limite?;após?;canal?]', 'Retorna users com IDs, hasMore e nextAfter; limite de 1 a 100 e cursor por usuário.', async c => {\n const messageID = required(await c.text(0), 'ID da mensagem');\n const emoji = required(await c.text(1), 'Emoji');\n const rawLimit = c.count > 2 ? (await c.text(2)).trim() : '';\n const rawAfter = c.count > 3 ? (await c.text(3)).trim() || undefined : undefined;\n const { limit, after } = reactionUsersInput({ limit: rawLimit ? Number(rawLimit) : undefined, after: rawAfter });\n const channelID = c.count > 4 ? (await c.text(4)).trim() || c.ctx.message.channelID : c.ctx.message.channelID;\n return c.ctx.resources.messages.reactionUsersPage(channelID, messageID, emoji, limit, after);\n });\n fn('fetchMessage', 'messages', 2, 3, '[canal;mensagem;propriedade?]', 'Busca uma mensagem e retorna objeto ou propriedade.', async c => {\n const channelID = (await c.text(0)).trim(), messageID = (await c.text(1)).trim();\n if (!channelID) throw new YuzuhaError('MESSAGE_CHANNEL', 'Canal da mensagem é obrigatório.');\n if (!messageID) throw new YuzuhaError('MESSAGE_ID', 'ID da mensagem é obrigatório.');\n const info = await c.ctx.resources.messages.fetch(channelID, messageID);\n if (c.count < 3) return info;\n return lookup(info, await c.text(2));\n });\n fn('messages', 'messages', 1, 5, '[canal;limite?;before?;after?;around?]', 'Lista mensagens, da mais recente para a mais antiga; aceita somente um cursor por chamada.', async c => {\n const channelID = (await c.text(0)).trim();\n if (!channelID) throw new YuzuhaError('MESSAGE_CHANNEL', 'Canal da mensagem é obrigatório.');\n const limit = c.count > 1 ? messageLimit(await c.text(1), 20) : 20;\n if (c.count <= 2) return c.ctx.resources.messages.list(channelID, limit);\n const cursor: { before?: string; after?: string; around?: string } = {};\n for (const [index, key] of [[2, 'before'], [3, 'after'], [4, 'around']] as const) {\n const value = c.count > index ? (await c.text(index)).trim() : '';\n if (value) cursor[key] = value;\n }\n if (Object.keys(cursor).length > 1) throw new YuzuhaError('MESSAGE_CURSOR', 'Use somente um cursor: before, after ou around.');\n return c.ctx.resources.messages.list(channelID, limit, cursor);\n });\n fn('pin', 'messages', 1, 2, '[mensagem;canal?]', 'Fixa uma mensagem no canal.', async c => {\n const messageID = (await c.text(0)).trim();\n if (!messageID) throw new YuzuhaError('MESSAGE_ID', 'ID da mensagem é obrigatório.');\n const channelID = c.count > 1 && (await c.text(1)).trim() ? (await c.text(1)).trim() : c.ctx.message.channelID;\n await c.ctx.resources.messages.pin(channelID, messageID);\n return '';\n });\n fn('unpin', 'messages', 1, 2, '[mensagem;canal?]', 'Desafixa uma mensagem do canal.', async c => {\n const messageID = (await c.text(0)).trim();\n if (!messageID) throw new YuzuhaError('MESSAGE_ID', 'ID da mensagem é obrigatório.');\n const channelID = c.count > 1 && (await c.text(1)).trim() ? (await c.text(1)).trim() : c.ctx.message.channelID;\n await c.ctx.resources.messages.unpin(channelID, messageID);\n return '';\n });\n fn('pinnedMessages', 'messages', 0, 2, '[canal?;limite?]', 'Lista mensagens fixadas, da mais recente para a mais antiga.', async c => {\n const first = c.count > 0 ? (await c.text(0)).trim() : '';\n const channelID = first ? first : c.ctx.message.channelID;\n return c.ctx.resources.messages.pinned(channelID, c.count > 1 ? messageLimit(await c.text(1), 20) : undefined);\n });\n fn('pinnedMessagesPage', 'messages', 0, 3, '[canal?;limite?;before?]', 'Pagina mensagens por data de fixação; retorna messages, pinnedAt, hasMore e nextBefore. Cursor ISO da página anterior.', async c => {\n const channelID = c.count > 0 ? (await c.text(0)).trim() || c.ctx.message.channelID : c.ctx.message.channelID;\n const limit = c.count > 1 ? messageLimit(await c.text(1), 50) : 50;\n const before = c.count > 2 ? (await c.text(2)).trim() || undefined : undefined;\n return c.ctx.resources.messages.pinnedPage(channelID, pinnedMessagesInput({ limit, before }));\n });\n fn('sendFiles', 'messages', 2, 4, '[canal;url;nome?;conteudo?]', 'Envia um anexo e retorna o ID da mensagem.', async c => {\n const channelID = (await c.text(0)).trim();\n if (!channelID) throw new YuzuhaError('MESSAGE_CHANNEL', 'Canal da mensagem é obrigatório.');\n const url = attachmentUrl(await c.text(1));\n const name = attachmentName(url, c.count > 2 ? await c.text(2) : undefined);\n const content = c.count > 3 ? await c.text(3) : undefined;\n return c.ctx.resources.messages.sendFiles(channelID, [{ url, name }],\n content === undefined || content === '' ? undefined : content);\n });\n fn('attachment', 'messages', 1, 2, '[url;nome?]', 'Monta especificação de anexo sem enviar.', async c => {\n const url = attachmentUrl(await c.text(0));\n return { url, name: attachmentName(url, c.count > 1 ? await c.text(1) : undefined) };\n });\n});\n\nfunction required(raw: string, label: string): string {\n const value = raw.trim();\n if (!value) throw new YuzuhaError('MESSAGE_ARGUMENT', `${label} é obrigatório.`);\n return value;\n}\n\nfunction lookup(info: MessageInfo, raw: string): unknown {\n const key = raw.trim().toLowerCase();\n if (!key) return info;\n const property = Object.hasOwn(PROPERTIES, key) ? PROPERTIES[key] : undefined;\n if (!property) throw new YuzuhaError('MESSAGE_PROPERTY', `Propriedade desconhecida: ${raw.trim()}.`);\n return property(info);\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const roleFunctions: import("../runtime/types.js").FunctionDefinition[];
2
+ //# sourceMappingURL=native-roles.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-roles.d.ts","sourceRoot":"","sources":["../../../src/functions/builtins/native-roles.ts"],"names":[],"mappings":"AAuEA,eAAO,MAAM,aAAa,oDAqDxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"native-roles.js","sourceRoot":"","sources":["../../../src/scripting/builtins/native-roles.ts"],"names":[],"mappings":"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","sourcesContent":["import { YuzuhaError } from '../../errors.js';\nimport type { RoleInfo } from '../../ports/resources/roles.js';\nimport type { FunctionCall } from '../types.js';\nimport { defineFunctions } from './definition.js';\nimport { integer } from './language/common.js';\n\nconst ROLE_PROPERTIES = ['id', 'name', 'color', 'position', 'permissions', 'hoist', 'mentionable', 'unicodeEmoji', 'managed'] as const;\ntype RoleProperty = (typeof ROLE_PROPERTIES)[number];\n\nfunction isRoleProperty(value: string): value is RoleProperty {\n return (ROLE_PROPERTIES as readonly string[]).includes(value);\n}\n\nfunction parseColor(raw: string): number | undefined {\n const value = raw.trim();\n if (!value) return undefined;\n const hex = value.startsWith('#') ? value.slice(1) : value;\n if (/^[0-9a-fA-F]{6}$/.test(hex)) return parseInt(hex, 16);\n if (/^\\d+$/.test(value)) {\n const number = Number(value);\n if (Number.isSafeInteger(number) && number >= 0 && number <= 0xffffff) return number;\n }\n throw new YuzuhaError('ROLE_COLOR', 'Cor inválida. Use #RRGGBB ou um número de 0 a 16777215.');\n}\n\nfunction parsePermissions(raw: string): string[] | undefined {\n const value = raw.trim();\n if (!value) return undefined;\n const names = value.split(',').map(name => name.trim()).filter(Boolean);\n if (!names.length) return undefined;\n return names;\n}\n\nfunction pickProperty(role: RoleInfo, raw: string, fallback = false): unknown {\n const property = raw.trim();\n if (!property) {\n if (fallback) return role;\n throw new YuzuhaError('ROLE_PROPERTY', `Propriedade inválida. Use: ${ROLE_PROPERTIES.join(', ')}.`);\n }\n if (!isRoleProperty(property)) throw new YuzuhaError('ROLE_PROPERTY', `Propriedade inválida. Use: ${ROLE_PROPERTIES.join(', ')}.`);\n const value = role[property];\n return value === null ? '' : value;\n}\n\nfunction checkName(name: string): string {\n const value = name.trim();\n if (!value || value.length > 100) throw new YuzuhaError('ROLE_NAME', 'Nome do cargo deve ter entre 1 e 100 caracteres.');\n return value;\n}\n\nfunction optionalName(raw: string | undefined): string | undefined {\n if (raw === undefined) return undefined;\n const value = raw.trim();\n if (!value) return undefined;\n return checkName(value);\n}\n\nasync function memberTarget(c: FunctionCall, index: number): Promise<string> {\n const value = (await c.text(index)).trim();\n if (!value) throw new YuzuhaError('ROLE_USER', 'Informe o usuário.');\n const mention = /^<@!?(\\d+)>$/.exec(value)?.[1];\n if (mention) return mention;\n return value;\n}\n\nasync function roleTarget(c: FunctionCall, index: number): Promise<string> {\n const value = (await c.text(index)).trim();\n if (!value) throw new YuzuhaError('ROLE_ARG', 'Informe o cargo.');\n return value;\n}\n\nexport const roleFunctions = defineFunctions(fn => {\n fn('moveRole', 'roles', 2, 2, '[cargo;posição]', 'Move cargo com autorização e hierarquia do autor e do bot; posição a partir de 1.', async c => {\n const guildID = c.ctx.requireGuild();\n const role = await roleTarget(c, 0);\n const position = integer(await c.text(1), 'Posição');\n if (position < 1) throw new YuzuhaError('POSITION', 'Posição deve ser um inteiro a partir de 1.');\n await c.ctx.resources.roles.move(guildID, role, position);\n return '';\n });\n fn('role', 'roles', 1, 2, '[cargo;propriedade?]', 'Resolve cargo do servidor atual; retorna o cargo ou uma propriedade.', async c => {\n const guildID = c.ctx.requireGuild();\n const info = await c.ctx.resources.roles.resolve(guildID, await roleTarget(c, 0));\n if (c.count < 2) return info;\n return pickProperty(info, await c.text(1));\n });\n fn('roles', 'roles', 0, 0, '', 'Lista cargos do servidor ordenados por posição.', async c => {\n const guildID = c.ctx.requireGuild();\n return await c.ctx.resources.roles.list(guildID);\n });\n fn('hasRole', 'roles', 2, 2, '[usuário;cargo]', 'Verifica se o usuário possui o cargo.', async c => {\n const guildID = c.ctx.requireGuild();\n return await c.ctx.resources.roles.has(guildID, await memberTarget(c, 0), await roleTarget(c, 1));\n });\n fn('addRole', 'roles', 2, 2, '[usuário;cargo]', 'Adiciona cargo ao usuário.', async c => {\n const guildID = c.ctx.requireGuild();\n await c.ctx.resources.roles.add(guildID, await memberTarget(c, 0), await roleTarget(c, 1));\n return '';\n });\n fn('removeRole', 'roles', 2, 2, '[usuário;cargo]', 'Remove cargo do usuário.', async c => {\n const guildID = c.ctx.requireGuild();\n await c.ctx.resources.roles.remove(guildID, await memberTarget(c, 0), await roleTarget(c, 1));\n return '';\n });\n fn('createRole', 'roles', 1, 3, '[nome;cor?;permissões?]', 'Cria cargo; cor #RRGGBB ou número; permissões separadas por vírgula.', async c => {\n const guildID = c.ctx.requireGuild();\n const name = checkName(await c.text(0));\n const color = c.count > 1 ? parseColor(await c.text(1)) : undefined;\n const permissions = c.count > 2 ? parsePermissions(await c.text(2)) : undefined;\n return await c.ctx.resources.roles.create(guildID, { name, color, permissions });\n });\n fn('editRole', 'roles', 1, 4, '[cargo;nome?;cor?;permissões?]', 'Edita cargo; texto vazio mantém cada campo.', async c => {\n const guildID = c.ctx.requireGuild();\n const role = await roleTarget(c, 0);\n const name = c.count > 1 ? optionalName(await c.text(1)) : undefined;\n const color = c.count > 2 ? parseColor(await c.text(2)) : undefined;\n const permissions = c.count > 3 ? parsePermissions(await c.text(3)) : undefined;\n return await c.ctx.resources.roles.edit(guildID, role, { name, color, permissions });\n });\n fn('deleteRole', 'roles', 1, 1, '[cargo]', 'Exclui cargo do servidor.', async c => {\n const guildID = c.ctx.requireGuild();\n await c.ctx.resources.roles.delete(guildID, await roleTarget(c, 0));\n return '';\n });\n});\n"]}
1
+ {"version":3,"file":"native-roles.js","sourceRoot":"","sources":["../../../src/functions/builtins/native-roles.ts"],"names":[],"mappings":"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","sourcesContent":["import { YuzuhaError } from '../../errors.js';\nimport type { RoleInfo } from '../../ports/resources/roles.js';\nimport type { FunctionCall } from '../runtime/types.js';\nimport { defineFunctions } from './definition.js';\nimport { integer } from './language/common.js';\n\nconst ROLE_PROPERTIES = ['id', 'name', 'color', 'position', 'permissions', 'hoist', 'mentionable', 'unicodeEmoji', 'managed'] as const;\ntype RoleProperty = (typeof ROLE_PROPERTIES)[number];\n\nfunction isRoleProperty(value: string): value is RoleProperty {\n return (ROLE_PROPERTIES as readonly string[]).includes(value);\n}\n\nfunction parseColor(raw: string): number | undefined {\n const value = raw.trim();\n if (!value) return undefined;\n const hex = value.startsWith('#') ? value.slice(1) : value;\n if (/^[0-9a-fA-F]{6}$/.test(hex)) return parseInt(hex, 16);\n if (/^\\d+$/.test(value)) {\n const number = Number(value);\n if (Number.isSafeInteger(number) && number >= 0 && number <= 0xffffff) return number;\n }\n throw new YuzuhaError('ROLE_COLOR', 'Cor inválida. Use #RRGGBB ou um número de 0 a 16777215.');\n}\n\nfunction parsePermissions(raw: string): string[] | undefined {\n const value = raw.trim();\n if (!value) return undefined;\n const names = value.split(',').map(name => name.trim()).filter(Boolean);\n if (!names.length) return undefined;\n return names;\n}\n\nfunction pickProperty(role: RoleInfo, raw: string, fallback = false): unknown {\n const property = raw.trim();\n if (!property) {\n if (fallback) return role;\n throw new YuzuhaError('ROLE_PROPERTY', `Propriedade inválida. Use: ${ROLE_PROPERTIES.join(', ')}.`);\n }\n if (!isRoleProperty(property)) throw new YuzuhaError('ROLE_PROPERTY', `Propriedade inválida. Use: ${ROLE_PROPERTIES.join(', ')}.`);\n const value = role[property];\n return value === null ? '' : value;\n}\n\nfunction checkName(name: string): string {\n const value = name.trim();\n if (!value || value.length > 100) throw new YuzuhaError('ROLE_NAME', 'Nome do cargo deve ter entre 1 e 100 caracteres.');\n return value;\n}\n\nfunction optionalName(raw: string | undefined): string | undefined {\n if (raw === undefined) return undefined;\n const value = raw.trim();\n if (!value) return undefined;\n return checkName(value);\n}\n\nasync function memberTarget(c: FunctionCall, index: number): Promise<string> {\n const value = (await c.text(index)).trim();\n if (!value) throw new YuzuhaError('ROLE_USER', 'Informe o usuário.');\n const mention = /^<@!?(\\d+)>$/.exec(value)?.[1];\n if (mention) return mention;\n return value;\n}\n\nasync function roleTarget(c: FunctionCall, index: number): Promise<string> {\n const value = (await c.text(index)).trim();\n if (!value) throw new YuzuhaError('ROLE_ARG', 'Informe o cargo.');\n return value;\n}\n\nexport const roleFunctions = defineFunctions(fn => {\n fn('moveRole', 'roles', 2, 2, '[cargo;posição]', 'Move cargo com autorização e hierarquia do autor e do bot; posição a partir de 1.', async c => {\n const guildID = c.ctx.requireGuild();\n const role = await roleTarget(c, 0);\n const position = integer(await c.text(1), 'Posição');\n if (position < 1) throw new YuzuhaError('POSITION', 'Posição deve ser um inteiro a partir de 1.');\n await c.ctx.resources.roles.move(guildID, role, position);\n return '';\n });\n fn('role', 'roles', 1, 2, '[cargo;propriedade?]', 'Resolve cargo do servidor atual; retorna o cargo ou uma propriedade.', async c => {\n const guildID = c.ctx.requireGuild();\n const info = await c.ctx.resources.roles.resolve(guildID, await roleTarget(c, 0));\n if (c.count < 2) return info;\n return pickProperty(info, await c.text(1));\n });\n fn('roles', 'roles', 0, 0, '', 'Lista cargos do servidor ordenados por posição.', async c => {\n const guildID = c.ctx.requireGuild();\n return await c.ctx.resources.roles.list(guildID);\n });\n fn('hasRole', 'roles', 2, 2, '[usuário;cargo]', 'Verifica se o usuário possui o cargo.', async c => {\n const guildID = c.ctx.requireGuild();\n return await c.ctx.resources.roles.has(guildID, await memberTarget(c, 0), await roleTarget(c, 1));\n });\n fn('addRole', 'roles', 2, 2, '[usuário;cargo]', 'Adiciona cargo ao usuário.', async c => {\n const guildID = c.ctx.requireGuild();\n await c.ctx.resources.roles.add(guildID, await memberTarget(c, 0), await roleTarget(c, 1));\n return '';\n });\n fn('removeRole', 'roles', 2, 2, '[usuário;cargo]', 'Remove cargo do usuário.', async c => {\n const guildID = c.ctx.requireGuild();\n await c.ctx.resources.roles.remove(guildID, await memberTarget(c, 0), await roleTarget(c, 1));\n return '';\n });\n fn('createRole', 'roles', 1, 3, '[nome;cor?;permissões?]', 'Cria cargo; cor #RRGGBB ou número; permissões separadas por vírgula.', async c => {\n const guildID = c.ctx.requireGuild();\n const name = checkName(await c.text(0));\n const color = c.count > 1 ? parseColor(await c.text(1)) : undefined;\n const permissions = c.count > 2 ? parsePermissions(await c.text(2)) : undefined;\n return await c.ctx.resources.roles.create(guildID, { name, color, permissions });\n });\n fn('editRole', 'roles', 1, 4, '[cargo;nome?;cor?;permissões?]', 'Edita cargo; texto vazio mantém cada campo.', async c => {\n const guildID = c.ctx.requireGuild();\n const role = await roleTarget(c, 0);\n const name = c.count > 1 ? optionalName(await c.text(1)) : undefined;\n const color = c.count > 2 ? parseColor(await c.text(2)) : undefined;\n const permissions = c.count > 3 ? parsePermissions(await c.text(3)) : undefined;\n return await c.ctx.resources.roles.edit(guildID, role, { name, color, permissions });\n });\n fn('deleteRole', 'roles', 1, 1, '[cargo]', 'Exclui cargo do servidor.', async c => {\n const guildID = c.ctx.requireGuild();\n await c.ctx.resources.roles.delete(guildID, await roleTarget(c, 0));\n return '';\n });\n});\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const threadFunctions: import("../runtime/types.js").FunctionDefinition[];
2
+ //# sourceMappingURL=native-threads.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-threads.d.ts","sourceRoot":"","sources":["../../../src/functions/builtins/native-threads.ts"],"names":[],"mappings":"AAuBA,eAAO,MAAM,eAAe,oDAmF1B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"native-threads.js","sourceRoot":"","sources":["../../../src/scripting/builtins/native-threads.ts"],"names":[],"mappings":"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","sourcesContent":["import { YuzuhaError } from '../../errors.js';\nimport { defineFunctions } from './definition.js';\nimport { userID } from '../../domain/values.js';\n\nconst DURATIONS = [60, 1440, 4320, 10080];\n\nfunction archiveDuration(raw: string): number {\n if (!raw.trim()) return 1440;\n const value = Number(raw);\n if (!Number.isSafeInteger(value) || !DURATIONS.includes(value)) {\n throw new YuzuhaError('THREAD_ARCHIVE', 'Arquivamento deve ser 60, 1440, 4320 ou 10080 minutos.');\n }\n return value;\n}\n\nfunction lockedFlag(raw: string): boolean {\n const value = raw.trim().toLowerCase();\n if (!value) return false;\n if (value === 'true') return true;\n if (value === 'false') return false;\n throw new YuzuhaError('THREAD_LOCK', 'Bloquear aceita true ou false.');\n}\n\nexport const threadFunctions = defineFunctions(fn => {\n fn('activeThreads', 'threads', 0, 0, '', 'Lista threads ativas do servidor e suas associações.', async c => {\n return c.ctx.resources.threads.active(c.ctx.requireGuild());\n });\n fn('archivedThreads', 'threads', 1, 4, '[canal;tipo?;limite?;antes?]', 'Pagina threads arquivadas: public/private usam timestamp ISO; joined usa ID.', async c => {\n c.ctx.requireGuild();\n const channelID = (await c.text(0)).trim();\n if (!channelID) throw new YuzuhaError('THREAD_PARENT', 'Informe o canal pai.');\n const type = c.count > 1 ? (await c.text(1)).trim() || 'public' : 'public';\n if (type !== 'public' && type !== 'private' && type !== 'joined') throw new YuzuhaError('THREAD_PAGE', 'Tipo deve ser public, private ou joined.');\n const limit = c.count > 2 && (await c.text(2)).trim() ? Number(await c.text(2)) : 50;\n if (!Number.isSafeInteger(limit) || limit < 2 || limit > 100) throw new YuzuhaError('THREAD_PAGE', 'Limite deve ser entre 2 e 100.');\n const before = c.count > 3 ? (await c.text(3)).trim() || undefined : undefined;\n if (before !== undefined && (type === 'joined' ? !/^\\d+$/.test(before)\n : !/^\\d{4}-\\d{2}-\\d{2}T/.test(before) || !Number.isFinite(Date.parse(before)))) {\n throw new YuzuhaError('THREAD_CURSOR', 'Cursor inválido para o tipo de paginação.');\n }\n return c.ctx.resources.threads.archived(channelID, { type, limit, before });\n });\n for (const [name, method] of [['addThreadMember', 'addMember'], ['removeThreadMember', 'removeMember']] as const) {\n fn(name, 'threads', 2, 2, '[thread;usuário]', 'Adiciona ou remove um membro da thread.', async c => {\n c.ctx.requireGuild();\n const threadID = (await c.text(0)).trim();\n if (!threadID) throw new YuzuhaError('THREAD_ID', 'ID da thread é obrigatório.');\n await c.ctx.resources.threads[method](threadID, userID(await c.text(1)));\n return '';\n });\n }\n fn('threadMembers', 'threads', 1, 3, '[thread;limite?;após?]', 'Lista membros da thread com limite de 1 a 100 e cursor por usuário.', async c => {\n c.ctx.requireGuild();\n const threadID = (await c.text(0)).trim();\n if (!threadID) throw new YuzuhaError('THREAD_ID', 'ID da thread é obrigatório.');\n const raw = c.count > 1 ? (await c.text(1)).trim() : '';\n const limit = raw ? Number(raw) : 100;\n if (!Number.isSafeInteger(limit) || limit < 1 || limit > 100) throw new YuzuhaError('THREAD_LIMIT', 'Limite deve ser um inteiro entre 1 e 100.');\n const after = c.count > 2 ? (await c.text(2)).trim() || undefined : undefined;\n return c.ctx.resources.threads.members(threadID, limit, after);\n });\n fn('threadMember', 'threads', 1, 2, '[thread;usuário?]', 'Busca um membro da thread com flags e estado de mute; usuário padrão é o autor.', async c => {\n c.ctx.requireGuild();\n const threadID = (await c.text(0)).trim();\n if (!threadID) throw new YuzuhaError('THREAD_ID', 'ID da thread é obrigatório.');\n const rawUserID = c.count > 1 ? (await c.text(1)).trim() : '';\n return c.ctx.resources.threads.member(threadID, userID(rawUserID || c.ctx.authorID));\n });\n fn('createThread', 'threads', 1, 4, '[nome;canal?;mensagem?;arquivamento?]', 'Cria thread no canal atual ou informado.', async c => {\n c.ctx.requireGuild();\n const name = await c.text(0);\n if (!name.trim()) throw new YuzuhaError('THREAD_NAME', 'Nome da thread é obrigatório.');\n const channelID = c.count > 1 && (await c.text(1)).trim() ? await c.text(1) : c.ctx.message.channelID;\n const messageID = c.count > 2 && (await c.text(2)).trim() ? (await c.text(2)).trim() : undefined;\n const autoArchiveDuration = c.count > 3 ? archiveDuration(await c.text(3)) : 1440;\n return c.ctx.resources.threads.create(channelID, { name: name.trim(), messageID, autoArchiveDuration });\n });\n fn('archiveThread', 'threads', 1, 2, '[thread;bloquear?]', 'Arquiva thread; bloquear aceita true/false.', async c => {\n c.ctx.requireGuild();\n const threadID = await c.text(0);\n if (!threadID.trim()) throw new YuzuhaError('THREAD_ID', 'ID da thread é obrigatório.');\n await c.ctx.resources.threads.archive(threadID.trim(), c.count > 1 ? lockedFlag(await c.text(1)) : false);\n return '';\n });\n fn('unarchiveThread', 'threads', 1, 1, '[thread]', 'Desarquiva thread.', async c => {\n c.ctx.requireGuild();\n const threadID = await c.text(0);\n if (!threadID.trim()) throw new YuzuhaError('THREAD_ID', 'ID da thread é obrigatório.');\n await c.ctx.resources.threads.unarchive(threadID.trim());\n return '';\n });\n fn('forumPost', 'threads', 3, 4, '[canal;título;conteúdo;tags?]', 'Cria post em fórum/mídia; tags separadas por vírgula.', async c => {\n c.ctx.requireGuild();\n const channelID = await c.text(0);\n const name = await c.text(1);\n const content = await c.text(2);\n if (!channelID.trim()) throw new YuzuhaError('THREAD_CHANNEL', 'Canal do fórum é obrigatório.');\n if (!name.trim()) throw new YuzuhaError('THREAD_NAME', 'Título do post é obrigatório.');\n if (!content) throw new YuzuhaError('THREAD_CONTENT', 'Conteúdo do post é obrigatório.');\n const tags = c.count > 3\n ? (await c.text(3)).split(',').map(tag => tag.trim()).filter(Boolean)\n : undefined;\n return c.ctx.resources.threads.forumPost(channelID.trim(), {\n name: name.trim(), content, tags: tags?.length ? tags : undefined,\n });\n });\n});\n"]}
1
+ {"version":3,"file":"native-threads.js","sourceRoot":"","sources":["../../../src/functions/builtins/native-threads.ts"],"names":[],"mappings":"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","sourcesContent":["import { YuzuhaError } from '../../errors.js';\nimport { defineFunctions } from './definition.js';\nimport { userID } from '../../domain/values.js';\n\nconst DURATIONS = [60, 1440, 4320, 10080];\n\nfunction archiveDuration(raw: string): number {\n if (!raw.trim()) return 1440;\n const value = Number(raw);\n if (!Number.isSafeInteger(value) || !DURATIONS.includes(value)) {\n throw new YuzuhaError('THREAD_ARCHIVE', 'Arquivamento deve ser 60, 1440, 4320 ou 10080 minutos.');\n }\n return value;\n}\n\nfunction lockedFlag(raw: string): boolean {\n const value = raw.trim().toLowerCase();\n if (!value) return false;\n if (value === 'true') return true;\n if (value === 'false') return false;\n throw new YuzuhaError('THREAD_LOCK', 'Bloquear aceita true ou false.');\n}\n\nexport const threadFunctions = defineFunctions(fn => {\n fn('activeThreads', 'threads', 0, 0, '', 'Lista threads ativas do servidor e suas associações.', async c => {\n return c.ctx.resources.threads.active(c.ctx.requireGuild());\n });\n fn('archivedThreads', 'threads', 1, 4, '[canal;tipo?;limite?;antes?]', 'Pagina threads arquivadas: public/private usam timestamp ISO; joined usa ID.', async c => {\n c.ctx.requireGuild();\n const channelID = (await c.text(0)).trim();\n if (!channelID) throw new YuzuhaError('THREAD_PARENT', 'Informe o canal pai.');\n const type = c.count > 1 ? (await c.text(1)).trim() || 'public' : 'public';\n if (type !== 'public' && type !== 'private' && type !== 'joined') throw new YuzuhaError('THREAD_PAGE', 'Tipo deve ser public, private ou joined.');\n const limit = c.count > 2 && (await c.text(2)).trim() ? Number(await c.text(2)) : 50;\n if (!Number.isSafeInteger(limit) || limit < 2 || limit > 100) throw new YuzuhaError('THREAD_PAGE', 'Limite deve ser entre 2 e 100.');\n const before = c.count > 3 ? (await c.text(3)).trim() || undefined : undefined;\n if (before !== undefined && (type === 'joined' ? !/^\\d+$/.test(before)\n : !/^\\d{4}-\\d{2}-\\d{2}T/.test(before) || !Number.isFinite(Date.parse(before)))) {\n throw new YuzuhaError('THREAD_CURSOR', 'Cursor inválido para o tipo de paginação.');\n }\n return c.ctx.resources.threads.archived(channelID, { type, limit, before });\n });\n for (const [name, method] of [['addThreadMember', 'addMember'], ['removeThreadMember', 'removeMember']] as const) {\n fn(name, 'threads', 2, 2, '[thread;usuário]', 'Adiciona ou remove um membro da thread.', async c => {\n c.ctx.requireGuild();\n const threadID = (await c.text(0)).trim();\n if (!threadID) throw new YuzuhaError('THREAD_ID', 'ID da thread é obrigatório.');\n await c.ctx.resources.threads[method](threadID, userID(await c.text(1)));\n return '';\n });\n }\n fn('threadMembers', 'threads', 1, 3, '[thread;limite?;após?]', 'Lista membros da thread com limite de 1 a 100 e cursor por usuário.', async c => {\n c.ctx.requireGuild();\n const threadID = (await c.text(0)).trim();\n if (!threadID) throw new YuzuhaError('THREAD_ID', 'ID da thread é obrigatório.');\n const raw = c.count > 1 ? (await c.text(1)).trim() : '';\n const limit = raw ? Number(raw) : 100;\n if (!Number.isSafeInteger(limit) || limit < 1 || limit > 100) throw new YuzuhaError('THREAD_LIMIT', 'Limite deve ser um inteiro entre 1 e 100.');\n const after = c.count > 2 ? (await c.text(2)).trim() || undefined : undefined;\n return c.ctx.resources.threads.members(threadID, limit, after);\n });\n fn('threadMember', 'threads', 1, 2, '[thread;usuário?]', 'Busca um membro da thread com flags e estado de mute; usuário padrão é o autor.', async c => {\n c.ctx.requireGuild();\n const threadID = (await c.text(0)).trim();\n if (!threadID) throw new YuzuhaError('THREAD_ID', 'ID da thread é obrigatório.');\n const rawUserID = c.count > 1 ? (await c.text(1)).trim() : '';\n return c.ctx.resources.threads.member(threadID, userID(rawUserID || c.ctx.authorID));\n });\n fn('createThread', 'threads', 1, 4, '[nome;canal?;mensagem?;arquivamento?]', 'Cria thread no canal atual ou informado.', async c => {\n c.ctx.requireGuild();\n const name = await c.text(0);\n if (!name.trim()) throw new YuzuhaError('THREAD_NAME', 'Nome da thread é obrigatório.');\n const channelID = c.count > 1 && (await c.text(1)).trim() ? await c.text(1) : c.ctx.message.channelID;\n const messageID = c.count > 2 && (await c.text(2)).trim() ? (await c.text(2)).trim() : undefined;\n const autoArchiveDuration = c.count > 3 ? archiveDuration(await c.text(3)) : 1440;\n return c.ctx.resources.threads.create(channelID, { name: name.trim(), messageID, autoArchiveDuration });\n });\n fn('archiveThread', 'threads', 1, 2, '[thread;bloquear?]', 'Arquiva thread; bloquear aceita true/false.', async c => {\n c.ctx.requireGuild();\n const threadID = await c.text(0);\n if (!threadID.trim()) throw new YuzuhaError('THREAD_ID', 'ID da thread é obrigatório.');\n await c.ctx.resources.threads.archive(threadID.trim(), c.count > 1 ? lockedFlag(await c.text(1)) : false);\n return '';\n });\n fn('unarchiveThread', 'threads', 1, 1, '[thread]', 'Desarquiva thread.', async c => {\n c.ctx.requireGuild();\n const threadID = await c.text(0);\n if (!threadID.trim()) throw new YuzuhaError('THREAD_ID', 'ID da thread é obrigatório.');\n await c.ctx.resources.threads.unarchive(threadID.trim());\n return '';\n });\n fn('forumPost', 'threads', 3, 4, '[canal;título;conteúdo;tags?]', 'Cria post em fórum/mídia; tags separadas por vírgula.', async c => {\n c.ctx.requireGuild();\n const channelID = await c.text(0);\n const name = await c.text(1);\n const content = await c.text(2);\n if (!channelID.trim()) throw new YuzuhaError('THREAD_CHANNEL', 'Canal do fórum é obrigatório.');\n if (!name.trim()) throw new YuzuhaError('THREAD_NAME', 'Título do post é obrigatório.');\n if (!content) throw new YuzuhaError('THREAD_CONTENT', 'Conteúdo do post é obrigatório.');\n const tags = c.count > 3\n ? (await c.text(3)).split(',').map(tag => tag.trim()).filter(Boolean)\n : undefined;\n return c.ctx.resources.threads.forumPost(channelID.trim(), {\n name: name.trim(), content, tags: tags?.length ? tags : undefined,\n });\n });\n});\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const userFunctions: import("../runtime/types.js").FunctionDefinition[];
2
+ //# sourceMappingURL=native-users.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-users.d.ts","sourceRoot":"","sources":["../../../src/functions/builtins/native-users.ts"],"names":[],"mappings":"AA4EA,eAAO,MAAM,aAAa,oDAqGxB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"native-users.js","sourceRoot":"","sources":["../../../src/scripting/builtins/native-users.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,CAAU,CAAC;AACjE,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAU,CAAC;AAE5F,SAAS,GAAG,CAAC,KAAa,EAAE,GAAW;IACrC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAC1C,OAAQ,KAAiC,CAAC,GAAG,CAAC,CAAC;AACjD,CAAC;AAED,4EAA4E;AAC5E,KAAK,UAAU,KAAK,CAAI,GAAqB;IAC3C,IAAI,CAAC;QACH,OAAO,MAAM,GAAG,EAAE,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,UAAU;YAAE,MAAM,KAAK,CAAC;QAC7C,MAAM,IAAI,GAAI,KAA+C,EAAE,IAAI,CAAC;QACpE,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QAC3E,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,CAAe,EAAE,GAAW,EAAE,QAAgB;IACjE,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC;QAAE,OAAO,QAAQ,CAAC;IACnC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QAC5E,MAAM,IAAI,WAAW,CAAC,OAAO,EAAE,wCAAwC,GAAG,GAAG,CAAC,CAAC;IACjF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,KAAK,UAAU,IAAI,CAAC,CAAe,EAAE,KAAa;IAChD,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK;QAAE,OAAO,SAAS,CAAC;IACvC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,EAAE,IAAI,KAAK,GAAG,IAAI,EAAE,CAAC;QAC9E,MAAM,IAAI,WAAW,CAAC,MAAM,EAAE,8CAA8C,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,KAAK,CAAC,GAAkB,EAAE,SAA6B;IAC9D,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,GAAG,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,GAAG,SAAS,SAAS,EAAE,CAAC;IACpC,CAAC;AACH,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,IAAK,QAA8B,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAuB,CAAC;IACpF,MAAM,IAAI,WAAW,CAAC,QAAQ,EAAE,iDAAiD,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACvC,IAAK,cAAoC,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAqB,CAAC;IACxF,MAAM,IAAI,WAAW,CAAC,UAAU,EAAE,kEAAkE,CAAC,CAAC;AACxG,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,CAAe,EAAE,KAAa;IACxD,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,WAAW,CAAC,UAAU,EAAE,uCAAuC,CAAC,CAAC;IAC7F,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,eAAe,CAAC,EAAE,CAAC,EAAE;IAChD,EAAE,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,6EAA6E,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,aAAa,EAAE,CAAC,CAAC;IAClJ,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,2EAA2E,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QACzH,MAAM,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACzB,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,mFAAmF,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QAC3I,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;IAC5F,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,sFAAsF,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QAC/I,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,MAAM;YAAE,MAAM,IAAI,WAAW,CAAC,gBAAgB,EAAE,8CAA8C,CAAC,CAAC;QAC/J,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,eAAe,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,mBAAmB,EAAE,qFAAqF,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QACvJ,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;QACrF,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC7D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;YAAE,MAAM,IAAI,WAAW,CAAC,YAAY,EAAE,wBAAwB,CAAC,CAAC;QAC5F,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,MAAM;YAAE,MAAM,IAAI,WAAW,CAAC,gBAAgB,EAAE,8CAA8C,CAAC,CAAC;QAC/J,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;IACpG,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,mBAAmB,EAAE,mEAAmE,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QAC5H,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/D,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,mBAAmB,EAAE,iEAAiE,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QAC5H,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1E,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,EAAE,CAAC;QAC3B,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,oDAAoD,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QACxG,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACrC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,wDAAwD,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QAC/G,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/D,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,oDAAoD,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QACvG,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,qCAAqC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CACpF,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC3D,EAAE,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,eAAe,EAAE,mEAAmE,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QAC9H,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,GAAG,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/D,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,0DAA0D,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QAC7G,MAAM,EAAE,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3C,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,6CAA6C,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QACpG,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC;QACrE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACrD,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,mDAAmD,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAC1G,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9F,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,oDAAoD,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE,CAC7G,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,uDAAuD,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QACxG,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACrC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,6DAA6D,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QACnH,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,CAAC;QACrC,OAAO,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,MAAM,KAAK,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,2BAA2B,EAAE,oEAAoE,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QAC5I,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;YAChB,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YAChD,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,UAAU,EAAE,iDAAiD,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QACtG,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IACH,EAAE,CAAC,aAAa,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,mBAAmB,EAAE,uCAAuC,EAAE,KAAK,EAAC,CAAC,EAAC,EAAE;QACvG,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvE,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAClE,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import type { ActivityType, PresenceStatus } from '../../ports/resources/common.js';\nimport type { FunctionCall } from '../types.js';\nimport { GuardError, YuzuhaError } from '../../errors.js';\nimport { defineFunctions } from './definition.js';\nimport { userID } from '../../domain/values.js';\n\nconst STATUSES = ['online', 'idle', 'dnd', 'invisible'] as const;\nconst ACTIVITY_TYPES = ['playing', 'listening', 'watching', 'competing', 'custom'] as const;\n\nfunction own(value: object, key: string): unknown {\n if (!Object.hasOwn(value, key)) return '';\n return (value as Record<string, unknown>)[key];\n}\n\n/** Devolve '' quando o recurso indica ausência; nunca engole GuardError. */\nasync function found<T>(run: () => Promise<T>): Promise<T | ''> {\n try {\n return await run();\n } catch (error) {\n if (error instanceof GuardError) throw error;\n const code = (error as { code?: unknown } | null | undefined)?.code;\n if (typeof code === 'string' && /NOT_FOUND|UNKNOWN/i.test(code)) return '';\n throw error;\n }\n}\n\nasync function limit(c: FunctionCall, max: number, fallback: number): Promise<number> {\n if (c.count === 0) return fallback;\n const raw = await c.text(0);\n const value = Number(raw);\n if (!raw.trim() || !Number.isSafeInteger(value) || value < 1 || value > max) {\n throw new YuzuhaError('LIMIT', `Limite deve ser um inteiro entre 1 e ${max}.`);\n }\n return value;\n}\n\nasync function size(c: FunctionCall, index: number): Promise<number | undefined> {\n if (c.count <= index) return undefined;\n const raw = await c.text(index);\n const value = Number(raw);\n if (!raw.trim() || !Number.isSafeInteger(value) || value < 16 || value > 4096) {\n throw new YuzuhaError('SIZE', 'Tamanho deve ser um inteiro entre 16 e 4096.');\n }\n return value;\n}\n\nfunction sized(url: string | null, imageSize: number | undefined): string {\n if (!url) return '';\n if (imageSize === undefined) return url;\n try {\n const parsed = new URL(url);\n parsed.searchParams.set('size', String(imageSize));\n return parsed.toString();\n } catch {\n return `${url}?size=${imageSize}`;\n }\n}\n\nfunction statusOf(raw: string): PresenceStatus {\n const value = raw.trim().toLowerCase();\n if ((STATUSES as readonly string[]).includes(value)) return value as PresenceStatus;\n throw new YuzuhaError('STATUS', 'Status deve ser online, idle, dnd ou invisible.');\n}\n\nfunction activityTypeOf(raw: string): ActivityType {\n const value = raw.trim().toLowerCase();\n if ((ACTIVITY_TYPES as readonly string[]).includes(value)) return value as ActivityType;\n throw new YuzuhaError('ACTIVITY', 'Tipo deve ser playing, listening, watching, competing ou custom.');\n}\n\nasync function activityName(c: FunctionCall, index: number): Promise<string> {\n const name = await c.text(index);\n if (!name.trim()) throw new YuzuhaError('ACTIVITY', 'Nome da atividade não pode ser vazio.');\n return name;\n}\n\nexport const userFunctions = defineFunctions(fn => {\n fn('guildFeatures', 'users', 0, 0, '', 'Retorna as features do servidor atual como array; exige suporte do recurso.', c => c.ctx.guildFeatures());\n fn('leaveGuild', 'users', 0, 0, '', 'Remove o bot do servidor atual; somente o dono do servidor pode executar.', async c => {\n await c.ctx.leaveGuild();\n return '';\n });\n fn('userProfile', 'users', 1, 1, '[usuário]', 'Busca usuário, perfil global e perfil/membro do servidor atual quando disponível.', async c => {\n return c.ctx.resources.users.profile(userID(await c.text(0)), c.ctx.guildID || undefined);\n });\n fn('guildCounts', 'users', 0, 1, '[timeout?]', 'Solicita contagens ao vivo de membros e online ao gateway; timeout em milissegundos.', async c => {\n const guildID = c.ctx.requireGuild();\n const timeout = c.count ? Number(await c.text(0)) : 5000;\n if (!Number.isSafeInteger(timeout) || timeout < 1 || timeout > 60_000) throw new YuzuhaError('COUNTS_TIMEOUT', 'Timeout deve ser de 1 a 60000 milissegundos.');\n return c.ctx.resources.users.guildCounts(guildID, { timeout, signal: c.ctx.signal });\n });\n fn('channelCounts', 'users', 0, 2, '[canal?;timeout?]', 'Solicita contagens ao vivo do canal ao gateway, aguardando o evento correspondente.', async c => {\n const guildID = c.ctx.requireGuild();\n const raw = c.count ? (await c.text(0)).trim() : '';\n const channelID = raw ? /^<#(\\d+)>$/.exec(raw)?.[1] ?? raw : c.ctx.message.channelID;\n const timeout = c.count > 1 ? Number(await c.text(1)) : 5000;\n if (!/^\\d+$/.test(channelID)) throw new YuzuhaError('CHANNEL_ID', 'Informe o ID do canal.');\n if (!Number.isSafeInteger(timeout) || timeout < 1 || timeout > 60_000) throw new YuzuhaError('COUNTS_TIMEOUT', 'Timeout deve ser de 1 a 60000 milissegundos.');\n return c.ctx.resources.users.channelCounts(guildID, channelID, { timeout, signal: c.ctx.signal });\n });\n fn('user', 'users', 1, 2, '[id;propriedade?]', 'Usuário por ID, ou uma propriedade própria; vazio se não existir.', async c => {\n const id = await c.text(0);\n const info = await found(() => c.ctx.resources.users.user(id));\n if (info === '') return '';\n return c.count > 1 ? own(info, await c.text(1)) : info;\n });\n fn('member', 'users', 1, 2, '[id;propriedade?]', 'Membro do servidor atual, ou propriedade; vazio se não existir.', async c => {\n const guildID = c.ctx.requireGuild(), id = await c.text(0);\n const info = await found(() => c.ctx.resources.users.member(guildID, id));\n if (info === '') return '';\n return c.count > 1 ? own(info, await c.text(1)) : info;\n });\n fn('members', 'users', 0, 1, '[limite?]', 'Membros do servidor atual; padrão 50, máximo 1000.', async c => {\n const guildID = c.ctx.requireGuild();\n return c.ctx.resources.users.members(guildID, await limit(c, 1000, 50));\n });\n fn('avatar', 'users', 1, 2, '[id;tamanho?]', 'URL do avatar; tamanho de 16 a 4096; vazio se ausente.', async c => {\n const id = await c.text(0), imageSize = await size(c, 1);\n const info = await found(() => c.ctx.resources.users.user(id));\n if (info === '') return '';\n return sized(info.avatarURL, imageSize);\n });\n fn('displayName', 'users', 1, 1, '[id]', 'Nome de exibição do usuário; vazio se não existir.', async c => {\n const id = await c.text(0);\n const info = await found(() => c.ctx.resources.users.user(id));\n return info ? info.displayName : '';\n });\n fn('memberCount', 'users', 0, 0, '', 'Total de membros do servidor atual.', async c =>\n c.ctx.resources.users.memberCount(c.ctx.requireGuild()));\n fn('userBanner', 'users', 1, 2, '[id;tamanho?]', 'URL do banner do usuário; tamanho de 16 a 4096; vazio se ausente.', async c => {\n const id = await c.text(0), imageSize = await size(c, 1);\n const info = await found(() => c.ctx.resources.users.user(id));\n if (info === '') return '';\n return sized(info.bannerURL, imageSize);\n });\n fn('userCreated', 'users', 1, 1, '[id]', 'Criação da conta em milissegundos; vazio se não existir.', async c => {\n const id = await c.text(0);\n const info = await found(() => c.ctx.resources.users.user(id));\n return info ? info.createdTimestamp : '';\n });\n fn('guild', 'users', 0, 1, '[propriedade?]', 'Servidor atual, ou uma propriedade própria.', async c => {\n const info = await c.ctx.resources.users.guild(c.ctx.requireGuild());\n return c.count ? own(info, await c.text(0)) : info;\n });\n fn('guildIcon', 'users', 0, 1, '[tamanho?]', 'URL do ícone do servidor atual; vazio se ausente.', async c =>\n sized((await c.ctx.resources.users.guild(c.ctx.requireGuild())).iconURL, await size(c, 0)));\n fn('guildBanner', 'users', 0, 1, '[tamanho?]', 'URL do banner do servidor atual; vazio se ausente.', async c =>\n sized((await c.ctx.resources.users.guild(c.ctx.requireGuild())).bannerURL, await size(c, 0)));\n fn('bans', 'users', 0, 1, '[limite?]', 'Banimentos do servidor atual; padrão 50, máximo 1000.', async c => {\n const guildID = c.ctx.requireGuild();\n return c.ctx.resources.users.bans(guildID, await limit(c, 1000, 50));\n });\n fn('auditLogs', 'users', 0, 1, '[limite?]', 'Logs de auditoria do servidor atual; padrão 50, máximo 100.', async c => {\n const guildID = c.ctx.requireGuild();\n return c.ctx.resources.users.auditLogs(guildID, await limit(c, 100, 50));\n });\n fn('setPresence', 'users', 1, 3, '[status;atividade?;tipo?]', 'Define presença: status e atividade opcional (playing por padrão).', async c => {\n const status = statusOf(await c.text(0));\n if (c.count < 2) {\n await c.ctx.resources.users.setPresence(status);\n return '';\n }\n const name = await activityName(c, 1);\n const type = c.count > 2 ? activityTypeOf(await c.text(2)) : 'playing';\n await c.ctx.resources.users.setPresence(status, { type, name });\n return '';\n });\n fn('setStatus', 'users', 1, 1, '[status]', 'Define o status da presença; limpa a atividade.', async c => {\n await c.ctx.resources.users.setPresence(statusOf(await c.text(0)));\n return '';\n });\n fn('setActivity', 'users', 1, 2, '[atividade;tipo?]', 'Define a atividade com status online.', async c => {\n const name = await activityName(c, 0);\n const type = c.count > 1 ? activityTypeOf(await c.text(1)) : 'playing';\n await c.ctx.resources.users.setPresence('online', { type, name });\n return '';\n });\n});\n"]}
1
+ {"version":3,"file":"native-users.js","sourceRoot":"","sources":["../../../src/functions/builtins/native-users.ts"],"names":[],"mappings":"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","sourcesContent":["import type { ActivityType, PresenceStatus } from '../../ports/resources/common.js';\nimport type { FunctionCall } from '../runtime/types.js';\nimport { GuardError, YuzuhaError } from '../../errors.js';\nimport { defineFunctions } from './definition.js';\nimport { userID } from '../../domain/values.js';\n\nconst STATUSES = ['online', 'idle', 'dnd', 'invisible'] as const;\nconst ACTIVITY_TYPES = ['playing', 'listening', 'watching', 'competing', 'custom'] as const;\n\nfunction own(value: object, key: string): unknown {\n if (!Object.hasOwn(value, key)) return '';\n return (value as Record<string, unknown>)[key];\n}\n\n/** Devolve '' quando o recurso indica ausência; nunca engole GuardError. */\nasync function found<T>(run: () => Promise<T>): Promise<T | ''> {\n try {\n return await run();\n } catch (error) {\n if (error instanceof GuardError) throw error;\n const code = (error as { code?: unknown } | null | undefined)?.code;\n if (typeof code === 'string' && /NOT_FOUND|UNKNOWN/i.test(code)) return '';\n throw error;\n }\n}\n\nasync function limit(c: FunctionCall, max: number, fallback: number): Promise<number> {\n if (c.count === 0) return fallback;\n const raw = await c.text(0);\n const value = Number(raw);\n if (!raw.trim() || !Number.isSafeInteger(value) || value < 1 || value > max) {\n throw new YuzuhaError('LIMIT', `Limite deve ser um inteiro entre 1 e ${max}.`);\n }\n return value;\n}\n\nasync function size(c: FunctionCall, index: number): Promise<number | undefined> {\n if (c.count <= index) return undefined;\n const raw = await c.text(index);\n const value = Number(raw);\n if (!raw.trim() || !Number.isSafeInteger(value) || value < 16 || value > 4096) {\n throw new YuzuhaError('SIZE', 'Tamanho deve ser um inteiro entre 16 e 4096.');\n }\n return value;\n}\n\nfunction sized(url: string | null, imageSize: number | undefined): string {\n if (!url) return '';\n if (imageSize === undefined) return url;\n try {\n const parsed = new URL(url);\n parsed.searchParams.set('size', String(imageSize));\n return parsed.toString();\n } catch {\n return `${url}?size=${imageSize}`;\n }\n}\n\nfunction statusOf(raw: string): PresenceStatus {\n const value = raw.trim().toLowerCase();\n if ((STATUSES as readonly string[]).includes(value)) return value as PresenceStatus;\n throw new YuzuhaError('STATUS', 'Status deve ser online, idle, dnd ou invisible.');\n}\n\nfunction activityTypeOf(raw: string): ActivityType {\n const value = raw.trim().toLowerCase();\n if ((ACTIVITY_TYPES as readonly string[]).includes(value)) return value as ActivityType;\n throw new YuzuhaError('ACTIVITY', 'Tipo deve ser playing, listening, watching, competing ou custom.');\n}\n\nasync function activityName(c: FunctionCall, index: number): Promise<string> {\n const name = await c.text(index);\n if (!name.trim()) throw new YuzuhaError('ACTIVITY', 'Nome da atividade não pode ser vazio.');\n return name;\n}\n\nexport const userFunctions = defineFunctions(fn => {\n fn('guildFeatures', 'users', 0, 0, '', 'Retorna as features do servidor atual como array; exige suporte do recurso.', c => c.ctx.guildFeatures());\n fn('leaveGuild', 'users', 0, 0, '', 'Remove o bot do servidor atual; somente o dono do servidor pode executar.', async c => {\n await c.ctx.leaveGuild();\n return '';\n });\n fn('userProfile', 'users', 1, 1, '[usuário]', 'Busca usuário, perfil global e perfil/membro do servidor atual quando disponível.', async c => {\n return c.ctx.resources.users.profile(userID(await c.text(0)), c.ctx.guildID || undefined);\n });\n fn('guildCounts', 'users', 0, 1, '[timeout?]', 'Solicita contagens ao vivo de membros e online ao gateway; timeout em milissegundos.', async c => {\n const guildID = c.ctx.requireGuild();\n const timeout = c.count ? Number(await c.text(0)) : 5000;\n if (!Number.isSafeInteger(timeout) || timeout < 1 || timeout > 60_000) throw new YuzuhaError('COUNTS_TIMEOUT', 'Timeout deve ser de 1 a 60000 milissegundos.');\n return c.ctx.resources.users.guildCounts(guildID, { timeout, signal: c.ctx.signal });\n });\n fn('channelCounts', 'users', 0, 2, '[canal?;timeout?]', 'Solicita contagens ao vivo do canal ao gateway, aguardando o evento correspondente.', async c => {\n const guildID = c.ctx.requireGuild();\n const raw = c.count ? (await c.text(0)).trim() : '';\n const channelID = raw ? /^<#(\\d+)>$/.exec(raw)?.[1] ?? raw : c.ctx.message.channelID;\n const timeout = c.count > 1 ? Number(await c.text(1)) : 5000;\n if (!/^\\d+$/.test(channelID)) throw new YuzuhaError('CHANNEL_ID', 'Informe o ID do canal.');\n if (!Number.isSafeInteger(timeout) || timeout < 1 || timeout > 60_000) throw new YuzuhaError('COUNTS_TIMEOUT', 'Timeout deve ser de 1 a 60000 milissegundos.');\n return c.ctx.resources.users.channelCounts(guildID, channelID, { timeout, signal: c.ctx.signal });\n });\n fn('user', 'users', 1, 2, '[id;propriedade?]', 'Usuário por ID, ou uma propriedade própria; vazio se não existir.', async c => {\n const id = await c.text(0);\n const info = await found(() => c.ctx.resources.users.user(id));\n if (info === '') return '';\n return c.count > 1 ? own(info, await c.text(1)) : info;\n });\n fn('member', 'users', 1, 2, '[id;propriedade?]', 'Membro do servidor atual, ou propriedade; vazio se não existir.', async c => {\n const guildID = c.ctx.requireGuild(), id = await c.text(0);\n const info = await found(() => c.ctx.resources.users.member(guildID, id));\n if (info === '') return '';\n return c.count > 1 ? own(info, await c.text(1)) : info;\n });\n fn('members', 'users', 0, 1, '[limite?]', 'Membros do servidor atual; padrão 50, máximo 1000.', async c => {\n const guildID = c.ctx.requireGuild();\n return c.ctx.resources.users.members(guildID, await limit(c, 1000, 50));\n });\n fn('avatar', 'users', 1, 2, '[id;tamanho?]', 'URL do avatar; tamanho de 16 a 4096; vazio se ausente.', async c => {\n const id = await c.text(0), imageSize = await size(c, 1);\n const info = await found(() => c.ctx.resources.users.user(id));\n if (info === '') return '';\n return sized(info.avatarURL, imageSize);\n });\n fn('displayName', 'users', 1, 1, '[id]', 'Nome de exibição do usuário; vazio se não existir.', async c => {\n const id = await c.text(0);\n const info = await found(() => c.ctx.resources.users.user(id));\n return info ? info.displayName : '';\n });\n fn('memberCount', 'users', 0, 0, '', 'Total de membros do servidor atual.', async c =>\n c.ctx.resources.users.memberCount(c.ctx.requireGuild()));\n fn('userBanner', 'users', 1, 2, '[id;tamanho?]', 'URL do banner do usuário; tamanho de 16 a 4096; vazio se ausente.', async c => {\n const id = await c.text(0), imageSize = await size(c, 1);\n const info = await found(() => c.ctx.resources.users.user(id));\n if (info === '') return '';\n return sized(info.bannerURL, imageSize);\n });\n fn('userCreated', 'users', 1, 1, '[id]', 'Criação da conta em milissegundos; vazio se não existir.', async c => {\n const id = await c.text(0);\n const info = await found(() => c.ctx.resources.users.user(id));\n return info ? info.createdTimestamp : '';\n });\n fn('guild', 'users', 0, 1, '[propriedade?]', 'Servidor atual, ou uma propriedade própria.', async c => {\n const info = await c.ctx.resources.users.guild(c.ctx.requireGuild());\n return c.count ? own(info, await c.text(0)) : info;\n });\n fn('guildIcon', 'users', 0, 1, '[tamanho?]', 'URL do ícone do servidor atual; vazio se ausente.', async c =>\n sized((await c.ctx.resources.users.guild(c.ctx.requireGuild())).iconURL, await size(c, 0)));\n fn('guildBanner', 'users', 0, 1, '[tamanho?]', 'URL do banner do servidor atual; vazio se ausente.', async c =>\n sized((await c.ctx.resources.users.guild(c.ctx.requireGuild())).bannerURL, await size(c, 0)));\n fn('bans', 'users', 0, 1, '[limite?]', 'Banimentos do servidor atual; padrão 50, máximo 1000.', async c => {\n const guildID = c.ctx.requireGuild();\n return c.ctx.resources.users.bans(guildID, await limit(c, 1000, 50));\n });\n fn('auditLogs', 'users', 0, 1, '[limite?]', 'Logs de auditoria do servidor atual; padrão 50, máximo 100.', async c => {\n const guildID = c.ctx.requireGuild();\n return c.ctx.resources.users.auditLogs(guildID, await limit(c, 100, 50));\n });\n fn('setPresence', 'users', 1, 3, '[status;atividade?;tipo?]', 'Define presença: status e atividade opcional (playing por padrão).', async c => {\n const status = statusOf(await c.text(0));\n if (c.count < 2) {\n await c.ctx.resources.users.setPresence(status);\n return '';\n }\n const name = await activityName(c, 1);\n const type = c.count > 2 ? activityTypeOf(await c.text(2)) : 'playing';\n await c.ctx.resources.users.setPresence(status, { type, name });\n return '';\n });\n fn('setStatus', 'users', 1, 1, '[status]', 'Define o status da presença; limpa a atividade.', async c => {\n await c.ctx.resources.users.setPresence(statusOf(await c.text(0)));\n return '';\n });\n fn('setActivity', 'users', 1, 2, '[atividade;tipo?]', 'Define a atividade com status online.', async c => {\n const name = await activityName(c, 0);\n const type = c.count > 1 ? activityTypeOf(await c.text(1)) : 'playing';\n await c.ctx.resources.users.setPresence('online', { type, name });\n return '';\n });\n});\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const webhookFunctions: import("../runtime/types.js").FunctionDefinition[];
2
+ //# sourceMappingURL=native-webhooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-webhooks.d.ts","sourceRoot":"","sources":["../../../src/functions/builtins/native-webhooks.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,gBAAgB,oDAyB3B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"native-webhooks.js","sourceRoot":"","sources":["../../../src/scripting/builtins/native-webhooks.ts"],"names":[],"mappings":"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","sourcesContent":["import { YuzuhaError } from '../../errors.js';\nimport { defineFunctions } from './definition.js';\n\nfunction required(value: string, code: string, message: string): string {\n if (!value.trim()) throw new YuzuhaError(code, message);\n return value;\n}\n\nexport const webhookFunctions = defineFunctions(fn => {\n fn('createWebhook', 'webhooks', 2, 2, '[canal;nome]', 'Cria webhook no canal e retorna suas informações.', async c => {\n const channelID = await c.text(0);\n const name = required(await c.text(1), 'WEBHOOK_NAME', 'Informe o nome do webhook.');\n return c.ctx.resources.webhooks.create(channelID, name);\n });\n fn('webhooks', 'webhooks', 0, 1, '[canal?]', 'Lista webhooks do canal (padrão: canal atual).', async c =>\n c.ctx.resources.webhooks.list(c.count ? await c.text(0) : c.ctx.message.channelID));\n fn('sendWebhook', 'webhooks', 3, 3, '[id;token;texto]', 'Envia via webhook do servidor atual com ManageWebhooks do autor e bot; token não contorna autorização.', async c => {\n const id = required(await c.text(0), 'WEBHOOK_ID', 'Informe o ID do webhook.');\n const token = required(await c.text(1), 'WEBHOOK_TOKEN', 'Informe o token do webhook.');\n const content = required(await c.text(2), 'WEBHOOK_CONTENT', 'Informe o texto a enviar.');\n return await c.ctx.resources.webhooks.send(id, token, { content }) ?? '';\n });\n fn('editWebhook', 'webhooks', 2, 3, '[id;nome;token?]', 'Renomeia webhook do servidor atual com ManageWebhooks; sem token usa a autenticação do bot.', async c => {\n const id = required(await c.text(0), 'WEBHOOK_ID', 'Informe o ID do webhook.');\n const name = required(await c.text(1), 'WEBHOOK_NAME', 'Informe o novo nome do webhook.');\n await c.ctx.resources.webhooks.edit(id, c.count > 2 ? await c.text(2) || null : null, name);\n return '';\n });\n fn('deleteWebhook', 'webhooks', 1, 2, '[id;token?]', 'Apaga webhook do servidor atual com ManageWebhooks; token não contorna autorização.', async c => {\n const id = required(await c.text(0), 'WEBHOOK_ID', 'Informe o ID do webhook.');\n await c.ctx.resources.webhooks.delete(id, c.count > 1 ? await c.text(1) || null : null);\n return '';\n });\n});\n"]}
1
+ {"version":3,"file":"native-webhooks.js","sourceRoot":"","sources":["../../../src/functions/builtins/native-webhooks.ts"],"names":[],"mappings":"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","sourcesContent":["import { YuzuhaError } from '../../errors.js';\nimport { defineFunctions } from './definition.js';\n\nfunction required(value: string, code: string, message: string): string {\n if (!value.trim()) throw new YuzuhaError(code, message);\n return value;\n}\n\nexport const webhookFunctions = defineFunctions(fn => {\n fn('createWebhook', 'webhooks', 2, 2, '[canal;nome]', 'Cria webhook no canal e retorna suas informações.', async c => {\n const channelID = await c.text(0);\n const name = required(await c.text(1), 'WEBHOOK_NAME', 'Informe o nome do webhook.');\n return c.ctx.resources.webhooks.create(channelID, name);\n });\n fn('webhooks', 'webhooks', 0, 1, '[canal?]', 'Lista webhooks do canal (padrão: canal atual).', async c =>\n c.ctx.resources.webhooks.list(c.count ? await c.text(0) : c.ctx.message.channelID));\n fn('sendWebhook', 'webhooks', 3, 3, '[id;token;texto]', 'Envia via webhook do servidor atual com ManageWebhooks do autor e bot; token não contorna autorização.', async c => {\n const id = required(await c.text(0), 'WEBHOOK_ID', 'Informe o ID do webhook.');\n const token = required(await c.text(1), 'WEBHOOK_TOKEN', 'Informe o token do webhook.');\n const content = required(await c.text(2), 'WEBHOOK_CONTENT', 'Informe o texto a enviar.');\n return await c.ctx.resources.webhooks.send(id, token, { content }) ?? '';\n });\n fn('editWebhook', 'webhooks', 2, 3, '[id;nome;token?]', 'Renomeia webhook do servidor atual com ManageWebhooks; sem token usa a autenticação do bot.', async c => {\n const id = required(await c.text(0), 'WEBHOOK_ID', 'Informe o ID do webhook.');\n const name = required(await c.text(1), 'WEBHOOK_NAME', 'Informe o novo nome do webhook.');\n await c.ctx.resources.webhooks.edit(id, c.count > 2 ? await c.text(2) || null : null, name);\n return '';\n });\n fn('deleteWebhook', 'webhooks', 1, 2, '[id;token?]', 'Apaga webhook do servidor atual com ManageWebhooks; token não contorna autorização.', async c => {\n const id = required(await c.text(0), 'WEBHOOK_ID', 'Informe o ID do webhook.');\n await c.ctx.resources.webhooks.delete(id, c.count > 1 ? await c.text(1) || null : null);\n return '';\n });\n});\n"]}
@@ -1,6 +1,6 @@
1
1
  import type { Payload } from '../../domain/messages.js';
2
- import type { FunctionCall } from '../types.js';
2
+ import type { FunctionCall } from '../runtime/types.js';
3
3
  /** Converte o valor de `$reply`, `$sendMessage` e `$editMessage` em payload: texto, embed, lista de embeds ou objeto de mensagem. */
4
4
  export declare function payload(c: FunctionCall, value: unknown): Promise<Payload>;
5
- export declare const payloadFunctions: import("../types.js").FunctionDefinition[];
5
+ export declare const payloadFunctions: import("../runtime/types.js").FunctionDefinition[];
6
6
  //# sourceMappingURL=payload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../../src/functions/builtins/payload.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAA8C,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAIpG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAuBxD,qIAAqI;AACrI,wBAAsB,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAO/E;AA8ED,eAAO,MAAM,gBAAgB,oDAe3B,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import { assertEmbedCount, normalizeEmbed } from '../../domain/embeds.js';
2
2
  import { YuzuhaError } from '../../errors.js';
3
3
  import { AuthorizationService } from '../../services/authorization.js';
4
- import { text } from '../values.js';
4
+ import { text } from '../runtime/values.js';
5
5
  import { defineFunctions } from './definition.js';
6
6
  const MESSAGE_KEYS = new Set(['content', 'embeds', 'tts', 'stickerIds', 'flags', 'allowedMentions']);
7
7
  const MENTION_PARSE = ['users', 'roles', 'everyone'];
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload.js","sourceRoot":"","sources":["../../../src/functions/builtins/payload.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AllowedMentionsPolicy, Embed, MentionParse, Payload } from '../../domain/messages.js';\nimport { assertEmbedCount, normalizeEmbed } from '../../domain/embeds.js';\nimport { YuzuhaError } from '../../errors.js';\nimport { AuthorizationService } from '../../services/authorization.js';\nimport type { FunctionCall } from '../runtime/types.js';\nimport { text } from '../runtime/values.js';\nimport { defineFunctions } from './definition.js';\n\nconst MESSAGE_KEYS = new Set(['content', 'embeds', 'tts', 'stickerIds', 'flags', 'allowedMentions']);\nconst MENTION_PARSE: MentionParse[] = ['users', 'roles', 'everyone'];\nconst SNOWFLAKE = /^\\d{1,20}$/;\nconst MAX_STICKERS = 3;\nconst MAX_MENTION_IDS = 100;\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === 'object' && !Array.isArray(value);\n}\n\n/** IDs de Discord/Fluxer como texto; `$array[123]` entrega número, então inteiros seguros também valem. */\nfunction snowflakes(value: unknown, max: number, label: string): string[] {\n const ids = Array.isArray(value) ? value.map(item => (typeof item === 'number' && Number.isSafeInteger(item) ? String(item) : item)) : undefined;\n if (!ids || ids.length > max || !ids.every(id => typeof id === 'string' && SNOWFLAKE.test(id))) {\n throw new YuzuhaError('MESSAGE_OPTION', `${label} deve ser um array de até ${max} IDs numéricos.`);\n }\n return ids as string[];\n}\n\n/** Converte o valor de `$reply`, `$sendMessage` e `$editMessage` em payload: texto, embed, lista de embeds ou objeto de mensagem. */\nexport async function payload(c: FunctionCall, value: unknown): Promise<Payload> {\n if (isRecord(value) && Object.keys(value).some(key => MESSAGE_KEYS.has(key))) return messagePayload(c, value);\n if (isRecord(value)) return { embeds: [normalizeEmbed(value)] };\n if (Array.isArray(value) && value.length && value.every(isRecord)) return { embeds: embedList(value) };\n const content = text(value);\n if (!content || content.length > 2000) throw new YuzuhaError('MESSAGE_LENGTH', 'Mensagem deve ter de 1 a 2000 caracteres.');\n return { content };\n}\n\nfunction embedList(value: unknown[]): Embed[] {\n const embeds = value.map(item => normalizeEmbed(item));\n assertEmbedCount(embeds.length);\n return embeds;\n}\n\nasync function messagePayload(c: FunctionCall, value: Record<string, unknown>): Promise<Payload> {\n for (const key of Object.keys(value)) {\n if (!MESSAGE_KEYS.has(key)) throw new YuzuhaError('MESSAGE_KEY', `Campo de mensagem desconhecido: ${key}.`);\n }\n const result: Payload = {};\n const content = value['content'] === undefined || value['content'] === null ? '' : text(value['content']);\n if (content.length > 2000) throw new YuzuhaError('MESSAGE_LENGTH', 'Mensagem deve ter no máximo 2000 caracteres.');\n if (content) result.content = content;\n if (value['embeds'] !== undefined && value['embeds'] !== null) {\n const list = Array.isArray(value['embeds']) ? value['embeds'] : [value['embeds']];\n result.embeds = embedList(list);\n }\n if (!result.content && !result.embeds?.length) throw new YuzuhaError('MESSAGE_LENGTH', 'Mensagem precisa de texto ou de embed.');\n Object.assign(result, await messageOptions(c, value));\n return result;\n}\n\n/** Opções de envio (tts, stickers, flags, menções). Relaxar menções ou usar TTS exige a permissão do autor. */\nasync function messageOptions(c: FunctionCall, value: Record<string, unknown>): Promise<Partial<Payload>> {\n const result: Partial<Payload> = {};\n if (value['tts'] !== undefined) {\n if (typeof value['tts'] !== 'boolean') throw new YuzuhaError('MESSAGE_OPTION', 'tts deve ser true ou false.');\n if (value['tts']) await requireAuthor(c, 'SendTtsMessages', 'Você precisa da permissão SendTtsMessages para enviar TTS.');\n result.tts = value['tts'];\n }\n if (value['stickerIds'] !== undefined) {\n result.stickerIds = snowflakes(value['stickerIds'], MAX_STICKERS, 'stickerIds');\n }\n if (value['flags'] !== undefined) {\n const flags = value['flags'];\n if (typeof flags !== 'number' || !Number.isSafeInteger(flags) || flags < 0 || flags > 0x7FFFFFFF) {\n throw new YuzuhaError('MESSAGE_OPTION', 'flags deve ser um inteiro não negativo de 32 bits.');\n }\n result.flags = flags;\n }\n if (value['allowedMentions'] !== undefined) result.allowedMentions = await mentionPolicy(c, value['allowedMentions']);\n return result;\n}\n\nasync function mentionPolicy(c: FunctionCall, value: unknown): Promise<AllowedMentionsPolicy> {\n if (!isRecord(value)) throw new YuzuhaError('MESSAGE_OPTION', 'allowedMentions deve ser um objeto.');\n for (const key of Object.keys(value)) {\n if (!['parse', 'users', 'roles', 'repliedUser'].includes(key)) throw new YuzuhaError('MESSAGE_OPTION', `allowedMentions desconhecido: ${key}.`);\n }\n const policy: AllowedMentionsPolicy = {};\n if (value['parse'] !== undefined) {\n const parse = value['parse'];\n if (!Array.isArray(parse) || !parse.every(item => MENTION_PARSE.includes(item as MentionParse))) {\n throw new YuzuhaError('MESSAGE_OPTION', 'parse aceita somente users, roles e everyone.');\n }\n policy.parse = [...new Set(parse as MentionParse[])];\n }\n for (const key of ['users', 'roles'] as const) {\n if (value[key] === undefined) continue;\n policy[key] = snowflakes(value[key], MAX_MENTION_IDS, key);\n }\n if (value['repliedUser'] !== undefined) {\n if (typeof value['repliedUser'] !== 'boolean') throw new YuzuhaError('MESSAGE_OPTION', 'repliedUser deve ser true ou false.');\n policy.repliedUser = value['repliedUser'];\n }\n const relaxes = (policy.parse?.length ?? 0) > 0 || !!policy.users?.length || !!policy.roles?.length || policy.repliedUser === true;\n if (relaxes) await requireAuthor(c, 'MentionEveryone', 'Você precisa da permissão MentionEveryone para liberar menções.');\n return policy;\n}\n\nasync function requireAuthor(c: FunctionCall, name: string, message: string): Promise<void> {\n const auth = new AuthorizationService(c.ctx.transport, { guildID: c.ctx.guildID ?? '', authorID: c.ctx.message.authorID });\n await auth.requirePermission(name, false, message);\n}\n\nexport const payloadFunctions = defineFunctions(fn => {\n fn('embeds', 'embeds', 1, 10, '[embed;embed;...]', 'Monta lista de até 10 embeds validados, para $reply, $sendMessage ou $editMessage.', async c =>\n embedList(await c.all()));\n fn('addEmbed', 'embeds', 2, 2, '[lista;embed]', 'Retorna nova lista de embeds com o embed no final, respeitando o limite de 10.', async c => {\n const current = await c.arg(0);\n const list = Array.isArray(current) ? current : [current];\n return embedList([...list, await c.arg(1)]);\n });\n fn('messageOptions', 'messages', 1, 3, '[tts?;stickerIds?;flags?]', 'Opções de envio para mesclar com $jsonMerge e um payload com conteúdo ou embeds. TTS exige SendTtsMessages; menções, MentionEveryone.', async c => {\n const value: Record<string, unknown> = {};\n if (c.count > 0 && (await c.text(0)).trim() !== '') value['tts'] = (await c.text(0)).trim().toLowerCase() === 'true';\n if (c.count > 1 && (await c.text(1)).trim() !== '') value['stickerIds'] = (await c.text(1)).split(',').map(id => id.trim()).filter(Boolean);\n if (c.count > 2 && (await c.text(2)).trim() !== '') value['flags'] = Number((await c.text(2)).trim());\n return messageOptions(c, value);\n });\n});\n"]}
@@ -0,0 +1,2 @@
1
+ export declare const resourceExtras: import("../runtime/types.js").FunctionDefinition[];
2
+ //# sourceMappingURL=resource-extras.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-extras.d.ts","sourceRoot":"","sources":["../../../src/functions/builtins/resource-extras.ts"],"names":[],"mappings":"AAgDA,eAAO,MAAM,cAAc,oDA2FzB,CAAC"}