yuzuha 0.0.0-stage → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (786) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/LICENSE +21 -0
  3. package/README.md +156 -2
  4. package/VERSIONING.md +134 -0
  5. package/benchmarks/compare.mjs +21 -0
  6. package/benchmarks/run.mjs +123 -0
  7. package/dist/adapter.d.ts +3 -0
  8. package/dist/adapter.d.ts.map +1 -0
  9. package/dist/adapter.js +3 -0
  10. package/dist/adapter.js.map +1 -0
  11. package/dist/bot.d.ts +3 -0
  12. package/dist/bot.d.ts.map +1 -0
  13. package/dist/bot.js +2 -0
  14. package/dist/bot.js.map +1 -0
  15. package/dist/cli/arguments.d.ts +48 -0
  16. package/dist/cli/arguments.d.ts.map +1 -0
  17. package/dist/cli/arguments.js +142 -0
  18. package/dist/cli/arguments.js.map +1 -0
  19. package/dist/cli/config.d.ts +9 -0
  20. package/dist/cli/config.d.ts.map +1 -0
  21. package/dist/cli/config.js +59 -0
  22. package/dist/cli/config.js.map +1 -0
  23. package/dist/cli/data.d.ts +5 -0
  24. package/dist/cli/data.d.ts.map +1 -0
  25. package/dist/cli/data.js +58 -0
  26. package/dist/cli/data.js.map +1 -0
  27. package/dist/cli/doctor.d.ts +13 -0
  28. package/dist/cli/doctor.d.ts.map +1 -0
  29. package/dist/cli/doctor.js +85 -0
  30. package/dist/cli/doctor.js.map +1 -0
  31. package/dist/cli/lint.d.ts +13 -0
  32. package/dist/cli/lint.d.ts.map +1 -0
  33. package/dist/cli/lint.js +78 -0
  34. package/dist/cli/lint.js.map +1 -0
  35. package/dist/cli/main.d.ts +3 -0
  36. package/dist/cli/main.d.ts.map +1 -0
  37. package/dist/cli/main.js +124 -0
  38. package/dist/cli/main.js.map +1 -0
  39. package/dist/cli/runner.d.ts +3 -0
  40. package/dist/cli/runner.d.ts.map +1 -0
  41. package/dist/cli/runner.js +44 -0
  42. package/dist/cli/runner.js.map +1 -0
  43. package/dist/cli/scaffold.d.ts +2 -0
  44. package/dist/cli/scaffold.d.ts.map +1 -0
  45. package/dist/cli/scaffold.js +50 -0
  46. package/dist/cli/scaffold.js.map +1 -0
  47. package/dist/cli/scenarios.d.ts +72 -0
  48. package/dist/cli/scenarios.d.ts.map +1 -0
  49. package/dist/cli/scenarios.js +161 -0
  50. package/dist/cli/scenarios.js.map +1 -0
  51. package/dist/cli/version.d.ts +4 -0
  52. package/dist/cli/version.d.ts.map +1 -0
  53. package/dist/cli/version.js +7 -0
  54. package/dist/cli/version.js.map +1 -0
  55. package/dist/cli/watch.d.ts +5 -0
  56. package/dist/cli/watch.d.ts.map +1 -0
  57. package/dist/cli/watch.js +28 -0
  58. package/dist/cli/watch.js.map +1 -0
  59. package/dist/cli.d.ts +3 -0
  60. package/dist/cli.d.ts.map +1 -0
  61. package/dist/cli.js +7 -0
  62. package/dist/cli.js.map +1 -0
  63. package/dist/commands/arguments.d.ts +6 -0
  64. package/dist/commands/arguments.d.ts.map +1 -0
  65. package/dist/commands/arguments.js +141 -0
  66. package/dist/commands/arguments.js.map +1 -0
  67. package/dist/commands/builders.d.ts +31 -0
  68. package/dist/commands/builders.d.ts.map +1 -0
  69. package/dist/commands/builders.js +46 -0
  70. package/dist/commands/builders.js.map +1 -0
  71. package/dist/commands/context.d.ts +99 -0
  72. package/dist/commands/context.d.ts.map +1 -0
  73. package/dist/commands/context.js +188 -0
  74. package/dist/commands/context.js.map +1 -0
  75. package/dist/commands/definition.d.ts +48 -0
  76. package/dist/commands/definition.d.ts.map +1 -0
  77. package/dist/commands/definition.js +10 -0
  78. package/dist/commands/definition.js.map +1 -0
  79. package/dist/commands/event-context.d.ts +19 -0
  80. package/dist/commands/event-context.d.ts.map +1 -0
  81. package/dist/commands/event-context.js +16 -0
  82. package/dist/commands/event-context.js.map +1 -0
  83. package/dist/commands/typed-arguments.d.ts +14 -0
  84. package/dist/commands/typed-arguments.d.ts.map +1 -0
  85. package/dist/commands/typed-arguments.js +19 -0
  86. package/dist/commands/typed-arguments.js.map +1 -0
  87. package/dist/config.d.ts +3 -0
  88. package/dist/config.d.ts.map +1 -0
  89. package/dist/config.js +2 -0
  90. package/dist/config.js.map +1 -0
  91. package/dist/context.d.ts +12 -0
  92. package/dist/context.d.ts.map +1 -0
  93. package/dist/context.js +7 -0
  94. package/dist/context.js.map +1 -0
  95. package/dist/contracts.d.ts +6 -0
  96. package/dist/contracts.d.ts.map +1 -0
  97. package/dist/contracts.js +2 -0
  98. package/dist/contracts.js.map +1 -0
  99. package/dist/domain/cron.d.ts +15 -0
  100. package/dist/domain/cron.d.ts.map +1 -0
  101. package/dist/domain/cron.js +122 -0
  102. package/dist/domain/cron.js.map +1 -0
  103. package/dist/domain/events.d.ts +14 -0
  104. package/dist/domain/events.d.ts.map +1 -0
  105. package/dist/domain/events.js +2 -0
  106. package/dist/domain/events.js.map +1 -0
  107. package/dist/domain/messages.d.ts +40 -0
  108. package/dist/domain/messages.d.ts.map +1 -0
  109. package/dist/domain/messages.js +2 -0
  110. package/dist/domain/messages.js.map +1 -0
  111. package/dist/domain/moderation.d.ts +31 -0
  112. package/dist/domain/moderation.d.ts.map +1 -0
  113. package/dist/domain/moderation.js +9 -0
  114. package/dist/domain/moderation.js.map +1 -0
  115. package/dist/domain/permissions.d.ts +3 -0
  116. package/dist/domain/permissions.d.ts.map +1 -0
  117. package/dist/domain/permissions.js +15 -0
  118. package/dist/domain/permissions.js.map +1 -0
  119. package/dist/domain/resource-batches.d.ts +6 -0
  120. package/dist/domain/resource-batches.d.ts.map +1 -0
  121. package/dist/domain/resource-batches.js +34 -0
  122. package/dist/domain/resource-batches.js.map +1 -0
  123. package/dist/domain/state-validation.d.ts +7 -0
  124. package/dist/domain/state-validation.d.ts.map +1 -0
  125. package/dist/domain/state-validation.js +143 -0
  126. package/dist/domain/state-validation.js.map +1 -0
  127. package/dist/domain/state.d.ts +46 -0
  128. package/dist/domain/state.d.ts.map +1 -0
  129. package/dist/domain/state.js +13 -0
  130. package/dist/domain/state.js.map +1 -0
  131. package/dist/domain/values.d.ts +3 -0
  132. package/dist/domain/values.d.ts.map +1 -0
  133. package/dist/domain/values.js +23 -0
  134. package/dist/domain/values.js.map +1 -0
  135. package/dist/errors.d.ts +2 -0
  136. package/dist/errors.d.ts.map +1 -0
  137. package/dist/errors.js +2 -0
  138. package/dist/errors.js.map +1 -0
  139. package/dist/framework/bot.d.ts +67 -0
  140. package/dist/framework/bot.d.ts.map +1 -0
  141. package/dist/framework/bot.js +342 -0
  142. package/dist/framework/bot.js.map +1 -0
  143. package/dist/framework/command-loader.d.ts +4 -0
  144. package/dist/framework/command-loader.d.ts.map +1 -0
  145. package/dist/framework/command-loader.js +36 -0
  146. package/dist/framework/command-loader.js.map +1 -0
  147. package/dist/framework/command-registry.d.ts +25 -0
  148. package/dist/framework/command-registry.d.ts.map +1 -0
  149. package/dist/framework/command-registry.js +108 -0
  150. package/dist/framework/command-registry.js.map +1 -0
  151. package/dist/framework/config.d.ts +8 -0
  152. package/dist/framework/config.d.ts.map +1 -0
  153. package/dist/framework/config.js +2 -0
  154. package/dist/framework/config.js.map +1 -0
  155. package/dist/framework/events.d.ts +26 -0
  156. package/dist/framework/events.d.ts.map +1 -0
  157. package/dist/framework/events.js +52 -0
  158. package/dist/framework/events.js.map +1 -0
  159. package/dist/framework/logging.d.ts +16 -0
  160. package/dist/framework/logging.d.ts.map +1 -0
  161. package/dist/framework/logging.js +11 -0
  162. package/dist/framework/logging.js.map +1 -0
  163. package/dist/framework/middleware.d.ts +4 -0
  164. package/dist/framework/middleware.d.ts.map +1 -0
  165. package/dist/framework/middleware.js +16 -0
  166. package/dist/framework/middleware.js.map +1 -0
  167. package/dist/framework/module-loader.d.ts +4 -0
  168. package/dist/framework/module-loader.d.ts.map +1 -0
  169. package/dist/framework/module-loader.js +10 -0
  170. package/dist/framework/module-loader.js.map +1 -0
  171. package/dist/framework/options.d.ts +37 -0
  172. package/dist/framework/options.d.ts.map +1 -0
  173. package/dist/framework/options.js +2 -0
  174. package/dist/framework/options.js.map +1 -0
  175. package/dist/framework/rate-limits.d.ts +11 -0
  176. package/dist/framework/rate-limits.d.ts.map +1 -0
  177. package/dist/framework/rate-limits.js +43 -0
  178. package/dist/framework/rate-limits.js.map +1 -0
  179. package/dist/framework/reporting.d.ts +5 -0
  180. package/dist/framework/reporting.d.ts.map +1 -0
  181. package/dist/framework/reporting.js +23 -0
  182. package/dist/framework/reporting.js.map +1 -0
  183. package/dist/framework/routing.d.ts +6 -0
  184. package/dist/framework/routing.d.ts.map +1 -0
  185. package/dist/framework/routing.js +17 -0
  186. package/dist/framework/routing.js.map +1 -0
  187. package/dist/framework/script-events.d.ts +19 -0
  188. package/dist/framework/script-events.d.ts.map +1 -0
  189. package/dist/framework/script-events.js +42 -0
  190. package/dist/framework/script-events.js.map +1 -0
  191. package/dist/functions.d.ts +13 -0
  192. package/dist/functions.d.ts.map +1 -0
  193. package/dist/functions.js +12 -0
  194. package/dist/functions.js.map +1 -0
  195. package/dist/index.d.ts +55 -0
  196. package/dist/index.d.ts.map +1 -0
  197. package/dist/index.js +22 -0
  198. package/dist/index.js.map +1 -0
  199. package/dist/infrastructure/fluxer/messages.d.ts +4 -0
  200. package/dist/infrastructure/fluxer/messages.d.ts.map +1 -0
  201. package/dist/infrastructure/fluxer/messages.js +7 -0
  202. package/dist/infrastructure/fluxer/messages.js.map +1 -0
  203. package/dist/infrastructure/fluxer/payload.d.ts +4 -0
  204. package/dist/infrastructure/fluxer/payload.d.ts.map +1 -0
  205. package/dist/infrastructure/fluxer/payload.js +24 -0
  206. package/dist/infrastructure/fluxer/payload.js.map +1 -0
  207. package/dist/infrastructure/fluxer/resources/channels.d.ts +4 -0
  208. package/dist/infrastructure/fluxer/resources/channels.d.ts.map +1 -0
  209. package/dist/infrastructure/fluxer/resources/channels.js +161 -0
  210. package/dist/infrastructure/fluxer/resources/channels.js.map +1 -0
  211. package/dist/infrastructure/fluxer/resources/collectors.d.ts +4 -0
  212. package/dist/infrastructure/fluxer/resources/collectors.d.ts.map +1 -0
  213. package/dist/infrastructure/fluxer/resources/collectors.js +117 -0
  214. package/dist/infrastructure/fluxer/resources/collectors.js.map +1 -0
  215. package/dist/infrastructure/fluxer/resources/expressions.d.ts +4 -0
  216. package/dist/infrastructure/fluxer/resources/expressions.d.ts.map +1 -0
  217. package/dist/infrastructure/fluxer/resources/expressions.js +71 -0
  218. package/dist/infrastructure/fluxer/resources/expressions.js.map +1 -0
  219. package/dist/infrastructure/fluxer/resources/invites.d.ts +4 -0
  220. package/dist/infrastructure/fluxer/resources/invites.d.ts.map +1 -0
  221. package/dist/infrastructure/fluxer/resources/invites.js +47 -0
  222. package/dist/infrastructure/fluxer/resources/invites.js.map +1 -0
  223. package/dist/infrastructure/fluxer/resources/messages.d.ts +4 -0
  224. package/dist/infrastructure/fluxer/resources/messages.d.ts.map +1 -0
  225. package/dist/infrastructure/fluxer/resources/messages.js +111 -0
  226. package/dist/infrastructure/fluxer/resources/messages.js.map +1 -0
  227. package/dist/infrastructure/fluxer/resources/roles.d.ts +4 -0
  228. package/dist/infrastructure/fluxer/resources/roles.d.ts.map +1 -0
  229. package/dist/infrastructure/fluxer/resources/roles.js +120 -0
  230. package/dist/infrastructure/fluxer/resources/roles.js.map +1 -0
  231. package/dist/infrastructure/fluxer/resources/threads.d.ts +4 -0
  232. package/dist/infrastructure/fluxer/resources/threads.d.ts.map +1 -0
  233. package/dist/infrastructure/fluxer/resources/threads.js +136 -0
  234. package/dist/infrastructure/fluxer/resources/threads.js.map +1 -0
  235. package/dist/infrastructure/fluxer/resources/users.d.ts +4 -0
  236. package/dist/infrastructure/fluxer/resources/users.d.ts.map +1 -0
  237. package/dist/infrastructure/fluxer/resources/users.js +194 -0
  238. package/dist/infrastructure/fluxer/resources/users.js.map +1 -0
  239. package/dist/infrastructure/fluxer/resources/webhooks.d.ts +4 -0
  240. package/dist/infrastructure/fluxer/resources/webhooks.d.ts.map +1 -0
  241. package/dist/infrastructure/fluxer/resources/webhooks.js +42 -0
  242. package/dist/infrastructure/fluxer/resources/webhooks.js.map +1 -0
  243. package/dist/infrastructure/fluxer/resources.d.ts +16 -0
  244. package/dist/infrastructure/fluxer/resources.d.ts.map +1 -0
  245. package/dist/infrastructure/fluxer/resources.js +33 -0
  246. package/dist/infrastructure/fluxer/resources.js.map +1 -0
  247. package/dist/infrastructure/fluxer/transport.d.ts +17 -0
  248. package/dist/infrastructure/fluxer/transport.d.ts.map +1 -0
  249. package/dist/infrastructure/fluxer/transport.js +76 -0
  250. package/dist/infrastructure/fluxer/transport.js.map +1 -0
  251. package/dist/infrastructure/storage/json.d.ts +10 -0
  252. package/dist/infrastructure/storage/json.d.ts.map +1 -0
  253. package/dist/infrastructure/storage/json.js +51 -0
  254. package/dist/infrastructure/storage/json.js.map +1 -0
  255. package/dist/infrastructure/storage/memory.d.ts +10 -0
  256. package/dist/infrastructure/storage/memory.d.ts.map +1 -0
  257. package/dist/infrastructure/storage/memory.js +26 -0
  258. package/dist/infrastructure/storage/memory.js.map +1 -0
  259. package/dist/infrastructure/storage/paths.d.ts +2 -0
  260. package/dist/infrastructure/storage/paths.d.ts.map +1 -0
  261. package/dist/infrastructure/storage/paths.js +11 -0
  262. package/dist/infrastructure/storage/paths.js.map +1 -0
  263. package/dist/infrastructure/storage/queue.d.ts +5 -0
  264. package/dist/infrastructure/storage/queue.d.ts.map +1 -0
  265. package/dist/infrastructure/storage/queue.js +9 -0
  266. package/dist/infrastructure/storage/queue.js.map +1 -0
  267. package/dist/infrastructure/storage/sqlite.d.ts +14 -0
  268. package/dist/infrastructure/storage/sqlite.d.ts.map +1 -0
  269. package/dist/infrastructure/storage/sqlite.js +68 -0
  270. package/dist/infrastructure/storage/sqlite.js.map +1 -0
  271. package/dist/infrastructure/storage/state.d.ts +2 -0
  272. package/dist/infrastructure/storage/state.d.ts.map +1 -0
  273. package/dist/infrastructure/storage/state.js +2 -0
  274. package/dist/infrastructure/storage/state.js.map +1 -0
  275. package/dist/loader.d.ts +2 -0
  276. package/dist/loader.d.ts.map +1 -0
  277. package/dist/loader.js +2 -0
  278. package/dist/loader.js.map +1 -0
  279. package/dist/parser.d.ts +3 -0
  280. package/dist/parser.d.ts.map +1 -0
  281. package/dist/parser.js +2 -0
  282. package/dist/parser.js.map +1 -0
  283. package/dist/permissions.d.ts +2 -0
  284. package/dist/permissions.d.ts.map +1 -0
  285. package/dist/permissions.js +2 -0
  286. package/dist/permissions.js.map +1 -0
  287. package/dist/ports/native.d.ts +6 -0
  288. package/dist/ports/native.d.ts.map +1 -0
  289. package/dist/ports/native.js +2 -0
  290. package/dist/ports/native.js.map +1 -0
  291. package/dist/ports/resources/channels.d.ts +56 -0
  292. package/dist/ports/resources/channels.d.ts.map +1 -0
  293. package/dist/ports/resources/channels.js +2 -0
  294. package/dist/ports/resources/channels.js.map +1 -0
  295. package/dist/ports/resources/collectors.d.ts +21 -0
  296. package/dist/ports/resources/collectors.d.ts.map +1 -0
  297. package/dist/ports/resources/collectors.js +2 -0
  298. package/dist/ports/resources/collectors.js.map +1 -0
  299. package/dist/ports/resources/common.d.ts +20 -0
  300. package/dist/ports/resources/common.d.ts.map +1 -0
  301. package/dist/ports/resources/common.js +10 -0
  302. package/dist/ports/resources/common.js.map +1 -0
  303. package/dist/ports/resources/expressions.d.ts +50 -0
  304. package/dist/ports/resources/expressions.d.ts.map +1 -0
  305. package/dist/ports/resources/expressions.js +2 -0
  306. package/dist/ports/resources/expressions.js.map +1 -0
  307. package/dist/ports/resources/invites.d.ts +32 -0
  308. package/dist/ports/resources/invites.d.ts.map +1 -0
  309. package/dist/ports/resources/invites.js +2 -0
  310. package/dist/ports/resources/invites.js.map +1 -0
  311. package/dist/ports/resources/messages.d.ts +55 -0
  312. package/dist/ports/resources/messages.d.ts.map +1 -0
  313. package/dist/ports/resources/messages.js +2 -0
  314. package/dist/ports/resources/messages.js.map +1 -0
  315. package/dist/ports/resources/roles.d.ts +39 -0
  316. package/dist/ports/resources/roles.d.ts.map +1 -0
  317. package/dist/ports/resources/roles.js +2 -0
  318. package/dist/ports/resources/roles.js.map +1 -0
  319. package/dist/ports/resources/threads.d.ts +78 -0
  320. package/dist/ports/resources/threads.d.ts.map +1 -0
  321. package/dist/ports/resources/threads.js +2 -0
  322. package/dist/ports/resources/threads.js.map +1 -0
  323. package/dist/ports/resources/users.d.ts +106 -0
  324. package/dist/ports/resources/users.d.ts.map +1 -0
  325. package/dist/ports/resources/users.js +2 -0
  326. package/dist/ports/resources/users.js.map +1 -0
  327. package/dist/ports/resources/webhooks.d.ts +21 -0
  328. package/dist/ports/resources/webhooks.d.ts.map +1 -0
  329. package/dist/ports/resources/webhooks.js +2 -0
  330. package/dist/ports/resources/webhooks.js.map +1 -0
  331. package/dist/ports/resources.d.ts +22 -0
  332. package/dist/ports/resources.d.ts.map +1 -0
  333. package/dist/ports/resources.js +2 -0
  334. package/dist/ports/resources.js.map +1 -0
  335. package/dist/ports/store.d.ts +7 -0
  336. package/dist/ports/store.d.ts.map +1 -0
  337. package/dist/ports/store.js +2 -0
  338. package/dist/ports/store.js.map +1 -0
  339. package/dist/ports/transport.d.ts +14 -0
  340. package/dist/ports/transport.d.ts.map +1 -0
  341. package/dist/ports/transport.js +2 -0
  342. package/dist/ports/transport.js.map +1 -0
  343. package/dist/runtime.d.ts +5 -0
  344. package/dist/runtime.d.ts.map +1 -0
  345. package/dist/runtime.js +4 -0
  346. package/dist/runtime.js.map +1 -0
  347. package/dist/scripting/ast.d.ts +18 -0
  348. package/dist/scripting/ast.d.ts.map +1 -0
  349. package/dist/scripting/ast.js +2 -0
  350. package/dist/scripting/ast.js.map +1 -0
  351. package/dist/scripting/builtins/arguments.d.ts +5 -0
  352. package/dist/scripting/builtins/arguments.d.ts.map +1 -0
  353. package/dist/scripting/builtins/arguments.js +22 -0
  354. package/dist/scripting/builtins/arguments.js.map +1 -0
  355. package/dist/scripting/builtins/context.d.ts +2 -0
  356. package/dist/scripting/builtins/context.d.ts.map +1 -0
  357. package/dist/scripting/builtins/context.js +20 -0
  358. package/dist/scripting/builtins/context.js.map +1 -0
  359. package/dist/scripting/builtins/definition.d.ts +5 -0
  360. package/dist/scripting/builtins/definition.d.ts.map +1 -0
  361. package/dist/scripting/builtins/definition.js +8 -0
  362. package/dist/scripting/builtins/definition.js.map +1 -0
  363. package/dist/scripting/builtins/embeds.d.ts +4 -0
  364. package/dist/scripting/builtins/embeds.d.ts.map +1 -0
  365. package/dist/scripting/builtins/embeds.js +55 -0
  366. package/dist/scripting/builtins/embeds.js.map +1 -0
  367. package/dist/scripting/builtins/events.d.ts +2 -0
  368. package/dist/scripting/builtins/events.d.ts.map +1 -0
  369. package/dist/scripting/builtins/events.js +14 -0
  370. package/dist/scripting/builtins/events.js.map +1 -0
  371. package/dist/scripting/builtins/flow.d.ts +2 -0
  372. package/dist/scripting/builtins/flow.d.ts.map +1 -0
  373. package/dist/scripting/builtins/flow.js +26 -0
  374. package/dist/scripting/builtins/flow.js.map +1 -0
  375. package/dist/scripting/builtins/guards.d.ts +2 -0
  376. package/dist/scripting/builtins/guards.d.ts.map +1 -0
  377. package/dist/scripting/builtins/guards.js +28 -0
  378. package/dist/scripting/builtins/guards.js.map +1 -0
  379. package/dist/scripting/builtins/http.d.ts +2 -0
  380. package/dist/scripting/builtins/http.d.ts.map +1 -0
  381. package/dist/scripting/builtins/http.js +114 -0
  382. package/dist/scripting/builtins/http.js.map +1 -0
  383. package/dist/scripting/builtins/index.d.ts +5 -0
  384. package/dist/scripting/builtins/index.d.ts.map +1 -0
  385. package/dist/scripting/builtins/index.js +35 -0
  386. package/dist/scripting/builtins/index.js.map +1 -0
  387. package/dist/scripting/builtins/language/array-callbacks.d.ts +2 -0
  388. package/dist/scripting/builtins/language/array-callbacks.d.ts.map +1 -0
  389. package/dist/scripting/builtins/language/array-callbacks.js +95 -0
  390. package/dist/scripting/builtins/language/array-callbacks.js.map +1 -0
  391. package/dist/scripting/builtins/language/arrays.d.ts +2 -0
  392. package/dist/scripting/builtins/language/arrays.d.ts.map +1 -0
  393. package/dist/scripting/builtins/language/arrays.js +162 -0
  394. package/dist/scripting/builtins/language/arrays.js.map +1 -0
  395. package/dist/scripting/builtins/language/common.d.ts +13 -0
  396. package/dist/scripting/builtins/language/common.d.ts.map +1 -0
  397. package/dist/scripting/builtins/language/common.js +65 -0
  398. package/dist/scripting/builtins/language/common.js.map +1 -0
  399. package/dist/scripting/builtins/language/index.d.ts +3 -0
  400. package/dist/scripting/builtins/language/index.d.ts.map +1 -0
  401. package/dist/scripting/builtins/language/index.js +17 -0
  402. package/dist/scripting/builtins/language/index.js.map +1 -0
  403. package/dist/scripting/builtins/language/loops.d.ts +4 -0
  404. package/dist/scripting/builtins/language/loops.d.ts.map +1 -0
  405. package/dist/scripting/builtins/language/loops.js +81 -0
  406. package/dist/scripting/builtins/language/loops.js.map +1 -0
  407. package/dist/scripting/builtins/language/numbers.d.ts +2 -0
  408. package/dist/scripting/builtins/language/numbers.d.ts.map +1 -0
  409. package/dist/scripting/builtins/language/numbers.js +185 -0
  410. package/dist/scripting/builtins/language/numbers.js.map +1 -0
  411. package/dist/scripting/builtins/language/objects.d.ts +7 -0
  412. package/dist/scripting/builtins/language/objects.d.ts.map +1 -0
  413. package/dist/scripting/builtins/language/objects.js +243 -0
  414. package/dist/scripting/builtins/language/objects.js.map +1 -0
  415. package/dist/scripting/builtins/language/state.d.ts +6 -0
  416. package/dist/scripting/builtins/language/state.d.ts.map +1 -0
  417. package/dist/scripting/builtins/language/state.js +72 -0
  418. package/dist/scripting/builtins/language/state.js.map +1 -0
  419. package/dist/scripting/builtins/language/texts.d.ts +2 -0
  420. package/dist/scripting/builtins/language/texts.d.ts.map +1 -0
  421. package/dist/scripting/builtins/language/texts.js +87 -0
  422. package/dist/scripting/builtins/language/texts.js.map +1 -0
  423. package/dist/scripting/builtins/messages.d.ts +2 -0
  424. package/dist/scripting/builtins/messages.d.ts.map +1 -0
  425. package/dist/scripting/builtins/messages.js +10 -0
  426. package/dist/scripting/builtins/messages.js.map +1 -0
  427. package/dist/scripting/builtins/moderation.d.ts +2 -0
  428. package/dist/scripting/builtins/moderation.d.ts.map +1 -0
  429. package/dist/scripting/builtins/moderation.js +37 -0
  430. package/dist/scripting/builtins/moderation.js.map +1 -0
  431. package/dist/scripting/builtins/native-channels.d.ts +2 -0
  432. package/dist/scripting/builtins/native-channels.d.ts.map +1 -0
  433. package/dist/scripting/builtins/native-channels.js +202 -0
  434. package/dist/scripting/builtins/native-channels.js.map +1 -0
  435. package/dist/scripting/builtins/native-collectors.d.ts +2 -0
  436. package/dist/scripting/builtins/native-collectors.d.ts.map +1 -0
  437. package/dist/scripting/builtins/native-collectors.js +51 -0
  438. package/dist/scripting/builtins/native-collectors.js.map +1 -0
  439. package/dist/scripting/builtins/native-expressions.d.ts +2 -0
  440. package/dist/scripting/builtins/native-expressions.d.ts.map +1 -0
  441. package/dist/scripting/builtins/native-expressions.js +127 -0
  442. package/dist/scripting/builtins/native-expressions.js.map +1 -0
  443. package/dist/scripting/builtins/native-invites.d.ts +2 -0
  444. package/dist/scripting/builtins/native-invites.d.ts.map +1 -0
  445. package/dist/scripting/builtins/native-invites.js +45 -0
  446. package/dist/scripting/builtins/native-invites.js.map +1 -0
  447. package/dist/scripting/builtins/native-messages.d.ts +2 -0
  448. package/dist/scripting/builtins/native-messages.d.ts.map +1 -0
  449. package/dist/scripting/builtins/native-messages.js +155 -0
  450. package/dist/scripting/builtins/native-messages.js.map +1 -0
  451. package/dist/scripting/builtins/native-roles.d.ts +2 -0
  452. package/dist/scripting/builtins/native-roles.d.ts.map +1 -0
  453. package/dist/scripting/builtins/native-roles.js +128 -0
  454. package/dist/scripting/builtins/native-roles.js.map +1 -0
  455. package/dist/scripting/builtins/native-threads.d.ts +2 -0
  456. package/dist/scripting/builtins/native-threads.d.ts.map +1 -0
  457. package/dist/scripting/builtins/native-threads.js +113 -0
  458. package/dist/scripting/builtins/native-threads.js.map +1 -0
  459. package/dist/scripting/builtins/native-users.d.ts +2 -0
  460. package/dist/scripting/builtins/native-users.d.ts.map +1 -0
  461. package/dist/scripting/builtins/native-users.js +178 -0
  462. package/dist/scripting/builtins/native-users.js.map +1 -0
  463. package/dist/scripting/builtins/native-webhooks.d.ts +2 -0
  464. package/dist/scripting/builtins/native-webhooks.d.ts.map +1 -0
  465. package/dist/scripting/builtins/native-webhooks.js +33 -0
  466. package/dist/scripting/builtins/native-webhooks.js.map +1 -0
  467. package/dist/scripting/builtins/payload.d.ts +3 -0
  468. package/dist/scripting/builtins/payload.d.ts.map +1 -0
  469. package/dist/scripting/builtins/payload.js +14 -0
  470. package/dist/scripting/builtins/payload.js.map +1 -0
  471. package/dist/scripting/builtins/resource-extras.d.ts +2 -0
  472. package/dist/scripting/builtins/resource-extras.d.ts.map +1 -0
  473. package/dist/scripting/builtins/resource-extras.js +142 -0
  474. package/dist/scripting/builtins/resource-extras.js.map +1 -0
  475. package/dist/scripting/builtins/schedule.d.ts +2 -0
  476. package/dist/scripting/builtins/schedule.d.ts.map +1 -0
  477. package/dist/scripting/builtins/schedule.js +67 -0
  478. package/dist/scripting/builtins/schedule.js.map +1 -0
  479. package/dist/scripting/builtins/storage.d.ts +2 -0
  480. package/dist/scripting/builtins/storage.d.ts.map +1 -0
  481. package/dist/scripting/builtins/storage.js +44 -0
  482. package/dist/scripting/builtins/storage.js.map +1 -0
  483. package/dist/scripting/builtins/values.d.ts +2 -0
  484. package/dist/scripting/builtins/values.d.ts.map +1 -0
  485. package/dist/scripting/builtins/values.js +60 -0
  486. package/dist/scripting/builtins/values.js.map +1 -0
  487. package/dist/scripting/evaluator.d.ts +20 -0
  488. package/dist/scripting/evaluator.d.ts.map +1 -0
  489. package/dist/scripting/evaluator.js +107 -0
  490. package/dist/scripting/evaluator.js.map +1 -0
  491. package/dist/scripting/limits.d.ts +4 -0
  492. package/dist/scripting/limits.d.ts.map +1 -0
  493. package/dist/scripting/limits.js +17 -0
  494. package/dist/scripting/limits.js.map +1 -0
  495. package/dist/scripting/parser.d.ts +3 -0
  496. package/dist/scripting/parser.d.ts.map +1 -0
  497. package/dist/scripting/parser.js +91 -0
  498. package/dist/scripting/parser.js.map +1 -0
  499. package/dist/scripting/registry.d.ts +11 -0
  500. package/dist/scripting/registry.d.ts.map +1 -0
  501. package/dist/scripting/registry.js +54 -0
  502. package/dist/scripting/registry.js.map +1 -0
  503. package/dist/scripting/runtime.d.ts +14 -0
  504. package/dist/scripting/runtime.d.ts.map +1 -0
  505. package/dist/scripting/runtime.js +29 -0
  506. package/dist/scripting/runtime.js.map +1 -0
  507. package/dist/scripting/types.d.ts +30 -0
  508. package/dist/scripting/types.d.ts.map +1 -0
  509. package/dist/scripting/types.js +2 -0
  510. package/dist/scripting/types.js.map +1 -0
  511. package/dist/scripting/values.d.ts +3 -0
  512. package/dist/scripting/values.d.ts.map +1 -0
  513. package/dist/scripting/values.js +28 -0
  514. package/dist/scripting/values.js.map +1 -0
  515. package/dist/sdk.d.ts +2 -0
  516. package/dist/sdk.d.ts.map +1 -0
  517. package/dist/sdk.js +2 -0
  518. package/dist/sdk.js.map +1 -0
  519. package/dist/services/authorization.d.ts +16 -0
  520. package/dist/services/authorization.d.ts.map +1 -0
  521. package/dist/services/authorization.js +58 -0
  522. package/dist/services/authorization.js.map +1 -0
  523. package/dist/services/cancellation.d.ts +4 -0
  524. package/dist/services/cancellation.d.ts.map +1 -0
  525. package/dist/services/cancellation.js +14 -0
  526. package/dist/services/cancellation.js.map +1 -0
  527. package/dist/services/cases.d.ts +11 -0
  528. package/dist/services/cases.d.ts.map +1 -0
  529. package/dist/services/cases.js +33 -0
  530. package/dist/services/cases.js.map +1 -0
  531. package/dist/services/http.d.ts +60 -0
  532. package/dist/services/http.d.ts.map +1 -0
  533. package/dist/services/http.js +363 -0
  534. package/dist/services/http.js.map +1 -0
  535. package/dist/services/members.d.ts +14 -0
  536. package/dist/services/members.d.ts.map +1 -0
  537. package/dist/services/members.js +46 -0
  538. package/dist/services/members.js.map +1 -0
  539. package/dist/services/moderation.d.ts +13 -0
  540. package/dist/services/moderation.d.ts.map +1 -0
  541. package/dist/services/moderation.js +58 -0
  542. package/dist/services/moderation.js.map +1 -0
  543. package/dist/services/native-data.d.ts +23 -0
  544. package/dist/services/native-data.d.ts.map +1 -0
  545. package/dist/services/native-data.js +27 -0
  546. package/dist/services/native-data.js.map +1 -0
  547. package/dist/services/native-moderation.d.ts +77 -0
  548. package/dist/services/native-moderation.d.ts.map +1 -0
  549. package/dist/services/native-moderation.js +32 -0
  550. package/dist/services/native-moderation.js.map +1 -0
  551. package/dist/services/resource-authorization.d.ts +5 -0
  552. package/dist/services/resource-authorization.d.ts.map +1 -0
  553. package/dist/services/resource-authorization.js +187 -0
  554. package/dist/services/resource-authorization.js.map +1 -0
  555. package/dist/services/scheduler.d.ts +103 -0
  556. package/dist/services/scheduler.d.ts.map +1 -0
  557. package/dist/services/scheduler.js +385 -0
  558. package/dist/services/scheduler.js.map +1 -0
  559. package/dist/services/state-maintenance.d.ts +55 -0
  560. package/dist/services/state-maintenance.d.ts.map +1 -0
  561. package/dist/services/state-maintenance.js +182 -0
  562. package/dist/services/state-maintenance.js.map +1 -0
  563. package/dist/services/variables.d.ts +64 -0
  564. package/dist/services/variables.d.ts.map +1 -0
  565. package/dist/services/variables.js +213 -0
  566. package/dist/services/variables.js.map +1 -0
  567. package/dist/shared/clone.d.ts +3 -0
  568. package/dist/shared/clone.d.ts.map +1 -0
  569. package/dist/shared/clone.js +6 -0
  570. package/dist/shared/clone.js.map +1 -0
  571. package/dist/shared/errors.d.ts +25 -0
  572. package/dist/shared/errors.d.ts.map +1 -0
  573. package/dist/shared/errors.js +45 -0
  574. package/dist/shared/errors.js.map +1 -0
  575. package/dist/sqlite.d.ts +2 -0
  576. package/dist/sqlite.d.ts.map +1 -0
  577. package/dist/sqlite.js +2 -0
  578. package/dist/sqlite.js.map +1 -0
  579. package/dist/store.d.ts +6 -0
  580. package/dist/store.d.ts.map +1 -0
  581. package/dist/store.js +6 -0
  582. package/dist/store.js.map +1 -0
  583. package/dist/testing.d.ts +45 -0
  584. package/dist/testing.d.ts.map +1 -0
  585. package/dist/testing.js +79 -0
  586. package/dist/testing.js.map +1 -0
  587. package/dist/tooling/language.d.ts +74 -0
  588. package/dist/tooling/language.d.ts.map +1 -0
  589. package/dist/tooling/language.js +392 -0
  590. package/dist/tooling/language.js.map +1 -0
  591. package/dist/tooling.d.ts +3 -0
  592. package/dist/tooling.d.ts.map +1 -0
  593. package/dist/tooling.js +2 -0
  594. package/dist/tooling.js.map +1 -0
  595. package/docs/API.md +296 -0
  596. package/docs/ARCHITECTURE.md +206 -0
  597. package/docs/BENCHMARKS.md +92 -0
  598. package/docs/CLI.md +269 -0
  599. package/docs/COOKBOOK.md +270 -0
  600. package/docs/EDITOR.md +151 -0
  601. package/docs/EVENTS.md +118 -0
  602. package/docs/FRAMEWORK.md +215 -0
  603. package/docs/FUNCTION-GAPS.md +152 -0
  604. package/docs/FUNCTIONS.md +394 -0
  605. package/docs/HTTP.md +125 -0
  606. package/docs/LANGUAGE.md +497 -0
  607. package/docs/NATIVE.md +578 -0
  608. package/docs/OBSERVABILITY.md +48 -0
  609. package/docs/PARITY.md +117 -0
  610. package/docs/PLAN.md +106 -0
  611. package/docs/QUICKSTART.md +180 -0
  612. package/docs/README.md +53 -0
  613. package/docs/SCHEDULER.md +109 -0
  614. package/docs/STORAGE.md +341 -0
  615. package/docs/TESTING.md +154 -0
  616. package/docs/TROUBLESHOOTING.md +108 -0
  617. package/docs/VALIDATION.md +127 -0
  618. package/editors/vscode/.vscodeignore +2 -0
  619. package/editors/vscode/LICENSE +21 -0
  620. package/editors/vscode/README.md +59 -0
  621. package/editors/vscode/extension.cjs +154 -0
  622. package/editors/vscode/functions.json +2318 -0
  623. package/editors/vscode/language-configuration.json +1 -0
  624. package/editors/vscode/language.d.mts +74 -0
  625. package/editors/vscode/language.js.map +1 -0
  626. package/editors/vscode/language.mjs +392 -0
  627. package/editors/vscode/package.json +62 -0
  628. package/editors/vscode/tsconfig.json +8 -0
  629. package/editors/vscode/yuzuha.tmLanguage.json +9 -0
  630. package/examples/commands/ban.js +10 -0
  631. package/examples/commands/counter.ts +19 -0
  632. package/examples/commands/help.js +6 -0
  633. package/examples/commands/native-ban.ts +14 -0
  634. package/examples/commands/ping.ts +6 -0
  635. package/examples/commands/profile.ts +13 -0
  636. package/examples/function-mode.ts +16 -0
  637. package/examples/offline.ts +19 -0
  638. package/examples/yuzuha.config.js +19 -0
  639. package/package.json +70 -4
  640. package/src/adapter.ts +2 -0
  641. package/src/bot.ts +2 -0
  642. package/src/cli/arguments.ts +112 -0
  643. package/src/cli/config.ts +47 -0
  644. package/src/cli/data.ts +45 -0
  645. package/src/cli/doctor.ts +69 -0
  646. package/src/cli/lint.ts +69 -0
  647. package/src/cli/main.ts +89 -0
  648. package/src/cli/runner.ts +32 -0
  649. package/src/cli/scaffold.ts +43 -0
  650. package/src/cli/scenarios.ts +154 -0
  651. package/src/cli/version.ts +10 -0
  652. package/src/cli/watch.ts +22 -0
  653. package/src/cli.ts +7 -0
  654. package/src/commands/arguments.ts +119 -0
  655. package/src/commands/builders.ts +58 -0
  656. package/src/commands/context.ts +222 -0
  657. package/src/commands/definition.ts +55 -0
  658. package/src/commands/event-context.ts +29 -0
  659. package/src/commands/typed-arguments.ts +27 -0
  660. package/src/config.ts +2 -0
  661. package/src/context.ts +11 -0
  662. package/src/contracts.ts +5 -0
  663. package/src/domain/cron.ts +120 -0
  664. package/src/domain/events.ts +13 -0
  665. package/src/domain/messages.ts +27 -0
  666. package/src/domain/moderation.ts +40 -0
  667. package/src/domain/permissions.ts +16 -0
  668. package/src/domain/resource-batches.ts +34 -0
  669. package/src/domain/state-validation.ts +114 -0
  670. package/src/domain/state.ts +58 -0
  671. package/src/domain/values.ts +20 -0
  672. package/src/errors.ts +1 -0
  673. package/src/framework/bot.ts +303 -0
  674. package/src/framework/command-loader.ts +33 -0
  675. package/src/framework/command-registry.ts +105 -0
  676. package/src/framework/config.ts +8 -0
  677. package/src/framework/events.ts +65 -0
  678. package/src/framework/logging.ts +18 -0
  679. package/src/framework/middleware.ts +15 -0
  680. package/src/framework/module-loader.ts +8 -0
  681. package/src/framework/options.ts +37 -0
  682. package/src/framework/rate-limits.ts +37 -0
  683. package/src/framework/reporting.ts +19 -0
  684. package/src/framework/routing.ts +16 -0
  685. package/src/framework/script-events.ts +53 -0
  686. package/src/functions.ts +16 -0
  687. package/src/index.ts +59 -0
  688. package/src/infrastructure/fluxer/messages.ts +9 -0
  689. package/src/infrastructure/fluxer/payload.ts +20 -0
  690. package/src/infrastructure/fluxer/resources/channels.ts +159 -0
  691. package/src/infrastructure/fluxer/resources/collectors.ts +89 -0
  692. package/src/infrastructure/fluxer/resources/expressions.ts +79 -0
  693. package/src/infrastructure/fluxer/resources/invites.ts +49 -0
  694. package/src/infrastructure/fluxer/resources/messages.ts +111 -0
  695. package/src/infrastructure/fluxer/resources/roles.ts +113 -0
  696. package/src/infrastructure/fluxer/resources/threads.ts +141 -0
  697. package/src/infrastructure/fluxer/resources/users.ts +203 -0
  698. package/src/infrastructure/fluxer/resources/webhooks.ts +44 -0
  699. package/src/infrastructure/fluxer/resources.ts +36 -0
  700. package/src/infrastructure/fluxer/transport.ts +65 -0
  701. package/src/infrastructure/storage/json.ts +37 -0
  702. package/src/infrastructure/storage/memory.ts +30 -0
  703. package/src/infrastructure/storage/paths.ts +10 -0
  704. package/src/infrastructure/storage/queue.ts +9 -0
  705. package/src/infrastructure/storage/sqlite.ts +60 -0
  706. package/src/infrastructure/storage/state.ts +1 -0
  707. package/src/loader.ts +1 -0
  708. package/src/parser.ts +2 -0
  709. package/src/permissions.ts +1 -0
  710. package/src/ports/native.ts +6 -0
  711. package/src/ports/resources/channels.ts +59 -0
  712. package/src/ports/resources/collectors.ts +24 -0
  713. package/src/ports/resources/common.ts +32 -0
  714. package/src/ports/resources/expressions.ts +48 -0
  715. package/src/ports/resources/invites.ts +27 -0
  716. package/src/ports/resources/messages.ts +54 -0
  717. package/src/ports/resources/roles.ts +41 -0
  718. package/src/ports/resources/threads.ts +81 -0
  719. package/src/ports/resources/users.ts +109 -0
  720. package/src/ports/resources/webhooks.ts +22 -0
  721. package/src/ports/resources.ts +22 -0
  722. package/src/ports/store.ts +7 -0
  723. package/src/ports/transport.ts +15 -0
  724. package/src/runtime.ts +4 -0
  725. package/src/scripting/ast.ts +4 -0
  726. package/src/scripting/builtins/arguments.ts +19 -0
  727. package/src/scripting/builtins/context.ts +21 -0
  728. package/src/scripting/builtins/definition.ts +15 -0
  729. package/src/scripting/builtins/embeds.ts +48 -0
  730. package/src/scripting/builtins/events.ts +13 -0
  731. package/src/scripting/builtins/flow.ts +23 -0
  732. package/src/scripting/builtins/guards.ts +26 -0
  733. package/src/scripting/builtins/http.ts +101 -0
  734. package/src/scripting/builtins/index.ts +38 -0
  735. package/src/scripting/builtins/language/array-callbacks.ts +88 -0
  736. package/src/scripting/builtins/language/arrays.ts +140 -0
  737. package/src/scripting/builtins/language/common.ts +59 -0
  738. package/src/scripting/builtins/language/index.ts +18 -0
  739. package/src/scripting/builtins/language/loops.ts +75 -0
  740. package/src/scripting/builtins/language/numbers.ts +164 -0
  741. package/src/scripting/builtins/language/objects.ts +221 -0
  742. package/src/scripting/builtins/language/state.ts +65 -0
  743. package/src/scripting/builtins/language/texts.ts +72 -0
  744. package/src/scripting/builtins/messages.ts +10 -0
  745. package/src/scripting/builtins/moderation.ts +38 -0
  746. package/src/scripting/builtins/native-channels.ts +193 -0
  747. package/src/scripting/builtins/native-collectors.ts +52 -0
  748. package/src/scripting/builtins/native-expressions.ts +118 -0
  749. package/src/scripting/builtins/native-invites.ts +45 -0
  750. package/src/scripting/builtins/native-messages.ts +145 -0
  751. package/src/scripting/builtins/native-roles.ts +125 -0
  752. package/src/scripting/builtins/native-threads.ts +100 -0
  753. package/src/scripting/builtins/native-users.ts +173 -0
  754. package/src/scripting/builtins/native-webhooks.ts +34 -0
  755. package/src/scripting/builtins/payload.ts +14 -0
  756. package/src/scripting/builtins/resource-extras.ts +133 -0
  757. package/src/scripting/builtins/schedule.ts +73 -0
  758. package/src/scripting/builtins/storage.ts +43 -0
  759. package/src/scripting/builtins/values.ts +50 -0
  760. package/src/scripting/evaluator.ts +98 -0
  761. package/src/scripting/limits.ts +18 -0
  762. package/src/scripting/parser.ts +63 -0
  763. package/src/scripting/registry.ts +54 -0
  764. package/src/scripting/runtime.ts +38 -0
  765. package/src/scripting/types.ts +27 -0
  766. package/src/scripting/values.ts +25 -0
  767. package/src/sdk.ts +1 -0
  768. package/src/services/authorization.ts +60 -0
  769. package/src/services/cancellation.ts +15 -0
  770. package/src/services/cases.ts +34 -0
  771. package/src/services/http.ts +327 -0
  772. package/src/services/members.ts +41 -0
  773. package/src/services/moderation.ts +52 -0
  774. package/src/services/native-data.ts +40 -0
  775. package/src/services/native-moderation.ts +87 -0
  776. package/src/services/resource-authorization.ts +182 -0
  777. package/src/services/scheduler.ts +356 -0
  778. package/src/services/state-maintenance.ts +207 -0
  779. package/src/services/variables.ts +230 -0
  780. package/src/shared/clone.ts +5 -0
  781. package/src/shared/errors.ts +35 -0
  782. package/src/sqlite.ts +1 -0
  783. package/src/store.ts +5 -0
  784. package/src/testing.ts +82 -0
  785. package/src/tooling/language.ts +335 -0
  786. package/src/tooling.ts +3 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,105 @@
1
+ # Changelog
2
+
3
+ O Yuzuha segue [Semantic Versioning](https://semver.org/) e
4
+ [Keep a Changelog](https://keepachangelog.com/). Biblioteca, SDK reexportado e CLI
5
+ são entregues no mesmo pacote npm.
6
+
7
+ <details>
8
+ <summary>Para saber mais sobre o versionamento, expanda aqui.</summary>
9
+
10
+ As versões do pacote usam SemVer simples, como `0.1.0`. Os títulos do histórico
11
+ e eventuais tags Git incluem `v`, como `v0.1.0`.
12
+
13
+ O Yuzuha é uma biblioteca com CLI incluída. Não há sufixo `m`, divisão por
14
+ superfícies ou canais `-alpha`, `-beta` e `-stable` no histórico. A série `0.x`
15
+ continua em desenvolvimento inicial; ausência de sufixo não significa validação
16
+ de operação no Fluxer real.
17
+
18
+ Cada entrada usa `## vX.Y.Z · DD/MM/YYYY`, um resumo humano e a lista de mudanças.
19
+ Publicar um pacote ou criar uma tag é uma operação separada da atualização destes
20
+ documentos. Veja a [política completa](VERSIONING.md).
21
+
22
+ </details>
23
+
24
+ ## v0.1.4 · 22/10/2026
25
+
26
+ Eventos em scripts, cron com fuso, HTTP em streaming e ferramentas de manutenção e testes offline, com autorização compartilhada nos recursos. Esta atualização da biblioteca Yuzuha foi preparada em 22/10/2026 (v0.1.4).
27
+
28
+ - **19 funções novas**, totalizando **288**: eventos, cron, HTTP multipart, conjuntos de arrays, bytes, percentuais, conversão exata de bases, pré-carga de mensagens e criação de emojis em lote. O SDK permanece em **3.3.0**.
29
+ - Mutações de cargos, canais e webhooks em `ctx.resources` verificam autor e bot, servidor, permissões locais e hierarquia aplicável, tanto em scripts quanto em comandos nativos. IDs autorizados são usados na operação final; tokens de webhook não dispensam os guards.
30
+ - `bot.scriptEvent` e `plugin.scriptEvents` atendem seis eventos do SDK com dados próprios e imutáveis. Payloads parciais mantêm campos ausentes como `null`; reply exige mensagem disponível. Cancelamento, erros, logs e encerramento seguem o ciclo de vida do bot.
31
+ - Scheduler aceita cron de cinco campos, fusos IANA, políticas de execuções atrasadas, concorrência limitada e jitter de retry. Mantém claims, heartbeat e proteção de efeitos parciais; trata transições de horário de verão e expressões sem ocorrência válida.
32
+ - `HttpService.stream` entrega o corpo incrementalmente, mantendo timeout, limite e cancelamento durante a leitura. Multipart aceita texto e bytes; políticas por comando só restringem hosts e limites existentes. `$try` continua sem capturar guards e cancelamento.
33
+ - Transações reduzem cópias redundantes mantendo isolamento e rollback. `StateMaintenance` oferece estatísticas, limpeza paginada por cursor e backup versionado; restore valida conflitos e claims antes de aplicar, com simulação por padrão.
34
+ - CLI acrescenta `lint --json`, exportação de catálogo de plugins, `test` com cenários JSON offline e `data` para manutenção. Lint e cenários não importam código do usuário; exportar funções de uma config exige indicar o arquivo confiável explicitamente.
35
+ - Ports próprios precisam implementar os novos métodos e o campo `RoleInfo.managed`; o SDK fixado não expõe esse metadado. As mudanças de autorização e migração estão em [VERSIONING.md](VERSIONING.md).
36
+ - Correções de integração preservam IDs reais em eventos sem cache, recusam autor ausente antes de consultas ou dados de usuário, rejeitam arrays esparsos antes de persistir e descartam corpos HTTP também em falhas de redirecionamento.
37
+ - Catálogo do editor, referência gerada, documentação e testes do pacote instalado atualizados. Instruções de instalação pelo npm e de uso local incluídas; a validação funcional é offline, sem login no Fluxer.
38
+ - Manifest usa o caminho normalizado da CLI para evitar avisos no publish; o teste do pacote instalado também verifica `npm exec --offline -- yuzuha --version`.
39
+
40
+ ## v0.1.3 · 21/10/2026
41
+
42
+ Histórico de tarefas, diagnósticos no editor, variáveis com expiração e mais recursos do Fluxer, com cancelamento e logs integrados. Esta atualização da biblioteca Yuzuha foi preparada em 21/10/2026 (v0.1.3).
43
+
44
+ - **24 funções novas**, totalizando **269**: moderação de voz, threads ativas/arquivadas, canais de link, avisos de conteúdo, perfis, contagens ao vivo, TTL, transações declarativas e histórico/reexecução de tarefas.
45
+ - `ctx.mod.move`, `mute` e `deafen` compartilham guards de autor/bot, hierarquia, proteção de alvos e casos; falhas parciais continuam escapando de `$try` e impedem retry.
46
+ - Threads arquivadas preservam membros, paginação e cursores; perfis normalizados e contagens de gateway incluem timeout e cancelamento. O SDK permanece em **3.3.0**.
47
+ - Scheduler persiste histórico limitado, oferece consulta de falhas e reexecução manual segura, renova a claim por heartbeat e encaminha falhas de manutenção aos hooks. Encerramento cancela e aguarda a finalização das execuções rastreadas.
48
+ - Variáveis recebem TTL consistente em memória, JSON e SQLite; `userFor` escolhe outro usuário explicitamente. `$dataTransaction` executa até 100 operações entre escopos com rollback, validação e limite de saída antes do commit.
49
+ - Editor aponta sintaxe, nomes desconhecidos e aridade em arquivos e strings JS/TS, com posições UTF-16. Catálogos JSON de plugins atualizam sugestões e diagnósticos sem importar código do workspace.
50
+ - HTTP e collectors recebem automaticamente `ctx.signal`; cancelamento encerra esperas, remove listeners e não é capturado por `$try`. Respostas HTTP que chegam após o cancelamento têm o corpo descartado.
51
+ - `onLog` fornece eventos estruturados com correlação, resultado e duração, sem incluir entrada de comandos, mensagens de erro ou tokens automaticamente. Não há serviço de telemetria.
52
+ - Contextos criam os adaptadores de HTTP/collectors sob demanda. Benchmarks acrescentam catálogo grande, payload maior, séries de memória e comparação com baseline compatível, com limiar opcional de regressão.
53
+ - Documentação, exemplos de migração e verificações do pacote/editor atualizados. Validação continua offline, sem login ou publicação.
54
+
55
+ ## v0.1.2 · 21/10/2026
56
+
57
+ Busca e envio de mensagens, gestão de membros e threads, tarefas editáveis, transações entre chaves e ferramentas de desenvolvimento. Esta atualização da biblioteca Yuzuha foi preparada em 21/10/2026 (v0.1.2).
58
+
59
+ - **21 funções novas**, totalizando **245**: mensagens diretas, encaminhamento, buscas, apelidos, servidor, threads, convites/vanity, clonagem, anexos e controles de agendamento.
60
+ - Histórico com cursores `before`, `after` ou `around`; buscas preservam paginação e o estado de indexação do Fluxer.
61
+ - `ctx.members.setNickname` e `$nickname` compartilham motivo, permissões do autor/bot, hierarquia e proteção do dono. `ctx.members.search` acrescenta busca por nome.
62
+ - Edição de servidor e threads, entrada/saída do bot em threads, convites/vanity e clonagem de expressões sobre **@fluxerjs/core 3.3.0**.
63
+ - `$fileBase64`, `$sendFileBase64`, `$sendAttachments` e `sendBytes`/`sendAttachments` nativos: até dez anexos URL/binários na mesma mensagem, com descrições e menções desabilitadas.
64
+ - Scheduler com edição, pausa, retomada e política persistente de retry/backoff por tarefa. Alterações recusam tarefas em execução; scripts só alteram tarefas do mesmo autor e servidor.
65
+ - Falhas de dispatch agora chegam ao scheduler. Guards e moderação aplicada ou parcialmente concluída encerram a tarefa sem retry automático; claims impedem que uma conclusão antiga apague uma tarefa reivindicada novamente.
66
+ - `ctx.data.transaction` oferece operações síncronas entre várias chaves e escopos, com rollback, validação antes do commit e isolamento em memória, JSON e SQLite.
67
+ - `yuzuha doctor [config] [--json]` verifica Node, SDK, configuração, comandos, permissões declaradas, presença de token e acesso ao caminho do store, sem login ou exposição de segredos.
68
+ - Extensão VS Code incluída no pacote e instalador VSIX local: autocomplete, argumentos em snippets, hover e assinatura ativa para `.yz`/`.yuzuha` e strings JS/TS. Catálogo gerado do registro; `yuzuha/tooling` expõe os auxiliares de linguagem.
69
+ - Benchmarks reproduzíveis de dispatch, compilação, avaliação, memória e transações concorrentes, com aquecimento, amostras e JSON. Resultados locais não representam desempenho em rede.
70
+ - Guias de migração, editor, benchmarks e cobertura atualizados; validação offline dos contratos novos e do tarball instalado.
71
+
72
+ ## v0.1.1 · 21/10/2026
73
+
74
+ Mais recursos do Fluxer.js nos modos nativo e script, operações de arrays e correções de execução, JSON e HTTP. Esta atualização da biblioteca Yuzuha foi preparada em 21/10/2026 (v0.1.1).
75
+
76
+ - **26 funções novas**, totalizando **224**: reações de mensagens, membros de threads, edição de emojis, criação/edição/exclusão de stickers, posição de canais/cargos e categorias.
77
+ - `$arrayMap`, `$arrayFilter`, `$arraySome`, `$arrayEvery`, `$arrayFind`, `$arrayReduce` e `$arraySortBy`, com expressões reavaliadas por item, curto-circuito, restauração de variáveis e os mesmos orçamentos do runtime. `$loopAccumulator` expõe o acumulador da redução.
78
+ - `$arrayConcat`, `$arrayFlat`, `$arrayChunk`, `$jsonValues` e `$jsonEntries` para compor e consultar dados sem alterar os valores originais.
79
+ - Os recursos de `ctx.resources` compartilham as novas operações com scripts. Listas de usuários de reações e membros de threads aceitam limite e cursor de paginação.
80
+ - `$createEmoji[nome;url]` baixa bytes respeitando a política HTTP e envia base64 ao SDK; corrige o envio da URL como se fosse uma imagem codificada. `ctx.http.requestBytes` permite downloads binários sem conversão UTF-8.
81
+ - HTTP remove credenciais ao seguir redirecionamentos para outra origem, cancela streams que excedem o tamanho permitido e identifica timeout durante a leitura do corpo.
82
+ - Caminhos JSON deixam de seguir propriedades herdadas; `$object` e `$jsonMerge` preservam `__proto__` como dado. Escritas em arrays por caminho aceitam índices de **0 a 9999**, evitando alocações descontroladas.
83
+ - `$range` termina corretamente nos extremos de inteiros seguros; loops verificam a saída entre iterações, e `$loopValue` preserva itens `null`.
84
+ - Deduplicação de valores primitivos em `$arrayUnique` usa um conjunto, mantendo igualdade profunda para objetos. Arquivar e bloquear uma thread usa uma única chamada ao SDK.
85
+ - Resolução de emojis, stickers e cargos preserva erros de transporte; buscas por ID deixam de disparar listagens extras após falha.
86
+ - `mockResources` aceita implementações parciais por método, mantém `this` para campos privados e informa recursos ausentes com `NATIVE_UNAVAILABLE`.
87
+ - Referência gerada, inventário de lacunas, exemplos e testes offline atualizados. O SDK continua fixado em **@fluxerjs/core 3.3.0**; os wrappers ampliam a cobertura sem prometer uma função para cada método do SDK.
88
+
89
+ ## v0.1.0 · 20/10/2026
90
+
91
+ Primeira versão do Yuzuha como framework para Fluxer.js com function mode opcional. Um bot nativo ganha comandos tipados, guards, estado, moderação, recursos, agendamentos e HTTP sem carregar o runtime de scripts; quem quiser a sintaxe curta ativa `yuzuha/functions`.
92
+
93
+ - Entrypoint `yuzuha` focado em JS/TS: `Yuzuha`, `defineCommand`, `arg`, eventos, contexto, plugins, middleware, recursos, stores, scheduler, HTTP e `yuzuha/sdk`.
94
+ - Function mode isolado em `yuzuha/functions`: parser, AST, evaluator, `Runtime`, `registerBuiltins`, `script()` e **198 funções**.
95
+ - Builtins registrados sob demanda: comandos nativos não pagam o custo nem expõem a linguagem; `code` ativa o modo automaticamente e `bot.enableFunctions()` permite pré-carregar.
96
+ - Comandos com prefixos, aliases, argumentos tipados, cooldowns, permissões, checks, middleware e recarga atômica de diretórios.
97
+ - Eventos tipados, plugins com comandos/eventos/funções e encerramento idempotente.
98
+ - Moderação compartilhada entre JS/TS e scripts, com permissões efetivas, hierarquia, proteção do alvo e casos por servidor.
99
+ - Recursos de usuários, membros, servidor, banimentos, auditoria, presença, cargos, canais, mensagens, fixados, anexos, convites, webhooks, emojis, stickers, threads e fóruns.
100
+ - Coletores com timeout e filtro por autor, `$confirm`, JSON, arrays, texto, números, datas, loops e caminhos persistentes.
101
+ - Agendamentos persistentes com retry e recuperação de tarefas órfãs; HTTP com timeout, limite de bytes, allowlist e bloqueio de hosts privados.
102
+ - Estado em memória, JSON e SQLite com schema 2, transações, snapshots isolados e migração automática do schema 1.
103
+ - CLI `init`, `check`, `functions`, `run` e `dev`; scaffolds JS/TS com `--functions` opcional.
104
+ - `MockTransport`, `mockResources` e `MemoryStore` para validação offline, sem login ou ações reais.
105
+ - **168 testes** offline, **198 funções** na referência gerada e documentação de linguagem, framework, API, arquitetura, estado, paridade, CLI e validação.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Gabriel
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,157 @@
1
- # Temporary Holding Version
1
+ # Yuzuha
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ Framework para bots do Fluxer: a ergonomia que falta no Fluxer.js, com comandos
4
+ tipados, guards, estado, moderação, agendamentos e testes offline. Function mode
5
+ (scripts no estilo ForgeScript) é opcional. Versão **0.1.4**.
6
+
7
+ ```ts
8
+ import { arg, defineCommand, Yuzuha } from 'yuzuha';
9
+
10
+ const bot = new Yuzuha({ name: 'meu-bot', prefix: '!' });
11
+
12
+ bot.command(defineCommand({
13
+ name: 'ban',
14
+ description: 'Bane um membro e registra um caso.',
15
+ args: {
16
+ membro: arg.user().required(),
17
+ motivo: arg.text().rest(),
18
+ },
19
+ async run(ctx) {
20
+ const caso = await ctx.mod.ban(ctx.args.get('membro'), {
21
+ reason: ctx.args.get('motivo') ?? '',
22
+ });
23
+ await ctx.reply(`Membro banido. Caso #${caso.id}.`);
24
+ },
25
+ }));
26
+
27
+ await bot.login();
28
+ ```
29
+
30
+ Uso: `!ban @membro spam no chat`. `ctx.mod.ban` verifica permissões e hierarquia,
31
+ executa o banimento e registra o caso. O token vem de `FLUXER_BOT_TOKEN`.
32
+ `bot.client` continua sendo o client real do Fluxer.js.
33
+
34
+ ## O que o Yuzuha adiciona ao Fluxer.js
35
+
36
+ - Comandos com prefixos, aliases, argumentos tipados, cooldowns e permissões.
37
+ - Guards, middleware, plugins, eventos tipados e recarga de comandos sem reiniciar.
38
+ - Moderação compartilhada (ban, kick, timeout, unban) com casos por servidor.
39
+ - Recursos prontos: usuários, cargos, canais, mensagens, convites, webhooks,
40
+ emojis, stickers, threads e fóruns, incluindo reações, membros de threads,
41
+ posição de cargos/canais e categorias.
42
+ - Estado em memória, JSON ou SQLite, com transações e variáveis por escopo.
43
+ - Agendamentos persistentes com cron, fuso IANA, concorrência e retry com jitter.
44
+ - HTTP textual/binário, streaming e multipart, com limites e políticas por comando.
45
+ - `MockTransport`, `mockResources` e `MemoryStore` para testar sem token.
46
+ - Transações entre chaves, agendamentos editáveis com pausa/retry e apelidos com autorização compartilhada.
47
+ - Limpeza de expirados, estatísticas e backup/restauração versionados com simulação.
48
+ - `doctor`, lint JSON, cenários offline, catálogos de plugins e extensão VS Code.
49
+ - SDK `@fluxerjs/core` **3.3.0** reexportado em `yuzuha/sdk`, sem esconder o original.
50
+
51
+ Não é um fork do Fluxer.js nem um wrapper de todos os métodos do SDK. O que não
52
+ estiver no framework continua acessível por `bot.client` e pelos tipos originais.
53
+
54
+ ## Function mode (opcional)
55
+
56
+ Quem preferir a sintaxe curta do ForgeScript pode usar `yuzuha/functions`. O
57
+ runtime é ativado quando um comando com `code` ou um evento de script é registrado.
58
+
59
+ ```ts
60
+ import { script } from 'yuzuha/functions';
61
+ import { Yuzuha } from 'yuzuha';
62
+
63
+ const bot = new Yuzuha({ prefix: '!' });
64
+
65
+ bot.command(script({
66
+ name: 'ban',
67
+ code: '$modBan[$mentioned[1];$messageSlice[1]]$reply[Membro banido. Caso #$caseID.]',
68
+ }));
69
+ ```
70
+
71
+ Os dois modos compartilham guards, estado, moderação e recursos. São
72
+ **288 funções** com referência gerada, ou use `bot.enableFunctions()` para
73
+ pré-carregar o runtime.
74
+
75
+ `bot.scriptEvent()` registra scripts para entrada/saída de membros, edição/exclusão
76
+ de mensagens e reações. O contexto preserva os dados disponíveis do evento e exige
77
+ um canal real para enviar respostas. Veja [eventos](docs/EVENTS.md).
78
+
79
+ ## Instalar pelo npm
80
+
81
+ Requer Node **22.13 ou mais recente**. O pacote é ESM; use `"type": "module"`
82
+ no `package.json` do seu projeto.
83
+
84
+ ```sh
85
+ npm install yuzuha@0.1.4
86
+ ```
87
+
88
+ Para gerar um bot novo:
89
+
90
+ ```sh
91
+ npx yuzuha@0.1.4 init ./meu-bot --ts
92
+ cd meu-bot
93
+ npm install yuzuha@0.1.4
94
+ npm run check
95
+ npm run typecheck
96
+ cp .env.example .env
97
+ ```
98
+
99
+ `init` aponta inicialmente para a instalação que o executou. O `npm install`
100
+ acima troca essa referência local pela versão do registro, permitindo mover e
101
+ compartilhar o projeto. Para JavaScript, use `--js` e omita `typecheck`.
102
+ Para acrescentar um exemplo de script, use `--functions`.
103
+
104
+ Preencha `FLUXER_BOT_TOKEN` no `.env` e execute `npm run dev`.
105
+
106
+ ## Desenvolver a biblioteca localmente
107
+
108
+ ```sh
109
+ cd ~/Projects/yuzuha
110
+ npm ci
111
+ npm run build
112
+ node dist/cli.js init ~/Projects/meu-bot --ts
113
+ cd ~/Projects/meu-bot
114
+ npm install
115
+ npm run check
116
+ npm run typecheck
117
+ cp .env.example .env
118
+ ```
119
+
120
+ O scaffold desse fluxo usa a biblioteca local. O
121
+ [guia inicial](docs/QUICKSTART.md) explica instalação e configuração.
122
+
123
+ ## Experimentar sem token
124
+
125
+ ```sh
126
+ npx tsx examples/offline.ts
127
+ npx tsx examples/function-mode.ts
128
+ node dist/cli.js check examples/yuzuha.config.js --json
129
+ node dist/cli.js functions --category moderation
130
+ ```
131
+
132
+ Os exemplos usam `MockTransport`; nenhuma ação chega ao Fluxer. `check` importa
133
+ config e comandos JS/TS de confiança, valida os scripts e não chama `login`.
134
+ Ele não substitui o typecheck do TypeScript.
135
+
136
+ ## Documentação
137
+
138
+ Comece pelo [índice da documentação](docs/README.md).
139
+
140
+ | Preciso de… | Documento |
141
+ |---|---|
142
+ | Criar meu primeiro bot JS ou TS | [Guia inicial](docs/QUICKSTART.md) |
143
+ | Programar comandos, eventos e plugins | [Guia nativo JS/TS](docs/NATIVE.md) |
144
+ | Escrever scripts `$...` | [Function mode](docs/LANGUAGE.md) e [referência](docs/FUNCTIONS.md) |
145
+ | Saber quais funções de script existem | [Lacunas auditadas](docs/FUNCTION-GAPS.md) |
146
+ | Usar comandos, contexto e extensões | [Framework](docs/FRAMEWORK.md) e [API](docs/API.md) |
147
+ | Copiar exemplos completos | [Receitas](docs/COOKBOOK.md) |
148
+ | Usar a linha de comando | [CLI](docs/CLI.md) |
149
+ | Entender módulos e dependências | [Arquitetura](docs/ARCHITECTURE.md) |
150
+ | Escolher persistência e tratar falhas | [Estado e execução](docs/STORAGE.md) |
151
+ | Diagnosticar ou testar | [Problemas comuns](docs/TROUBLESHOOTING.md) e [testes](docs/TESTING.md) |
152
+ | Usar autocomplete e diagnóstico offline | [Editor e doctor](docs/EDITOR.md) |
153
+ | Medir dispatch, runtime e memória | [Benchmarks](docs/BENCHMARKS.md) |
154
+ | Ver evidência local | [Validação](docs/VALIDATION.md) |
155
+
156
+ As mudanças estão no [changelog](CHANGELOG.md); a política de versões está em
157
+ [VERSIONING.md](VERSIONING.md). Leia [CONTRIBUTING.md](CONTRIBUTING.md) para contribuir.
package/VERSIONING.md ADDED
@@ -0,0 +1,134 @@
1
+ # Versionamento
2
+
3
+ O Yuzuha aplica o formato Hory ao histórico e usa **SemVer simples** no pacote.
4
+ A versão desta atualização é **0.1.4**.
5
+
6
+ ## Pacote e histórico
7
+
8
+ | Lugar | Formato nesta versão |
9
+ |---|---|
10
+ | `package.json` e raiz do `package-lock.json` | `0.1.4` |
11
+ | Pacote npm e saída de `yuzuha --version` | `0.1.4` |
12
+ | Título do changelog | `## v0.1.4 · 22/10/2026` |
13
+ | Eventual tag Git | `v0.1.4` |
14
+
15
+ O SDK e a CLI pertencem ao mesmo pacote. Para bibliotecas, a convenção Hory mantém
16
+ SemVer sem `m`, sem seções por superfície e sem sufixos de canal.
17
+
18
+ As datas dos títulos usam `DD/MM/YYYY`. Cada entrada começa com uma frase sobre
19
+ o resultado da versão, menciona o produto, a data e a tag, e lista mudanças
20
+ de uso ou manutenção. O histórico preserva as datas e os fatos anteriores.
21
+
22
+ ## Compatibilidade
23
+
24
+ A série `0.x` ainda evolui. Mesmo assim, correções patch preservam os imports
25
+ públicos e os comandos documentados; mudanças incompatíveis recebem uma nota
26
+ explícita no changelog.
27
+
28
+ Mudanças incompatíveis planejadas devem entrar numa versão minor enquanto
29
+ estivermos em `0.x`. Ao chegar a `1.0.0`, mudanças incompatíveis exigem major;
30
+ novas funcionalidades compatíveis, minor; correções compatíveis, patch.
31
+
32
+ Os exports públicos são `yuzuha`, `yuzuha/functions`, `yuzuha/sdk`,
33
+ `yuzuha/testing` e `yuzuha/tooling`. A organização interna de `src/` não cria estabilidade de deep
34
+ imports. Schema persistido,
35
+ gramática e funções documentadas também fazem parte da compatibilidade.
36
+
37
+ A versão do SDK é fixada separadamente. Atualizá-la exige revisar
38
+ [PARITY.md](docs/PARITY.md), o adaptador e o teste de consumidor. A versão do bot
39
+ gerado por `init` pertence ao consumidor e não precisa acompanhar a biblioteca.
40
+
41
+ ## Preparar uma atualização
42
+
43
+ ### Migrar para 0.1.4
44
+
45
+ O schema persistido continua em 2. Cron, timezone, missedRun e retryJitter são
46
+ campos opcionais das tarefas; stores próprios devem preservá-los. Backup usa um
47
+ envelope separado `yuzuha-state` versão 1, validado antes de qualquer gravação.
48
+ `StateMaintenance.restore` exige política `replace` ou `merge` e simula por
49
+ padrão; passe `dryRun: false` ou `data restore --apply` para confirmar a alteração.
50
+ Pare e drene o scheduler antes de backup/restore de tarefas em execução.
51
+
52
+ Implementações próprias de `Resources` precisam acrescentar `messages.preload`,
53
+ `expressions.createEmojisBulk` e `webhooks.fetch`, além de `RoleInfo.managed`.
54
+ `transport.member(guildID, userID, channelID)` precisa resolver permissões locais
55
+ em qualquer canal do servidor, inclusive categorias. O adaptador do SDK 3.3.0
56
+ usa `false` quando o campo `managed` não está disponível no SDK; essa limitação
57
+ não permite afirmar proteção completa de cargos gerenciados remotamente.
58
+
59
+ Mutações de cargos/canais e operações de webhooks pelo contexto agora exigem as
60
+ permissões do autor e do bot, com hierarquia e escopo aplicáveis. Comandos que antes
61
+ usavam apenas a autoridade do bot podem receber `GuardError`. Use `ctx.resources`
62
+ para a autorização compartilhada. `bot.resources` e `bot.client` permanecem APIs
63
+ de código nativo confiável com a autoridade do bot.
64
+
65
+ `ScriptEventDefinition` é separado de comandos. Em eventos, `ctx.event` contém
66
+ os dados disponíveis; eventos parciais ou de exclusão não oferecem uma mensagem
67
+ para reply. Defina um canal de saída quando necessário e um `actorID` explícito
68
+ somente quando o código confiável precisar escolher outro autor. Não há promoção
69
+ automática para a identidade do bot. Veja [EVENTS.md](docs/EVENTS.md).
70
+
71
+ Políticas `command.http` só restringem a política global; configurações inválidas
72
+ são recusadas no registro. O timeout do streaming permanece ativo até o corpo
73
+ terminar ou ser cancelado. Código nativo deve consumir ou cancelar o corpo de
74
+ `stream`. Consulte [HTTP.md](docs/HTTP.md), [SCHEDULER.md](docs/SCHEDULER.md) e
75
+ [CLI.md](docs/CLI.md) para limites e formatos novos.
76
+
77
+ ### Migrar para 0.1.3
78
+
79
+ Schema 2 anterior continua legível. Os campos opcionais `variableExpirations` e
80
+ `scheduleHistory` guardam TTL e histórico; não remova esses campos ao escrever um
81
+ store próprio. `set` sem TTL mantém o comportamento persistente; `update` preserva
82
+ o prazo de valores vivos. `userFor` é explícito e exige contexto de servidor.
83
+
84
+ Implementações próprias de `Resources` precisam acrescentar `users.profile`,
85
+ `users.guildCounts`, `users.channelCounts`, `threads.active` e `threads.archived`.
86
+ Collectors aceitam `AbortSignal` opcional; o transporte passa a receber as ações
87
+ `move`, `mute` e `deafen`, as opções de voz no sexto argumento de `moderate` e
88
+ um canal opcional em `member` para verificar permissões efetivas. Adapte esses
89
+ contratos antes de habilitar os novos comandos. `mockResources` continua
90
+ permitindo mocks parciais. Os ports brutos mantêm a autoridade do bot; prefira
91
+ `ctx.mod` para autorização do autor e casos.
92
+
93
+ `destroy` agora cancela HTTP/collectors do contexto e aguarda também o scheduler.
94
+ Callbacks próprios do scheduler recebem `signal` como segundo argumento;
95
+ callbacks antigos que ignoram esse argumento continuam válidos. Use `stop()`
96
+ seguido de `await drain()` ao gerenciar uma instância fora do bot. Cancelamento
97
+ é cooperativo e não desfaz efeitos já confirmados.
98
+
99
+ O histórico retém 1000 execuções por padrão. Reexecução manual usa o ID da
100
+ execução com falha, cria uma tarefa nova e recusa guards/efeitos de moderação.
101
+ Os catálogos do editor são JSON declarativo configurado em
102
+ `yuzuha.functionCatalogs`; não são imports de plugins. Veja
103
+ [STORAGE.md](docs/STORAGE.md), [NATIVE.md](docs/NATIVE.md) e
104
+ [EDITOR.md](docs/EDITOR.md).
105
+
106
+ ### Migrar para 0.1.2
107
+
108
+ Os imports existentes e o schema 2 continuam válidos. Implementações próprias
109
+ de `Resources` precisam fornecer os novos métodos das áreas de mensagens,
110
+ usuários, threads, convites e expressões. Mocks podem usar implementações parciais
111
+ com `mockResources`. A extensão tem a mesma versão numérica da biblioteca e
112
+ continua sendo uma ferramenta incluída, sem criar uma superfície Hory separada.
113
+
114
+ Operações de agendamento em script agora respeitam autor e servidor; um ID de
115
+ outro escopo retorna `false`. Tarefas em execução recusam edição/pausa/retomada.
116
+ Falhas de comandos passam a receber retry conforme a política; guards e
117
+ moderação já aplicada são terminais. Revise comandos agendados com efeitos
118
+ externos para idempotência. Veja [NATIVE.md](docs/NATIVE.md) e
119
+ [EDITOR.md](docs/EDITOR.md).
120
+
121
+ ### Procedimento
122
+
123
+ 1. Atualize manifest e lockfile para a mesma versão.
124
+ 2. Acrescente a entrada no [CHANGELOG.md](CHANGELOG.md), com data real e mudanças verificáveis.
125
+ 3. Atualize migração, cobertura e documentação quando o contrato mudar.
126
+ 4. Rode `npm run check` e `npm run smoke:package` e registre a evidência.
127
+ 5. Inspecione `npm pack --dry-run` para conferir a distribuição.
128
+
129
+ A CLI lê a versão do manifest; não mantenha um número paralelo no código.
130
+ `npm run check:docs` verifica links locais e a correspondência entre manifest,
131
+ lockfile e título do changelog.
132
+
133
+ Atualizar estes arquivos prepara a versão local. Publicação npm, criação de tag
134
+ e release remota são operações separadas e exigem instrução explícita.
@@ -0,0 +1,21 @@
1
+ export function compareReports(current, baseline) {
2
+ for (const field of ['platform', 'arch', 'cpu']) {
3
+ if (current[field] !== baseline[field]) throw new Error(`Baseline incompatível: ${field}.`);
4
+ }
5
+ if (current.node.split('.')[0] !== baseline.node?.split('.')[0]) throw new Error('Baseline incompatível: versão principal do Node.');
6
+ for (const field of ['iterations', 'samples', 'concurrency']) {
7
+ if (current.config[field] !== baseline.config?.[field]) throw new Error(`Baseline incompatível: ${field}.`);
8
+ }
9
+ for (const field of ['catalogSize', 'payloadSize', 'soakRounds']) {
10
+ if (baseline.config?.[field] !== undefined && current.config[field] !== baseline.config[field]) throw new Error(`Baseline incompatível: ${field}.`);
11
+ }
12
+ if (!Array.isArray(baseline.results)) throw new Error('Baseline sem resultados.');
13
+ return current.results.map(row => {
14
+ const previous = baseline.results.find(item => item.name === row.name);
15
+ if (!previous) return { name: row.name, status: 'new' };
16
+ if (!(previous.operationsPerSecond > 0) || !Number.isFinite(previous.operationsPerSecond)) throw new Error(`Baseline inválida: ${row.name}.`);
17
+ const throughputChangePercent = (row.operationsPerSecond / previous.operationsPerSecond - 1) * 100;
18
+ return { name: row.name, status: 'compared', throughputChangePercent,
19
+ regressionPercent: Math.max(0, -throughputChangePercent), heapChangeBytes: row.heapDeltaBytes - previous.heapDeltaBytes };
20
+ });
21
+ }
@@ -0,0 +1,123 @@
1
+ import assert from 'node:assert/strict';
2
+ import { performance } from 'node:perf_hooks';
3
+ import { arch, cpus, platform } from 'node:os';
4
+ import { readFile } from 'node:fs/promises';
5
+ import { CommandContext, MemoryStore, Yuzuha } from '../dist/index.js';
6
+ import { registerBuiltins, Runtime } from '../dist/functions.js';
7
+ import { MockTransport, mockMessage } from '../dist/testing.js';
8
+ import { compareReports } from './compare.mjs';
9
+
10
+ const config = { iterations: 1000, samples: 7, concurrency: 16, catalogSize: 1000, payloadSize: 4096, soakRounds: 5, json: false };
11
+ let baselinePath, maxRegression;
12
+ for (let index = 2; index < process.argv.length; index++) {
13
+ const key = process.argv[index];
14
+ if (key === '--json') { config.json = true; continue; }
15
+ if (key === '--baseline') {
16
+ baselinePath = process.argv[++index];
17
+ if (!baselinePath || baselinePath.startsWith('--')) throw new Error('Informe --baseline <arquivo.json>.');
18
+ continue;
19
+ }
20
+ if (key === '--max-regression') {
21
+ maxRegression = Number(process.argv[++index]);
22
+ if (!Number.isFinite(maxRegression) || maxRegression < 0 || maxRegression > 100) throw new Error('--max-regression deve estar entre 0 e 100.');
23
+ continue;
24
+ }
25
+ const name = { '--catalog-size': 'catalogSize', '--payload-size': 'payloadSize', '--soak-rounds': 'soakRounds' }[key] ?? key?.slice(2);
26
+ if (!['iterations', 'samples', 'concurrency', 'catalogSize', 'payloadSize', 'soakRounds'].includes(name)) throw new Error(`Opção desconhecida: ${key}`);
27
+ const value = Number(process.argv[++index]);
28
+ const max = { iterations: 1_000_000, samples: 50, concurrency: 128, catalogSize: 10_000, payloadSize: 99_000, soakRounds: 1000 }[name];
29
+ if (!Number.isSafeInteger(value) || value < 1 || value > max) throw new Error(`${key} deve estar entre 1 e ${max}.`);
30
+ config[name] = value;
31
+ }
32
+ if (maxRegression !== undefined && !baselinePath) throw new Error('--max-regression precisa de --baseline.');
33
+ const percentile = (values, fraction) => [...values].sort((a, b) => a - b)[Math.ceil(values.length * fraction) - 1];
34
+ const results = [];
35
+ async function measure(name, operation, concurrency = 1) {
36
+ const run = async count => {
37
+ let next = 0;
38
+ await Promise.all(Array.from({ length: Math.min(concurrency, count) }, async () => {
39
+ while (next++ < count) await operation();
40
+ }));
41
+ };
42
+ await run(Math.min(config.iterations, 200));
43
+ global.gc?.();
44
+ const before = process.memoryUsage(), samples = [];
45
+ for (let sample = 0; sample < config.samples; sample++) {
46
+ const start = performance.now();
47
+ await run(config.iterations);
48
+ samples.push(performance.now() - start);
49
+ }
50
+ global.gc?.();
51
+ const after = process.memoryUsage();
52
+ results.push({ name, operations: config.iterations * config.samples, concurrency,
53
+ medianMs: percentile(samples, 0.5), p95Ms: percentile(samples, 0.95),
54
+ operationsPerSecond: config.iterations * config.samples / (samples.reduce((sum, value) => sum + value, 0) / 1000),
55
+ heapDeltaBytes: after.heapUsed - before.heapUsed, rssDeltaBytes: after.rss - before.rss, samplesMs: samples });
56
+ }
57
+ const bots = [];
58
+ try {
59
+ for (const scripted of [false, true]) {
60
+ for (const concurrency of new Set([1, config.concurrency])) {
61
+ const bot = new Yuzuha({ transport: new MockTransport(), store: new MemoryStore(), scheduler: false, http: false });
62
+ bots.push(bot);
63
+ bot.command(scripted ? { name: 'bench', code: '$let[x;$math[2;*;3]]' } : { name: 'bench', run() {} });
64
+ const name = scripted ? 'dispatch/functions' : 'dispatch/native';
65
+ await measure(concurrency > 1 ? `${name}-concurrent` : name, async () => {
66
+ assert.equal(await bot.handle(mockMessage('!bench')), 'success');
67
+ }, concurrency);
68
+ }
69
+ }
70
+ const runtime = registerBuiltins(new Runtime());
71
+ const source = '$arrayReduce[$range[1;10];0;$math[$loopAccumulator;+;$loopValue]]';
72
+ const program = runtime.compile(source);
73
+ const ctx = new CommandContext({ message: mockMessage('!bench'), command: { name: 'bench', code: '' },
74
+ transport: new MockTransport(), store: new MemoryStore(), cooldown: () => 0 });
75
+ await measure('runtime/compile', () => { runtime.compile(source); });
76
+ await measure('runtime/evaluate', async () => { assert.equal(await runtime.execute(program, ctx), 55); });
77
+ await measure('store/transaction-concurrent', async () => {
78
+ await ctx.data.transaction(tx => {
79
+ tx.guild.update('a', value => Number(value) + 1, 0);
80
+ tx.guild.update('b', value => Number(value) + 1, 0);
81
+ });
82
+ }, config.concurrency);
83
+ const expected = Math.min(config.iterations, 200) + config.iterations * config.samples;
84
+ assert.equal(await ctx.data.guild.get('a'), expected);
85
+ assert.equal(await ctx.data.guild.get('b'), expected);
86
+ const catalog = new Yuzuha({ transport: new MockTransport(), store: new MemoryStore(), scheduler: false, http: false });
87
+ bots.push(catalog);
88
+ for (let index = 0; index < config.catalogSize; index++) catalog.command({ name: `item${index}`, run() {} });
89
+ await measure('dispatch/large-catalog', async () => {
90
+ assert.equal(await catalog.handle(mockMessage(`!item${config.catalogSize - 1}`)), 'success');
91
+ });
92
+ const payload = 'x'.repeat(config.payloadSize);
93
+ const payloadProgram = runtime.compile(`$let[payload;${payload}]`);
94
+ await measure('runtime/large-payload', async () => {
95
+ assert.equal(await runtime.execute(payloadProgram, ctx), '');
96
+ assert.equal(ctx.vars.get('payload').length, config.payloadSize);
97
+ });
98
+ const memory = [];
99
+ for (let round = 0; round <= config.soakRounds; round++) {
100
+ if (round > 0) for (let index = 0; index < config.iterations; index++) {
101
+ assert.equal(await catalog.handle(mockMessage(`!item${config.catalogSize - 1} ${payload}`)), 'success');
102
+ }
103
+ global.gc?.();
104
+ const usage = process.memoryUsage();
105
+ memory.push({ round, operations: round * config.iterations, heapUsed: usage.heapUsed, rss: usage.rss });
106
+ }
107
+ const manifest = JSON.parse(await readFile(new URL('../package.json', import.meta.url), 'utf8'));
108
+ const report = { version: manifest.version, date: new Date().toISOString(), node: process.versions.node,
109
+ platform: platform(), arch: arch(), cpu: cpus()[0]?.model, gc: typeof global.gc === 'function', config, results,
110
+ memory: { samples: memory, heapGrowthBytes: memory.at(-1).heapUsed - memory[0].heapUsed,
111
+ rssGrowthBytes: memory.at(-1).rss - memory[0].rss } };
112
+ if (baselinePath) {
113
+ report.comparison = compareReports(report, JSON.parse(await readFile(baselinePath, 'utf8')));
114
+ if (maxRegression !== undefined && report.comparison.some(row => row.regressionPercent > maxRegression)) process.exitCode = 1;
115
+ }
116
+ console.log(config.json ? JSON.stringify(report, null, 2) : [
117
+ `Yuzuha ${report.version} · Node ${report.node} · ${report.platform}/${report.arch}`,
118
+ `${config.iterations} operações/amostra, ${config.samples} amostras; GC explícito: ${report.gc}`,
119
+ ...results.map(row => `${row.name}: ${row.operationsPerSecond.toFixed(0)} ops/s; mediana ${row.medianMs.toFixed(2)}ms; p95 ${row.p95Ms.toFixed(2)}ms; heap ${row.heapDeltaBytes} bytes`),
120
+ `Memória após ${config.soakRounds * config.iterations} operações: heap ${report.memory.heapGrowthBytes} bytes; RSS ${report.memory.rssGrowthBytes} bytes`,
121
+ ...(report.comparison ?? []).map(row => `${row.name}: ${row.status === 'new' ? 'novo cenário' : `${row.throughputChangePercent.toFixed(1)}% ops/s ante baseline`}`),
122
+ ].join('\n'));
123
+ } finally { await Promise.all(bots.map(bot => bot.destroy())); }
@@ -0,0 +1,3 @@
1
+ export { FluxerTransport } from './infrastructure/fluxer/transport.js';
2
+ export { incoming } from './infrastructure/fluxer/messages.js';
3
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { FluxerTransport } from './infrastructure/fluxer/transport.js';
2
+ export { incoming } from './infrastructure/fluxer/messages.js';
3
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAC;AACvE,OAAO,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC","sourcesContent":["export { FluxerTransport } from './infrastructure/fluxer/transport.js';\nexport { incoming } from './infrastructure/fluxer/messages.js';\n"]}
package/dist/bot.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ export { Yuzuha, Bot } from './framework/bot.js';
2
+ export type { YuzuhaOptions, YuzuhaPlugin, Middleware, DispatchResult } from './framework/options.js';
3
+ //# sourceMappingURL=bot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot.d.ts","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC"}
package/dist/bot.js ADDED
@@ -0,0 +1,2 @@
1
+ export { Yuzuha, Bot } from './framework/bot.js';
2
+ //# sourceMappingURL=bot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bot.js","sourceRoot":"","sources":["../src/bot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC","sourcesContent":["export { Yuzuha, Bot } from './framework/bot.js';\nexport type { YuzuhaOptions, YuzuhaPlugin, Middleware, DispatchResult } from './framework/options.js';\n"]}