@stacksjs/defaults 0.70.57 → 0.70.59

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 (575) hide show
  1. package/app/Actions/AI/AskAction.ts +40 -0
  2. package/app/Actions/AI/SummaryAction.ts +40 -0
  3. package/app/Actions/Auth/AuthUserAction.ts +13 -0
  4. package/app/Actions/Auth/CreateTokenAction.ts +64 -0
  5. package/app/Actions/Auth/DisableTwoFactorAction.ts +37 -0
  6. package/app/Actions/Auth/EnableTwoFactorAction.ts +37 -0
  7. package/app/Actions/Auth/GenerateAuthenticationAction.ts +51 -0
  8. package/app/Actions/Auth/GenerateRegistrationAction.ts +53 -0
  9. package/app/Actions/Auth/GenerateTwoFactorSecretAction.ts +26 -0
  10. package/app/Actions/Auth/ListTokensAction.ts +30 -0
  11. package/app/Actions/Auth/LoginAction.ts +73 -0
  12. package/app/Actions/Auth/LogoutAction.ts +16 -0
  13. package/app/Actions/Auth/LogoutAllAction.ts +28 -0
  14. package/app/Actions/Auth/RefreshTokenAction.ts +39 -0
  15. package/app/Actions/Auth/RegisterAction.ts +57 -0
  16. package/app/Actions/Auth/ResendVerificationAction.ts +24 -0
  17. package/app/Actions/Auth/RevokeTokenAction.ts +43 -0
  18. package/app/Actions/Auth/TestAbilitiesAction.ts +61 -0
  19. package/app/Actions/Auth/VerifyAuthenticationAction.ts +94 -0
  20. package/app/Actions/Auth/VerifyEmailAction.ts +25 -0
  21. package/app/Actions/Auth/VerifyRegistrationAction.ts +59 -0
  22. package/app/Actions/Auth/VerifyTwoFactorLoginAction.ts +57 -0
  23. package/app/Actions/Billable/CheckoutAction.ts +25 -0
  24. package/app/Actions/Buddy/BuddyBrowseAction.ts +34 -0
  25. package/app/Actions/Buddy/BuddyCancelAction.ts +32 -0
  26. package/app/Actions/Buddy/BuddyCommitAction.ts +25 -0
  27. package/app/Actions/Buddy/BuddyGitHubConnectAction.ts +40 -0
  28. package/app/Actions/Buddy/BuddyGitHubDisconnectAction.ts +19 -0
  29. package/app/Actions/Buddy/BuddyProcessAction.ts +65 -0
  30. package/app/Actions/Buddy/BuddyProcessStreamAction.ts +128 -0
  31. package/app/Actions/Buddy/BuddyPushAction.ts +21 -0
  32. package/app/Actions/Buddy/BuddyRepoOpenAction.ts +44 -0
  33. package/app/Actions/Buddy/BuddyRepoValidateAction.ts +35 -0
  34. package/app/Actions/Buddy/BuddySettingsAction.ts +21 -0
  35. package/app/Actions/Buddy/BuddySettingsUpdateAction.ts +46 -0
  36. package/app/Actions/Buddy/BuddyStateAction.ts +28 -0
  37. package/app/Actions/Buddy/BuddyTitleAction.ts +49 -0
  38. package/app/Actions/Buddy/CommandsAction.ts +802 -0
  39. package/app/Actions/Buddy/JobCancelAction.ts +32 -0
  40. package/app/Actions/Buddy/JobRetryAction.ts +49 -0
  41. package/app/Actions/Buddy/JobsListAction.ts +141 -0
  42. package/app/Actions/Buddy/ScheduleListAction.ts +52 -0
  43. package/app/Actions/Buddy/VersionsAction.ts +12 -0
  44. package/app/Actions/Cms/AuthorDestroyAction.ts +21 -0
  45. package/app/Actions/Cms/AuthorIndexAction.ts +14 -0
  46. package/app/Actions/Cms/AuthorShowAction.ts +19 -0
  47. package/app/Actions/Cms/AuthorStoreAction.ts +20 -0
  48. package/app/Actions/Cms/AuthorUpdateAction.ts +24 -0
  49. package/app/Actions/Cms/CategorizableDestroyAction.ts +16 -0
  50. package/app/Actions/Cms/CategorizableIndexAction.ts +14 -0
  51. package/app/Actions/Cms/CategorizableShowAction.ts +16 -0
  52. package/app/Actions/Cms/CategorizableStoreAction.ts +42 -0
  53. package/app/Actions/Cms/CategorizableUpdateAction.ts +38 -0
  54. package/app/Actions/Cms/CommentDestroyAction.ts +16 -0
  55. package/app/Actions/Cms/CommentIndexAction.ts +17 -0
  56. package/app/Actions/Cms/CommentShowAction.ts +16 -0
  57. package/app/Actions/Cms/CommentStoreAction.ts +39 -0
  58. package/app/Actions/Cms/CommentUpdateAction.ts +37 -0
  59. package/app/Actions/Cms/PageDestroyAction.ts +16 -0
  60. package/app/Actions/Cms/PageIndexAction.ts +14 -0
  61. package/app/Actions/Cms/PageStoreAction.ts +31 -0
  62. package/app/Actions/Cms/PageUpdateAction.ts +27 -0
  63. package/app/Actions/Cms/PostDestroyAction.ts +17 -0
  64. package/app/Actions/Cms/PostIndexAction.ts +14 -0
  65. package/app/Actions/Cms/PostShowAction.ts +16 -0
  66. package/app/Actions/Cms/PostStoreAction.ts +37 -0
  67. package/app/Actions/Cms/PostUpdateAction.ts +32 -0
  68. package/app/Actions/Cms/PostViewsUpdateAction.ts +34 -0
  69. package/app/Actions/Cms/RssFeedAction.ts +59 -0
  70. package/app/Actions/Cms/SitemapAction.ts +60 -0
  71. package/app/Actions/Cms/TaggableDestroyAction.ts +16 -0
  72. package/app/Actions/Cms/TaggableIndexAction.ts +14 -0
  73. package/app/Actions/Cms/TaggableShowAction.ts +16 -0
  74. package/app/Actions/Cms/TaggableStoreAction.ts +36 -0
  75. package/app/Actions/Cms/TaggableUpdateAction.ts +37 -0
  76. package/app/Actions/Commerce/CouponDestroyAction.ts +18 -0
  77. package/app/Actions/Commerce/CouponIndexAction.ts +16 -0
  78. package/app/Actions/Commerce/CouponShowAction.ts +18 -0
  79. package/app/Actions/Commerce/CouponStoreAction.ts +21 -0
  80. package/app/Actions/Commerce/CouponUpdateAction.ts +31 -0
  81. package/app/Actions/Commerce/CustomerDestroyAction.ts +16 -0
  82. package/app/Actions/Commerce/CustomerIndexAction.ts +15 -0
  83. package/app/Actions/Commerce/CustomerShowAction.ts +18 -0
  84. package/app/Actions/Commerce/CustomerStoreAction.ts +29 -0
  85. package/app/Actions/Commerce/CustomerUpdateAction.ts +27 -0
  86. package/app/Actions/Commerce/DriverDestroyAction.ts +18 -0
  87. package/app/Actions/Commerce/GiftCardDestroyAction.ts +18 -0
  88. package/app/Actions/Commerce/GiftCardIndexAction.ts +16 -0
  89. package/app/Actions/Commerce/GiftCardShowAction.ts +18 -0
  90. package/app/Actions/Commerce/GiftCardStatsAction.ts +30 -0
  91. package/app/Actions/Commerce/GiftCardStoreAction.ts +35 -0
  92. package/app/Actions/Commerce/GiftCardUpdateAction.ts +26 -0
  93. package/app/Actions/Commerce/GiftCardUpdateBalanceAction.ts +36 -0
  94. package/app/Actions/Commerce/OrderDestroyAction.ts +18 -0
  95. package/app/Actions/Commerce/OrderExportAction.ts +15 -0
  96. package/app/Actions/Commerce/OrderIndexAction.ts +15 -0
  97. package/app/Actions/Commerce/OrderShowAction.ts +18 -0
  98. package/app/Actions/Commerce/OrderStoreAction.ts +32 -0
  99. package/app/Actions/Commerce/OrderUpdateAction.ts +34 -0
  100. package/app/Actions/Commerce/PaymentDestroyAction.ts +16 -0
  101. package/app/Actions/Commerce/PaymentFetchStatsAction.ts +31 -0
  102. package/app/Actions/Commerce/PaymentIndexAction.ts +15 -0
  103. package/app/Actions/Commerce/PaymentMonthlyTrendsAction.ts +21 -0
  104. package/app/Actions/Commerce/PaymentShowAction.ts +17 -0
  105. package/app/Actions/Commerce/PaymentStoreAction.ts +24 -0
  106. package/app/Actions/Commerce/PaymentUpdateAction.ts +35 -0
  107. package/app/Actions/Commerce/PrintDeviceDestroyAction.ts +18 -0
  108. package/app/Actions/Commerce/PrintDeviceIndexAction.ts +14 -0
  109. package/app/Actions/Commerce/PrintDeviceShowAction.ts +17 -0
  110. package/app/Actions/Commerce/PrintDeviceStoreAction.ts +27 -0
  111. package/app/Actions/Commerce/PrintDeviceUpdateAction.ts +27 -0
  112. package/app/Actions/Commerce/Product/ManufacturerDestroyAction.ts +20 -0
  113. package/app/Actions/Commerce/Product/ManufacturerIndexAction.ts +16 -0
  114. package/app/Actions/Commerce/Product/ManufacturerShowAction.ts +18 -0
  115. package/app/Actions/Commerce/Product/ManufacturerStoreAction.ts +14 -0
  116. package/app/Actions/Commerce/Product/ProductCategoryIndexAction.ts +16 -0
  117. package/app/Actions/Commerce/Product/ProductCategoryStoreAction.ts +16 -0
  118. package/app/Actions/Commerce/Product/ProductDestroyAction.ts +16 -0
  119. package/app/Actions/Commerce/Product/ProductIndexAction.ts +14 -0
  120. package/app/Actions/Commerce/Product/ProductManufacturerDestroyAction.ts +18 -0
  121. package/app/Actions/Commerce/Product/ProductManufacturerIndexAction.ts +14 -0
  122. package/app/Actions/Commerce/Product/ProductManufacturerShowAction.ts +16 -0
  123. package/app/Actions/Commerce/Product/ProductManufacturerStoreAction.ts +14 -0
  124. package/app/Actions/Commerce/Product/ProductManufacturerUpdateAction.ts +18 -0
  125. package/app/Actions/Commerce/Product/ProductShowAction.ts +18 -0
  126. package/app/Actions/Commerce/Product/ProductStoreAction.ts +17 -0
  127. package/app/Actions/Commerce/Product/ProductUnitDestroyAction.ts +18 -0
  128. package/app/Actions/Commerce/Product/ProductUnitIndexAction.ts +14 -0
  129. package/app/Actions/Commerce/Product/ProductUnitShowAction.ts +18 -0
  130. package/app/Actions/Commerce/Product/ProductUnitStoreAction.ts +15 -0
  131. package/app/Actions/Commerce/Product/ProductUpdateAction.ts +17 -0
  132. package/app/Actions/Commerce/Product/ProductVariantDestroyAction.ts +18 -0
  133. package/app/Actions/Commerce/Product/ProductVariantIndexAction.ts +14 -0
  134. package/app/Actions/Commerce/Product/ProductVariantShowAction.ts +17 -0
  135. package/app/Actions/Commerce/Product/ProductVariantStoreAction.ts +14 -0
  136. package/app/Actions/Commerce/Product/ProductVariantUpdateAction.ts +16 -0
  137. package/app/Actions/Commerce/ReceiptDestroyAction.ts +18 -0
  138. package/app/Actions/Commerce/ReceiptIndexAction.ts +14 -0
  139. package/app/Actions/Commerce/ReceiptShowAction.ts +18 -0
  140. package/app/Actions/Commerce/ReceiptStoreAction.ts +28 -0
  141. package/app/Actions/Commerce/ReceiptUpdateAction.ts +30 -0
  142. package/app/Actions/Commerce/ReviewIndexAction.ts +14 -0
  143. package/app/Actions/Commerce/ReviewShowAction.ts +16 -0
  144. package/app/Actions/Commerce/ReviewStoreAction.ts +26 -0
  145. package/app/Actions/Commerce/ReviewUpdateAction.ts +28 -0
  146. package/app/Actions/Commerce/Shipping/DeliveryRouteDestroyAction.ts +18 -0
  147. package/app/Actions/Commerce/Shipping/DeliveryRouteIndexAction.ts +16 -0
  148. package/app/Actions/Commerce/Shipping/DeliveryRouteShowAction.ts +18 -0
  149. package/app/Actions/Commerce/Shipping/DeliveryRouteStoreAction.ts +16 -0
  150. package/app/Actions/Commerce/Shipping/DeliveryRouteUpdateAction.ts +18 -0
  151. package/app/Actions/Commerce/Shipping/DigitalDeliveryDestroyAction.ts +18 -0
  152. package/app/Actions/Commerce/Shipping/DigitalDeliveryIndexAction.ts +16 -0
  153. package/app/Actions/Commerce/Shipping/DigitalDeliveryShowAction.ts +18 -0
  154. package/app/Actions/Commerce/Shipping/DigitalDeliveryStoreAction.ts +18 -0
  155. package/app/Actions/Commerce/Shipping/DigitalDeliveryUpdateAction.ts +18 -0
  156. package/app/Actions/Commerce/Shipping/DriverIndexAction.ts +16 -0
  157. package/app/Actions/Commerce/Shipping/DriverShowAction.ts +18 -0
  158. package/app/Actions/Commerce/Shipping/DriverStoreAction.ts +16 -0
  159. package/app/Actions/Commerce/Shipping/DriverUpdateAction.ts +18 -0
  160. package/app/Actions/Commerce/Shipping/LicenseKeyDestroyAction.ts +20 -0
  161. package/app/Actions/Commerce/Shipping/LicenseKeyIndexAction.ts +16 -0
  162. package/app/Actions/Commerce/Shipping/LicenseKeyShowAction.ts +18 -0
  163. package/app/Actions/Commerce/Shipping/LicenseKeyStoreAction.ts +18 -0
  164. package/app/Actions/Commerce/Shipping/LicenseKeyUpdateAction.ts +18 -0
  165. package/app/Actions/Commerce/Shipping/ShippingMethodDestroyAction.ts +16 -0
  166. package/app/Actions/Commerce/Shipping/ShippingMethodIndexAction.ts +14 -0
  167. package/app/Actions/Commerce/Shipping/ShippingMethodShowAction.ts +16 -0
  168. package/app/Actions/Commerce/Shipping/ShippingMethodStoreAction.ts +16 -0
  169. package/app/Actions/Commerce/Shipping/ShippingMethodUpdateAction.ts +15 -0
  170. package/app/Actions/Commerce/Shipping/ShippingRateDestroyAction.ts +16 -0
  171. package/app/Actions/Commerce/Shipping/ShippingRateIndexAction.ts +14 -0
  172. package/app/Actions/Commerce/Shipping/ShippingRateShowAction.ts +16 -0
  173. package/app/Actions/Commerce/Shipping/ShippingRateStoreAction.ts +16 -0
  174. package/app/Actions/Commerce/Shipping/ShippingRateUpdateAction.ts +17 -0
  175. package/app/Actions/Commerce/Shipping/ShippingZoneDestroyAction.ts +16 -0
  176. package/app/Actions/Commerce/Shipping/ShippingZoneIndexAction.ts +14 -0
  177. package/app/Actions/Commerce/Shipping/ShippingZoneShowAction.ts +16 -0
  178. package/app/Actions/Commerce/Shipping/ShippingZoneStoreAction.ts +16 -0
  179. package/app/Actions/Commerce/Shipping/ShippingZoneUpdateAction.ts +15 -0
  180. package/app/Actions/Commerce/TaxRateDestroyAction.ts +16 -0
  181. package/app/Actions/Commerce/TaxRateIndexAction.ts +14 -0
  182. package/app/Actions/Commerce/TaxRateShowAction.ts +17 -0
  183. package/app/Actions/Commerce/TaxRateStoreAction.ts +24 -0
  184. package/app/Actions/Commerce/TaxRateUpdateAction.ts +24 -0
  185. package/app/Actions/Commerce/WaitlistProductAnalyticsAction.ts +29 -0
  186. package/app/Actions/Commerce/WaitlistProductDestroyAction.ts +16 -0
  187. package/app/Actions/Commerce/WaitlistProductIndexAction.ts +14 -0
  188. package/app/Actions/Commerce/WaitlistProductQuantityDistributionAction.ts +32 -0
  189. package/app/Actions/Commerce/WaitlistProductShowAction.ts +16 -0
  190. package/app/Actions/Commerce/WaitlistProductStatusAction.ts +37 -0
  191. package/app/Actions/Commerce/WaitlistProductStoreAction.ts +27 -0
  192. package/app/Actions/Commerce/WaitlistProductTimeSeriesAction.ts +25 -0
  193. package/app/Actions/Commerce/WaitlistProductUpdateAction.ts +29 -0
  194. package/app/Actions/Commerce/WaitlistRestaurantDashboardAction.ts +29 -0
  195. package/app/Actions/Commerce/WaitlistRestaurantDestroyAction.ts +16 -0
  196. package/app/Actions/Commerce/WaitlistRestaurantIndexAction.ts +14 -0
  197. package/app/Actions/Commerce/WaitlistRestaurantShowAction.ts +16 -0
  198. package/app/Actions/Commerce/WaitlistRestaurantStoreAction.ts +31 -0
  199. package/app/Actions/Commerce/WaitlistRestaurantUpdateAction.ts +33 -0
  200. package/app/Actions/ContactAction.ts +72 -0
  201. package/app/Actions/Dashboard/Actions/CreateAction.ts +11 -0
  202. package/app/Actions/Dashboard/Actions/GetActionCount.ts +12 -0
  203. package/app/Actions/Dashboard/Actions/GetActions.ts +19 -0
  204. package/app/Actions/Dashboard/Analytics/BlogAnalyticsAction.ts +58 -0
  205. package/app/Actions/Dashboard/Analytics/BrowserAnalyticsAction.ts +42 -0
  206. package/app/Actions/Dashboard/Analytics/CommerceAnalyticsAction.ts +64 -0
  207. package/app/Actions/Dashboard/Analytics/CountryAnalyticsAction.ts +41 -0
  208. package/app/Actions/Dashboard/Analytics/DeviceAnalyticsAction.ts +58 -0
  209. package/app/Actions/Dashboard/Analytics/EventAnalyticsAction.ts +90 -0
  210. package/app/Actions/Dashboard/Analytics/MarketingAnalyticsAction.ts +76 -0
  211. package/app/Actions/Dashboard/Analytics/PageAnalyticsAction.ts +45 -0
  212. package/app/Actions/Dashboard/Analytics/ReferrerAnalyticsAction.ts +72 -0
  213. package/app/Actions/Dashboard/Analytics/SalesAnalyticsAction.ts +73 -0
  214. package/app/Actions/Dashboard/Analytics/WebAnalyticsAction.ts +114 -0
  215. package/app/Actions/Dashboard/Auth/MeAction.ts +84 -0
  216. package/app/Actions/Dashboard/BuddyDashboardAction.ts +34 -0
  217. package/app/Actions/Dashboard/Ci/RepoRunJobsAction.ts +60 -0
  218. package/app/Actions/Dashboard/Ci/RepoRunsAction.ts +67 -0
  219. package/app/Actions/Dashboard/Ci/RunnerHistoryAction.ts +58 -0
  220. package/app/Actions/Dashboard/Ci/StatusAction.ts +73 -0
  221. package/app/Actions/Dashboard/Ci/failure-notifier.ts +214 -0
  222. package/app/Actions/Dashboard/Ci/runner-pressure-monitor.ts +259 -0
  223. package/app/Actions/Dashboard/Cloud/CloudIndexAction.ts +61 -0
  224. package/app/Actions/Dashboard/Commands/CreateCommand.ts +11 -0
  225. package/app/Actions/Dashboard/Commands/GetAverageCommandTime.ts +12 -0
  226. package/app/Actions/Dashboard/Commands/GetCommandCount.ts +12 -0
  227. package/app/Actions/Dashboard/Commands/GetCommandSuccessRate.ts +12 -0
  228. package/app/Actions/Dashboard/Commands/GetCommands.ts +12 -0
  229. package/app/Actions/Dashboard/Commerce/CommerceCouponsAction.ts +48 -0
  230. package/app/Actions/Dashboard/Commerce/CommerceCustomersAction.ts +48 -0
  231. package/app/Actions/Dashboard/Commerce/CommerceDashboardAction.ts +98 -0
  232. package/app/Actions/Dashboard/Commerce/CommerceDeliveryAction.ts +65 -0
  233. package/app/Actions/Dashboard/Commerce/CommerceGiftCardsAction.ts +48 -0
  234. package/app/Actions/Dashboard/Commerce/CommerceOrdersAction.ts +51 -0
  235. package/app/Actions/Dashboard/Commerce/CommercePaymentsAction.ts +59 -0
  236. package/app/Actions/Dashboard/Commerce/CommerceProductsAction.ts +50 -0
  237. package/app/Actions/Dashboard/Commerce/CommerceTaxesAction.ts +46 -0
  238. package/app/Actions/Dashboard/Commerce/PosIndexAction.ts +57 -0
  239. package/app/Actions/Dashboard/Commerce/ReviewIndexAction.ts +51 -0
  240. package/app/Actions/Dashboard/Content/AuthorIndexAction.ts +51 -0
  241. package/app/Actions/Dashboard/Content/CategoryIndexAction.ts +27 -0
  242. package/app/Actions/Dashboard/Content/CommentIndexAction.ts +41 -0
  243. package/app/Actions/Dashboard/Content/ContentDashboardAction.ts +54 -0
  244. package/app/Actions/Dashboard/Content/FileIndexAction.ts +24 -0
  245. package/app/Actions/Dashboard/Content/PageIndexAction.ts +25 -0
  246. package/app/Actions/Dashboard/Content/PostIndexAction.ts +102 -0
  247. package/app/Actions/Dashboard/Content/SeoIndexAction.ts +17 -0
  248. package/app/Actions/Dashboard/Content/TagIndexAction.ts +23 -0
  249. package/app/Actions/Dashboard/CreateDnsRecords.ts +11 -0
  250. package/app/Actions/Dashboard/CreateMailbox.ts +11 -0
  251. package/app/Actions/Dashboard/DashboardActivityAction.ts +58 -0
  252. package/app/Actions/Dashboard/DashboardHealthAction.ts +52 -0
  253. package/app/Actions/Dashboard/DashboardHomeAction.ts +83 -0
  254. package/app/Actions/Dashboard/DashboardStatsAction.ts +48 -0
  255. package/app/Actions/Dashboard/Data/AccessTokenIndexAction.ts +65 -0
  256. package/app/Actions/Dashboard/Data/ActivityIndexAction.ts +28 -0
  257. package/app/Actions/Dashboard/Data/DataDashboardAction.ts +67 -0
  258. package/app/Actions/Dashboard/Data/SubscriberIndexAction.ts +48 -0
  259. package/app/Actions/Dashboard/Data/TeamIndexAction.ts +43 -0
  260. package/app/Actions/Dashboard/Data/UserIndexAction.ts +48 -0
  261. package/app/Actions/Dashboard/Deployments/CreateDeployment.ts +11 -0
  262. package/app/Actions/Dashboard/Deployments/GetAverageDeploymentTime.ts +15 -0
  263. package/app/Actions/Dashboard/Deployments/GetDeployScript.ts +12 -0
  264. package/app/Actions/Dashboard/Deployments/GetDeploymentCount.ts +12 -0
  265. package/app/Actions/Dashboard/Deployments/GetDeploymentLiveTerminalOutput.ts +12 -0
  266. package/app/Actions/Dashboard/Deployments/GetDeployments.ts +20 -0
  267. package/app/Actions/Dashboard/Deployments/GetRecentDeployments.ts +12 -0
  268. package/app/Actions/Dashboard/Deployments/UpdateDeployScript.ts +11 -0
  269. package/app/Actions/Dashboard/GetDnsRecords.ts +12 -0
  270. package/app/Actions/Dashboard/GetEmailInboxes.ts +12 -0
  271. package/app/Actions/Dashboard/GetProjects.ts +13 -0
  272. package/app/Actions/Dashboard/GetRecentCommits.ts +13 -0
  273. package/app/Actions/Dashboard/Inbox/InboxIndexAction.ts +144 -0
  274. package/app/Actions/Dashboard/Inbox/InboxShowAction.ts +89 -0
  275. package/app/Actions/Dashboard/Infrastructure/CommandIndexAction.ts +18 -0
  276. package/app/Actions/Dashboard/Infrastructure/DnsIndexAction.ts +101 -0
  277. package/app/Actions/Dashboard/Infrastructure/EnvironmentIndexAction.ts +67 -0
  278. package/app/Actions/Dashboard/Infrastructure/InsightsAction.ts +29 -0
  279. package/app/Actions/Dashboard/Infrastructure/LogIndexAction.ts +50 -0
  280. package/app/Actions/Dashboard/Infrastructure/MailboxIndexAction.ts +85 -0
  281. package/app/Actions/Dashboard/Infrastructure/PermissionIndexAction.ts +54 -0
  282. package/app/Actions/Dashboard/Infrastructure/RequestIndexAction.ts +44 -0
  283. package/app/Actions/Dashboard/Infrastructure/ServerIndexAction.ts +101 -0
  284. package/app/Actions/Dashboard/Jobs/CreateJob.ts +11 -0
  285. package/app/Actions/Dashboard/Jobs/GetAverageJobTime.ts +12 -0
  286. package/app/Actions/Dashboard/Jobs/GetJobHistory.ts +12 -0
  287. package/app/Actions/Dashboard/Jobs/GetJobs.ts +11 -0
  288. package/app/Actions/Dashboard/Jobs/GetJobsPerMinute.ts +12 -0
  289. package/app/Actions/Dashboard/Jobs/JobIndexAction.ts +136 -0
  290. package/app/Actions/Dashboard/Jobs/JobRetryAction.ts +23 -0
  291. package/app/Actions/Dashboard/Jobs/JobStatsAction.ts +49 -0
  292. package/app/Actions/Dashboard/Kanban/BoardDestroyAction.ts +84 -0
  293. package/app/Actions/Dashboard/Kanban/BoardShowAction.ts +215 -0
  294. package/app/Actions/Dashboard/Kanban/BoardStoreAction.ts +98 -0
  295. package/app/Actions/Dashboard/Kanban/BoardUpdateAction.ts +96 -0
  296. package/app/Actions/Dashboard/Kanban/BoardsIndexAction.ts +81 -0
  297. package/app/Actions/Dashboard/Kanban/BoardsReorderAction.ts +80 -0
  298. package/app/Actions/Dashboard/Kanban/CardAssigneesSyncAction.ts +103 -0
  299. package/app/Actions/Dashboard/Kanban/CardCommentDestroyAction.ts +33 -0
  300. package/app/Actions/Dashboard/Kanban/CardCommentStoreAction.ts +82 -0
  301. package/app/Actions/Dashboard/Kanban/CardDestroyAction.ts +48 -0
  302. package/app/Actions/Dashboard/Kanban/CardLabelsSyncAction.ts +103 -0
  303. package/app/Actions/Dashboard/Kanban/CardShowAction.ts +122 -0
  304. package/app/Actions/Dashboard/Kanban/CardStoreAction.ts +112 -0
  305. package/app/Actions/Dashboard/Kanban/CardUpdateAction.ts +91 -0
  306. package/app/Actions/Dashboard/Kanban/CardsReorderAction.ts +148 -0
  307. package/app/Actions/Dashboard/Kanban/ColumnDestroyAction.ts +59 -0
  308. package/app/Actions/Dashboard/Kanban/ColumnStoreAction.ts +94 -0
  309. package/app/Actions/Dashboard/Kanban/ColumnUpdateAction.ts +89 -0
  310. package/app/Actions/Dashboard/Kanban/ColumnsReorderAction.ts +85 -0
  311. package/app/Actions/Dashboard/Kanban/LabelDestroyAction.ts +41 -0
  312. package/app/Actions/Dashboard/Kanban/LabelStoreAction.ts +70 -0
  313. package/app/Actions/Dashboard/Kanban/LabelUpdateAction.ts +83 -0
  314. package/app/Actions/Dashboard/Kanban/UsersListAction.ts +36 -0
  315. package/app/Actions/Dashboard/Library/CreateComponent.ts +11 -0
  316. package/app/Actions/Dashboard/Library/CreateFunction.ts +11 -0
  317. package/app/Actions/Dashboard/Library/DependencyIndexAction.ts +92 -0
  318. package/app/Actions/Dashboard/Library/GetAverageReleaseTime.ts +12 -0
  319. package/app/Actions/Dashboard/Library/GetComponents.ts +24 -0
  320. package/app/Actions/Dashboard/Library/GetComponentsDownloadCount.ts +12 -0
  321. package/app/Actions/Dashboard/Library/GetDownloadCount.ts +12 -0
  322. package/app/Actions/Dashboard/Library/GetFunctions.ts +22 -0
  323. package/app/Actions/Dashboard/Library/GetFunctionsDownloadCount.ts +12 -0
  324. package/app/Actions/Dashboard/Library/GetReleaseCount.ts +12 -0
  325. package/app/Actions/Dashboard/Library/GetReleases.ts +28 -0
  326. package/app/Actions/Dashboard/Library/PackageIndexAction.ts +26 -0
  327. package/app/Actions/Dashboard/Marketing/CampaignIndexAction.ts +45 -0
  328. package/app/Actions/Dashboard/Marketing/ListIndexAction.ts +43 -0
  329. package/app/Actions/Dashboard/Marketing/SocialPostIndexAction.ts +47 -0
  330. package/app/Actions/Dashboard/Models/GetModels.ts +39 -0
  331. package/app/Actions/Dashboard/Models/GetSubscriberCount.ts +12 -0
  332. package/app/Actions/Dashboard/Models/GetUserCount.ts +12 -0
  333. package/app/Actions/Dashboard/Models/ModelShowAction.ts +131 -0
  334. package/app/Actions/Dashboard/Models/ModelsIndexAction.ts +169 -0
  335. package/app/Actions/Dashboard/Notifications/CreateNotification.ts +11 -0
  336. package/app/Actions/Dashboard/Notifications/GetAverageNotificationTime.ts +12 -0
  337. package/app/Actions/Dashboard/Notifications/GetNotificationCount.ts +12 -0
  338. package/app/Actions/Dashboard/Notifications/GetNotificationDeliveryRate.ts +12 -0
  339. package/app/Actions/Dashboard/Notifications/GetNotificationHistory.ts +12 -0
  340. package/app/Actions/Dashboard/Notifications/GetNotifications.ts +12 -0
  341. package/app/Actions/Dashboard/Notifications/NotificationDashboardAction.ts +43 -0
  342. package/app/Actions/Dashboard/Queries/QueryIndexAction.ts +22 -0
  343. package/app/Actions/Dashboard/Queue/QueueRetryFailedAction.ts +22 -0
  344. package/app/Actions/Dashboard/Queue/QueueStatsAction.ts +98 -0
  345. package/app/Actions/Dashboard/Queue/QueueWorkersAction.ts +46 -0
  346. package/app/Actions/Dashboard/Rbac/PermissionDestroyAction.ts +33 -0
  347. package/app/Actions/Dashboard/Rbac/PermissionStoreAction.ts +53 -0
  348. package/app/Actions/Dashboard/Rbac/PermissionsIndexAction.ts +34 -0
  349. package/app/Actions/Dashboard/Rbac/RoleDestroyAction.ts +35 -0
  350. package/app/Actions/Dashboard/Rbac/RolePermissionsShowAction.ts +45 -0
  351. package/app/Actions/Dashboard/Rbac/RolePermissionsSyncAction.ts +63 -0
  352. package/app/Actions/Dashboard/Rbac/RoleStoreAction.ts +58 -0
  353. package/app/Actions/Dashboard/Rbac/RolesIndexAction.ts +36 -0
  354. package/app/Actions/Dashboard/Rbac/UserRolesShowAction.ts +40 -0
  355. package/app/Actions/Dashboard/Rbac/UserRolesSyncAction.ts +65 -0
  356. package/app/Actions/Dashboard/Rbac/UsersListAction.ts +39 -0
  357. package/app/Actions/Dashboard/Realtime/RealtimeStatsAction.ts +50 -0
  358. package/app/Actions/Dashboard/Releases/ReleaseIndexAction.ts +21 -0
  359. package/app/Actions/Dashboard/Requests/GetAverageRequestTime.ts +12 -0
  360. package/app/Actions/Dashboard/Requests/GetRequestCount.ts +12 -0
  361. package/app/Actions/Dashboard/Requests/GetRequestSuccessRate.ts +12 -0
  362. package/app/Actions/Dashboard/Requests/GetRequests.ts +12 -0
  363. package/app/Actions/Dashboard/Search/GlobalSearchAction.ts +26 -0
  364. package/app/Actions/Dashboard/ServiceHealthAction.ts +243 -0
  365. package/app/Actions/Dashboard/Settings/MailSettingsGetAction.ts +20 -0
  366. package/app/Actions/Dashboard/Settings/MailSettingsUpdateAction.ts +10 -0
  367. package/app/Actions/Dashboard/Settings/SettingsIndexAction.ts +40 -0
  368. package/app/Actions/Dashboard/Settings/UpdateAiConfig.ts +27 -0
  369. package/app/Actions/Dashboard/Settings/UpdateAnalyticsConfig.ts +38 -0
  370. package/app/Actions/Dashboard/Settings/UpdateAppConfig.ts +38 -0
  371. package/app/Actions/Dashboard/Settings/UpdateCacheConfig.ts +11 -0
  372. package/app/Actions/Dashboard/Settings/UpdateCliConfig.ts +11 -0
  373. package/app/Actions/Dashboard/Settings/UpdateCloudConfig.ts +38 -0
  374. package/app/Actions/Dashboard/Settings/UpdateDatabaseConfig.ts +38 -0
  375. package/app/Actions/Dashboard/Settings/UpdateDnsConfig.ts +38 -0
  376. package/app/Actions/Dashboard/Settings/UpdateDocsConfig.ts +11 -0
  377. package/app/Actions/Dashboard/Settings/UpdateEmailConfig.ts +38 -0
  378. package/app/Actions/Dashboard/Settings/UpdateEnvConfig.ts +11 -0
  379. package/app/Actions/Dashboard/Settings/UpdateErrorsConfig.ts +11 -0
  380. package/app/Actions/Dashboard/Settings/UpdateFileSystemsConfig.ts +11 -0
  381. package/app/Actions/Dashboard/Settings/UpdateGitConfig.ts +11 -0
  382. package/app/Actions/Dashboard/Settings/UpdateHashingConfig.ts +11 -0
  383. package/app/Actions/Dashboard/Settings/UpdateLibraryConfig.ts +11 -0
  384. package/app/Actions/Dashboard/Settings/UpdateLoggerConfig.ts +11 -0
  385. package/app/Actions/Dashboard/Settings/UpdateNotificationConfig.ts +11 -0
  386. package/app/Actions/Dashboard/Settings/UpdatePaymentConfig.ts +11 -0
  387. package/app/Actions/Dashboard/Settings/UpdatePortsConfig.ts +38 -0
  388. package/app/Actions/Dashboard/Settings/UpdateQueueConfig.ts +11 -0
  389. package/app/Actions/Dashboard/Settings/UpdateSearchEngineConfig.ts +11 -0
  390. package/app/Actions/Dashboard/Settings/UpdateSecurityConfig.ts +38 -0
  391. package/app/Actions/Dashboard/Settings/UpdateServicesConfig.ts +38 -0
  392. package/app/Actions/Dashboard/Settings/UpdateStorageConfig.ts +11 -0
  393. package/app/Actions/Dashboard/Settings/UpdateTeamConfig.ts +11 -0
  394. package/app/Actions/Dashboard/Settings/UpdateUiConfig.ts +11 -0
  395. package/app/Actions/HealthAction.ts +112 -0
  396. package/app/Actions/InstallAction.ts +83 -0
  397. package/app/Actions/Locale/SetLocaleAction.ts +51 -0
  398. package/app/Actions/LogAction.ts +42 -0
  399. package/app/Actions/Logs/LogFetchStatsAction.ts +50 -0
  400. package/app/Actions/Logs/LogIndexOrmAction.ts +13 -0
  401. package/app/Actions/Logs/LogShowOrmAction.ts +17 -0
  402. package/app/Actions/Logs/LogStoreOrmAction.ts +16 -0
  403. package/app/Actions/Logs/LogUpdateOrmAction.ts +20 -0
  404. package/app/Actions/Monitoring/ErrorDestroyAction.ts +25 -0
  405. package/app/Actions/Monitoring/ErrorGroupAction.ts +21 -0
  406. package/app/Actions/Monitoring/ErrorIgnoreAction.ts +25 -0
  407. package/app/Actions/Monitoring/ErrorIndexAction.ts +14 -0
  408. package/app/Actions/Monitoring/ErrorResolveAction.ts +25 -0
  409. package/app/Actions/Monitoring/ErrorShowAction.ts +19 -0
  410. package/app/Actions/Monitoring/ErrorStatsAction.ts +14 -0
  411. package/app/Actions/Monitoring/ErrorTimelineAction.ts +14 -0
  412. package/app/Actions/Monitoring/ErrorUnresolveAction.ts +25 -0
  413. package/app/Actions/NotifyUser.ts +10 -0
  414. package/app/Actions/Password/PasswordResetAction.ts +54 -0
  415. package/app/Actions/Password/SendPasswordResetEmailAction.ts +66 -0
  416. package/app/Actions/Password/VerifyResetTokenAction.ts +27 -0
  417. package/app/Actions/Payment/CancelSubscriptionAction.ts +20 -0
  418. package/app/Actions/Payment/CreateCheckoutAction.ts +28 -0
  419. package/app/Actions/Payment/CreateInvoiceSubscription.ts +18 -0
  420. package/app/Actions/Payment/CreatePaymentIntentAction.ts +31 -0
  421. package/app/Actions/Payment/CreateSetupIntentAction.ts +20 -0
  422. package/app/Actions/Payment/CreateSubscriptionAction.ts +23 -0
  423. package/app/Actions/Payment/DeleteDefaultPaymentAction.ts +18 -0
  424. package/app/Actions/Payment/FetchActiveSubscriptionAction.ts +18 -0
  425. package/app/Actions/Payment/FetchDefaultPaymentMethodAction.ts +18 -0
  426. package/app/Actions/Payment/FetchPaymentCustomerAction.ts +18 -0
  427. package/app/Actions/Payment/FetchPaymentMethodsAction.ts +18 -0
  428. package/app/Actions/Payment/FetchProductAction.ts +15 -0
  429. package/app/Actions/Payment/FetchTransactionHistoryAction.ts +18 -0
  430. package/app/Actions/Payment/FetchUserSubscriptionsAction.ts +18 -0
  431. package/app/Actions/Payment/SetDefaultPaymentAction.ts +20 -0
  432. package/app/Actions/Payment/SetUserDefaultPaymentAction.ts +20 -0
  433. package/app/Actions/Payment/StorePaymentMethodAction.ts +20 -0
  434. package/app/Actions/Payment/StoreTransactionAction.ts +20 -0
  435. package/app/Actions/Payment/UpdateCustomerAction.ts +24 -0
  436. package/app/Actions/Payment/UpdateDefaultPaymentMethodAction.ts +18 -0
  437. package/app/Actions/Payment/UpdateSubscriptionAction.ts +22 -0
  438. package/app/Actions/Queue/FetchQueuesAction.ts +14 -0
  439. package/app/Actions/README.md +61 -0
  440. package/app/Actions/Realtime/FetchWebsocketsAction.ts +14 -0
  441. package/app/Actions/RobotsAction.ts +61 -0
  442. package/app/Actions/SendWelcomeEmail.ts +40 -0
  443. package/app/Actions/SitemapAction.ts +234 -0
  444. package/app/Actions/Storefront/AddToCartAction.ts +153 -0
  445. package/app/Actions/Storefront/CheckoutContactAction.ts +50 -0
  446. package/app/Actions/Storefront/CheckoutShippingAction.ts +61 -0
  447. package/app/Actions/Storefront/GetCartAction.ts +58 -0
  448. package/app/Actions/Storefront/PlaceOrderAction.ts +195 -0
  449. package/app/Actions/Storefront/SubmitReviewAction.ts +140 -0
  450. package/app/Actions/Storefront/UpdateCartItemAction.ts +83 -0
  451. package/app/Actions/Storefront/_shipping.ts +64 -0
  452. package/app/Actions/SubscriberEmailAction.ts +60 -0
  453. package/app/Actions/TestErrorAction.ts +163 -0
  454. package/app/Actions/UnsubscribeAction.ts +107 -0
  455. package/app/Actions/UploadTestAction.ts +57 -0
  456. package/app/Broadcasts/OrderShipped.ts +57 -0
  457. package/app/Commands/Inspire.ts +57 -0
  458. package/app/Commands/README.md +84 -0
  459. package/app/Commands.ts +38 -0
  460. package/app/Controllers/ComingSoonController.ts +9 -0
  461. package/app/Controllers/QueryController.ts +373 -0
  462. package/app/Events.ts +14 -0
  463. package/app/Gates.ts +107 -0
  464. package/app/Jobs/ExampleJob.ts +20 -0
  465. package/app/Jobs/ExampleTwoJob.ts +12 -0
  466. package/app/Jobs/PruneModelsJob.ts +61 -0
  467. package/app/Jobs/PruneQueryLogsJob.ts +51 -0
  468. package/app/Jobs/README.md +79 -0
  469. package/app/Jobs/SendCampaignJob.ts +201 -0
  470. package/app/Jobs/SendEmailJob.ts +52 -0
  471. package/app/Jobs/SendPasswordResetEmailJob.ts +44 -0
  472. package/app/Jobs/SyncSearchIndexJob.ts +64 -0
  473. package/app/Listener.ts +84 -0
  474. package/app/Listeners/Console.ts +22 -0
  475. package/app/Listeners/README.md +47 -0
  476. package/app/Mail/OrderConfirmation.ts +60 -0
  477. package/app/Mail/SubscriptionConfirmation.ts +41 -0
  478. package/app/Middleware/Abilities.ts +53 -0
  479. package/app/Middleware/Api.ts +26 -0
  480. package/app/Middleware/Auth.ts +59 -0
  481. package/app/Middleware/Can.ts +68 -0
  482. package/app/Middleware/Compress.ts +213 -0
  483. package/app/Middleware/Cors.ts +320 -0
  484. package/app/Middleware/Csrf.ts +224 -0
  485. package/app/Middleware/EnsureEmailIsVerified.ts +28 -0
  486. package/app/Middleware/Env.ts +24 -0
  487. package/app/Middleware/EnvDevelopment.ts +19 -0
  488. package/app/Middleware/EnvLocal.ts +19 -0
  489. package/app/Middleware/EnvNotDevelopment.ts +19 -0
  490. package/app/Middleware/EnvNotLocal.ts +19 -0
  491. package/app/Middleware/EnvNotProduction.ts +19 -0
  492. package/app/Middleware/EnvNotStaging.ts +19 -0
  493. package/app/Middleware/EnvProduction.ts +19 -0
  494. package/app/Middleware/EnvStaging.ts +19 -0
  495. package/app/Middleware/Guest.ts +25 -0
  496. package/app/Middleware/Logger.ts +20 -0
  497. package/app/Middleware/Maintenance.ts +36 -0
  498. package/app/Middleware/Permission.ts +42 -0
  499. package/app/Middleware/README.md +48 -0
  500. package/app/Middleware/Role.ts +42 -0
  501. package/app/Middleware/Signed.ts +31 -0
  502. package/app/Middleware/Team.ts +36 -0
  503. package/app/Middleware/Throttle.ts +96 -0
  504. package/app/Middleware.ts +35 -0
  505. package/app/Models/Activity.ts +94 -0
  506. package/app/Models/Board.ts +103 -0
  507. package/app/Models/BoardColumn.ts +87 -0
  508. package/app/Models/Campaign.ts +239 -0
  509. package/app/Models/CampaignSend.ts +107 -0
  510. package/app/Models/Card.ts +117 -0
  511. package/app/Models/CardComment.ts +68 -0
  512. package/app/Models/Comment.ts +108 -0
  513. package/app/Models/Content/Author.ts +104 -0
  514. package/app/Models/Content/Page.ts +99 -0
  515. package/app/Models/Content/Post.ts +144 -0
  516. package/app/Models/Deployment.ts +116 -0
  517. package/app/Models/EmailList.ts +126 -0
  518. package/app/Models/EmailListSubscriber.ts +91 -0
  519. package/app/Models/Error.ts +70 -0
  520. package/app/Models/FailedJob.ts +62 -0
  521. package/app/Models/Job.ts +63 -0
  522. package/app/Models/Label.ts +66 -0
  523. package/app/Models/Log.ts +110 -0
  524. package/app/Models/Notification.ts +118 -0
  525. package/app/Models/PaymentMethod.ts +98 -0
  526. package/app/Models/PaymentProduct.ts +91 -0
  527. package/app/Models/PaymentTransaction.ts +78 -0
  528. package/app/Models/README.md +31 -0
  529. package/app/Models/Release.ts +89 -0
  530. package/app/Models/Request.ts +114 -0
  531. package/app/Models/SocialPost.ts +136 -0
  532. package/app/Models/Subscriber.ts +89 -0
  533. package/app/Models/SubscriberEmail.ts +55 -0
  534. package/app/Models/Subscription.ts +153 -0
  535. package/app/Models/Tag.ts +82 -0
  536. package/app/Models/Team.ts +72 -0
  537. package/app/Models/User.ts +134 -0
  538. package/app/Models/commerce/Cart.ts +139 -0
  539. package/app/Models/commerce/CartItem.ts +137 -0
  540. package/app/Models/commerce/Category.ts +105 -0
  541. package/app/Models/commerce/Coupon.ts +181 -0
  542. package/app/Models/commerce/Customer.ts +132 -0
  543. package/app/Models/commerce/DeliveryRoute.ts +93 -0
  544. package/app/Models/commerce/DigitalDelivery.ts +105 -0
  545. package/app/Models/commerce/Driver.ts +97 -0
  546. package/app/Models/commerce/GiftCard.ts +191 -0
  547. package/app/Models/commerce/LicenseKey.ts +87 -0
  548. package/app/Models/commerce/LoyaltyPoint.ts +107 -0
  549. package/app/Models/commerce/LoyaltyReward.ts +124 -0
  550. package/app/Models/commerce/Manufacturer.ts +84 -0
  551. package/app/Models/commerce/Order.ts +142 -0
  552. package/app/Models/commerce/OrderItem.ts +51 -0
  553. package/app/Models/commerce/Payment.ts +163 -0
  554. package/app/Models/commerce/PrintDevice.ts +117 -0
  555. package/app/Models/commerce/Product.ts +148 -0
  556. package/app/Models/commerce/ProductUnit.ts +107 -0
  557. package/app/Models/commerce/ProductVariant.ts +106 -0
  558. package/app/Models/commerce/Receipt.ts +128 -0
  559. package/app/Models/commerce/Review.ts +140 -0
  560. package/app/Models/commerce/ShippingMethod.ts +97 -0
  561. package/app/Models/commerce/ShippingRate.ts +74 -0
  562. package/app/Models/commerce/ShippingZone.ts +111 -0
  563. package/app/Models/commerce/TaxRate.ts +114 -0
  564. package/app/Models/commerce/Transaction.ts +126 -0
  565. package/app/Models/commerce/WaitlistProduct.ts +149 -0
  566. package/app/Models/commerce/WaitlistRestaurant.ts +187 -0
  567. package/app/Models/realtime/Websocket.ts +77 -0
  568. package/app/Notifications/README.md +31 -0
  569. package/app/Notifications/Welcome.ts +32 -0
  570. package/app/Policies/PostPolicy.ts +131 -0
  571. package/app/README.md +23 -0
  572. package/app/Routes.ts +47 -0
  573. package/app/Scheduler.ts +28 -0
  574. package/app/Storefront/CartCookie.ts +109 -0
  575. package/package.json +3 -2
@@ -0,0 +1,47 @@
1
+ # What are Listeners
2
+
3
+ Currently, only one specific kind of listener is allowed: `Console.ts`.
4
+
5
+ ## Get Started
6
+
7
+ A simple example of how Console listeners work. _For a closer look, take a peak at the [Console.ts](./Console.ts) file._
8
+
9
+ ```ts
10
+ export default function (cli: CLI) {
11
+ // Listen to the `inspire:three` command
12
+ cli.on('inspire:three', () => {
13
+ console.log('not yet implemented...')
14
+ })
15
+
16
+ // Listen to the default command
17
+ cli.on('inspire:!', () => {
18
+ // Do something
19
+ })
20
+
21
+ // Listen to unknown commands
22
+ cli.on('inspire:*', () => {
23
+ console.error('Invalid command: %s', cli.args.join(' '))
24
+ process.exit(1)
25
+ })
26
+ }
27
+ ```
28
+
29
+ ## 🚜 Contributing
30
+
31
+ Please review the [Contributing Guide](https://github.com/stacksjs/contributing) for details.
32
+
33
+ ## 🏝 Community
34
+
35
+ For help, discussion about best practices, or any other conversation that would benefit from being searchable:
36
+
37
+ [Discussions on GitHub](https://github.com/stacksjs/stacks/discussions)
38
+
39
+ For casual chit-chat with others using this package:
40
+
41
+ [Join the Stacks Discord Server](https://discord.gg/stacksjs)
42
+
43
+ ## 📄 License
44
+
45
+ The MIT License (MIT). Please see [LICENSE](../../LICENSE.md) for more information.
46
+
47
+ Made with 💙
@@ -0,0 +1,60 @@
1
+ import { config } from '@stacksjs/config'
2
+ import { mail, template } from '@stacksjs/email'
3
+
4
+ export interface OrderConfirmationItem {
5
+ name: string
6
+ qty: number
7
+ lineTotal: number
8
+ }
9
+
10
+ export interface OrderConfirmationOptions {
11
+ to: string
12
+ orderId: number | string
13
+ customerName?: string
14
+ items: OrderConfirmationItem[]
15
+ subtotal: number
16
+ shipping: number
17
+ total: number
18
+ shippingAddress?: string
19
+ /** Absolute URL the receipt CTA should link to (e.g. `/orders/123`). */
20
+ orderUrl: string
21
+ }
22
+
23
+ /**
24
+ * Send the post-checkout receipt email.
25
+ *
26
+ * Uses `resources/emails/order-confirmation.stx` for the layout. The
27
+ * template renders the items table, totals, and a "View your order"
28
+ * CTA back to the storefront. Failures bubble up as rejected
29
+ * promises — the calling action should `.catch()` so a mailer
30
+ * outage doesn't fail the order.
31
+ */
32
+ export async function sendOrderConfirmation(options: OrderConfirmationOptions): Promise<void> {
33
+ const appName = config.app.name || 'PetStore'
34
+ const fromAddress = config.email.from?.address || 'hello@stacksjs.com'
35
+
36
+ const { html, text } = await template('order-confirmation', {
37
+ variables: {
38
+ orderId: options.orderId,
39
+ orderUrl: options.orderUrl,
40
+ customerName: options.customerName || 'there',
41
+ items: options.items,
42
+ subtotal: options.subtotal,
43
+ shipping: options.shipping,
44
+ total: options.total,
45
+ shippingAddress: options.shippingAddress || '',
46
+ appName,
47
+ },
48
+ subject: `Your ${appName} order #${options.orderId} is confirmed`,
49
+ })
50
+
51
+ await mail.send({
52
+ to: [options.to],
53
+ from: { name: appName, address: fromAddress },
54
+ subject: `Your ${appName} order #${options.orderId} is confirmed`,
55
+ html,
56
+ text,
57
+ })
58
+ }
59
+
60
+ export default sendOrderConfirmation
@@ -0,0 +1,41 @@
1
+ import { config } from '@stacksjs/config'
2
+ import { mail, template } from '@stacksjs/email'
3
+ import { url } from '@stacksjs/router'
4
+
5
+ export interface SubscriptionConfirmationOptions {
6
+ to: string
7
+ subscriberUuid: string
8
+ }
9
+
10
+ /**
11
+ * Send a subscription confirmation email with an unsubscribe link.
12
+ *
13
+ * Uses the `resources/emails/subscription-confirmation.stx` template.
14
+ */
15
+ export async function sendSubscriptionConfirmation(options: SubscriptionConfirmationOptions): Promise<void> {
16
+ const { to, subscriberUuid } = options
17
+
18
+ const appName = config.app.name || 'Stacks'
19
+ const unsubscribeUrl = url('email.unsubscribe', { token: subscriberUuid })
20
+
21
+ const { html, text } = await template('subscription-confirmation', {
22
+ variables: {
23
+ email: to,
24
+ unsubscribeUrl,
25
+ },
26
+ subject: `Welcome to ${appName}!`,
27
+ })
28
+
29
+ await mail.send({
30
+ to: [to],
31
+ from: {
32
+ name: config.email.from?.name || appName,
33
+ address: config.email.from?.address || 'hello@stacksjs.com',
34
+ },
35
+ subject: `Welcome to ${appName}!`,
36
+ html,
37
+ text,
38
+ })
39
+ }
40
+
41
+ export default sendSubscriptionConfirmation
@@ -0,0 +1,53 @@
1
+ import { HttpError } from '@stacksjs/error-handling'
2
+ import { Middleware } from '@stacksjs/router'
3
+
4
+ /**
5
+ * Token Abilities Middleware
6
+ *
7
+ * This middleware checks if the current token has the required abilities/scopes.
8
+ * Must be used after the 'auth' middleware.
9
+ *
10
+ * Usage:
11
+ * - Add 'abilities:read,write' middleware to routes that require specific abilities
12
+ * - The abilities are passed as a comma-separated string after the colon
13
+ *
14
+ * Example:
15
+ * route.get('/admin', 'AdminAction').middleware('auth').middleware('abilities:admin')
16
+ * route.post('/posts', 'CreatePostAction').middleware('auth').middleware('abilities:posts:create')
17
+ */
18
+ export default new Middleware({
19
+ name: 'abilities',
20
+ priority: 2, // Run after auth middleware
21
+
22
+ async handle(request) {
23
+ // Get the required abilities from middleware parameters
24
+ // This would be passed like 'abilities:read,write'
25
+ const requiredAbilities = request._middlewareParams?.abilities?.split(',') || []
26
+
27
+ if (requiredAbilities.length === 0) {
28
+ // No abilities required, pass through
29
+ return
30
+ }
31
+
32
+ // Get the current access token
33
+ const token = request._currentAccessToken
34
+
35
+ if (!token) {
36
+ throw new HttpError(401, 'Unauthenticated.')
37
+ }
38
+
39
+ const tokenAbilities: string[] = token.abilities || []
40
+
41
+ // Wildcard grants all permissions
42
+ if (tokenAbilities.includes('*')) {
43
+ return
44
+ }
45
+
46
+ // Check if token has ALL required abilities
47
+ for (const ability of requiredAbilities) {
48
+ if (!tokenAbilities.includes(ability.trim())) {
49
+ throw new HttpError(403, `Missing required ability: ${ability.trim()}`)
50
+ }
51
+ }
52
+ },
53
+ })
@@ -0,0 +1,26 @@
1
+ import { HttpError } from '@stacksjs/error-handling'
2
+ import { Middleware } from '@stacksjs/router'
3
+
4
+ /**
5
+ * API Middleware
6
+ *
7
+ * Validates that the request includes a valid API key or meets
8
+ * API-specific requirements (Accept header, rate limiting prefix, etc.).
9
+ *
10
+ * Usage:
11
+ * route.group({ middleware: 'api' }, () => {
12
+ * route.get('/data', 'DataAction')
13
+ * })
14
+ */
15
+ export default new Middleware({
16
+ name: 'api',
17
+ priority: 1,
18
+
19
+ async handle(request) {
20
+ // Ensure the request accepts JSON
21
+ const accept = request.headers.get('accept') || ''
22
+ if (!accept.includes('application/json') && !accept.includes('*/*')) {
23
+ throw new HttpError(406, 'This endpoint only serves JSON responses. Set Accept: application/json.')
24
+ }
25
+ },
26
+ })
@@ -0,0 +1,59 @@
1
+ import { HttpError } from '@stacksjs/error-handling'
2
+ import { Middleware } from '@stacksjs/router'
3
+
4
+ /**
5
+ * Authentication Middleware
6
+ *
7
+ * Validates the bearer token from the request and ensures
8
+ * the user is authenticated before proceeding.
9
+ *
10
+ * Usage:
11
+ * route.get('/dashboard', 'DashboardAction').middleware('auth')
12
+ * route.group({ middleware: 'auth' }, () => { ... })
13
+ */
14
+ function extractBearerToken(request: any): string | null {
15
+ if (typeof request.bearerToken === 'function') {
16
+ const t = request.bearerToken()
17
+ if (t)
18
+ return t
19
+ }
20
+ const authHeader
21
+ = (typeof request.header === 'function' && request.header('authorization'))
22
+ || request.headers?.get?.('authorization')
23
+ || request.headers?.get?.('Authorization')
24
+ if (typeof authHeader === 'string' && authHeader.startsWith('Bearer '))
25
+ return authHeader.substring(7)
26
+ return null
27
+ }
28
+
29
+ export default new Middleware({
30
+ name: 'Auth',
31
+ priority: 1,
32
+
33
+ async handle(request) {
34
+ const { Auth } = await import('@stacksjs/auth')
35
+
36
+ const bearerToken = extractBearerToken(request)
37
+
38
+ if (!bearerToken)
39
+ throw new HttpError(401, 'Unauthorized. No token provided.')
40
+
41
+ const isValid = await Auth.validateToken(bearerToken)
42
+ if (!isValid)
43
+ throw new HttpError(401, 'Unauthorized. Invalid token.')
44
+
45
+ const user = await Auth.getUserFromToken(bearerToken)
46
+ if (user) {
47
+ Auth.setUser(user)
48
+ ;request._authenticatedUser = user
49
+ // Do NOT overwrite `request.user` — `enhanceRequest` declared
50
+ // it as an async function (`user(): Promise<UserModel | undefined>`)
51
+ // and downstream action code reaches for `await request.user()`.
52
+ // Replacing the function with a User object made every caller
53
+ // throw "user is not a function" post-auth. Read from
54
+ // `_authenticatedUser` via `request.user()` instead — the helper
55
+ // prefers the stamped value before falling back to a token
56
+ // lookup. See stacksjs/stacks#1860 M-9.
57
+ }
58
+ },
59
+ })
@@ -0,0 +1,68 @@
1
+ import { AuthorizationException, authorize } from '@stacksjs/auth'
2
+ import { HttpError } from '@stacksjs/error-handling'
3
+ import { Middleware } from '@stacksjs/router'
4
+
5
+ /**
6
+ * Authorization Gate Middleware
7
+ *
8
+ * This middleware checks if the current user is authorized to perform an action
9
+ * using the Gate system. Must be used after the 'auth' middleware.
10
+ *
11
+ * Usage:
12
+ * - Add 'can:ability' middleware to routes that require specific authorization
13
+ * - Add 'can:ability,modelParam' to authorize against a route model
14
+ *
15
+ * Examples:
16
+ * route.get('/settings', 'SettingsAction').middleware('auth').middleware('can:edit-settings')
17
+ * route.put('/posts/:post', 'UpdatePostAction').middleware('auth').middleware('can:update,post')
18
+ * route.delete('/posts/:post', 'DeletePostAction').middleware('auth').middleware('can:delete,post')
19
+ */
20
+ export default new Middleware({
21
+ name: 'can',
22
+ priority: 3, // Run after auth and abilities middleware
23
+
24
+ async handle(request) {
25
+ // Get the ability and optional model parameter from middleware params
26
+ // Format: 'can:ability' or 'can:ability,modelParam'
27
+ const params = request._middlewareParams?.can?.split(',') || []
28
+
29
+ if (params.length === 0) {
30
+ // No ability specified, pass through (should this be an error?)
31
+ return
32
+ }
33
+
34
+ const ability = params[0]?.trim()
35
+ const modelParam = params[1]?.trim()
36
+
37
+ if (!ability) {
38
+ throw new HttpError(500, 'Authorization middleware requires an ability parameter')
39
+ }
40
+
41
+ // Get the authenticated user
42
+ const user = request.user || request._user || null
43
+
44
+ // Prepare arguments for the gate check
45
+ const args: any[] = []
46
+
47
+ // If a model parameter is specified, get it from route params
48
+ if (modelParam) {
49
+ const routeParams = request.params || {}
50
+ const model = routeParams[modelParam]
51
+
52
+ if (model) {
53
+ args.push(model)
54
+ }
55
+ }
56
+
57
+ // Perform the authorization check
58
+ try {
59
+ await authorize(ability, user, ...args)
60
+ }
61
+ catch (error) {
62
+ if (error instanceof AuthorizationException) {
63
+ throw new HttpError(error.status || 403, error.message)
64
+ }
65
+ throw error
66
+ }
67
+ },
68
+ })
@@ -0,0 +1,213 @@
1
+ import { brotliCompressSync, constants as zlibConstants } from 'node:zlib'
2
+ import { Buffer } from 'node:buffer'
3
+ import { Middleware } from '@stacksjs/router'
4
+
5
+ /**
6
+ * Response Compression Middleware
7
+ *
8
+ * Compresses outgoing response bodies with brotli or gzip when the
9
+ * client advertises support via `Accept-Encoding`. The middleware
10
+ * runs at the *end* of the chain — by the time it executes, the
11
+ * action has already produced a response and stored it on the
12
+ * request via `_response`. (We intercept by patching the response
13
+ * after the chain ends — see implementation note below.)
14
+ *
15
+ * IMPORTANT — middleware shape mismatch:
16
+ * The Stacks middleware runner only invokes `handle()` for
17
+ * pre-action gating; it has no post-response hook. To compress
18
+ * the *outgoing* response, this middleware therefore acts as a
19
+ * marker — its real work is implemented as a *response wrapper*
20
+ * that the router applies whenever the `compress` middleware is
21
+ * attached (see Compress.applyToResponse below).
22
+ *
23
+ * In practice, calling code uses the exported `applyCompression()`
24
+ * helper directly:
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * import { applyCompression } from '@stacksjs/middleware/Compress'
29
+ *
30
+ * const response = await action.handle(req)
31
+ * return applyCompression(req, response)
32
+ * ```
33
+ *
34
+ * Compression decisions:
35
+ * - **Skip** if response already has `content-encoding` set.
36
+ * - **Skip** if body smaller than 1 KB — overhead exceeds savings.
37
+ * - **Skip** for already-compressed content types (image/*, video/*,
38
+ * audio/*, application/zip, gzip, octet-stream).
39
+ * - **Skip** SSE / WebSocket upgrades (`text/event-stream`).
40
+ * - **Prefer brotli** when `br` is offered. Brotli typically
41
+ * achieves ~20% better ratios than gzip on HTML/JSON/CSS/JS at
42
+ * comparable CPU cost — well worth the swap when the client
43
+ * supports it.
44
+ * - **Fall back to gzip** for `gzip` clients (universal support).
45
+ *
46
+ * Headers always added when compressed:
47
+ * - `Content-Encoding: br | gzip`
48
+ * - `Vary: Accept-Encoding` (so caches segment by encoding)
49
+ *
50
+ * `Content-Length` is rewritten to the compressed size.
51
+ */
52
+
53
+ /** Body must exceed this threshold (bytes) to warrant compression. */
54
+ const MIN_COMPRESS_BYTES = 1024
55
+
56
+ /**
57
+ * Content-types that are already compressed (or untouchable). Re-running
58
+ * gzip/brotli over them gains nothing and wastes CPU.
59
+ *
60
+ * Pattern matched as `startsWith` against the lowercased content-type
61
+ * (sans parameters). Intentionally conservative — we'd rather miss a
62
+ * compression opportunity than corrupt a binary stream by double-encoding.
63
+ */
64
+ const SKIP_CONTENT_TYPE_PREFIXES = [
65
+ 'image/',
66
+ 'video/',
67
+ 'audio/',
68
+ 'application/zip',
69
+ 'application/gzip',
70
+ 'application/x-gzip',
71
+ 'application/x-bzip2',
72
+ 'application/x-brotli',
73
+ 'application/octet-stream',
74
+ // SSE / streaming pipelines must not be buffered for compression.
75
+ 'text/event-stream',
76
+ ]
77
+
78
+ /** Parse the q-weighted Accept-Encoding header into a preference set. */
79
+ function pickEncoding(acceptEncoding: string | null): 'br' | 'gzip' | null {
80
+ if (!acceptEncoding) return null
81
+ // We don't fully implement q-value parsing — it's overkill for the
82
+ // brotli-vs-gzip choice. We just check for token presence.
83
+ const lc = acceptEncoding.toLowerCase()
84
+ // Brotli first because it ratios better on text — typical 20% smaller
85
+ // than gzip on HTML/JSON. CPU cost per byte is similar at default
86
+ // quality on Node's libbrotli.
87
+ if (lc.includes('br')) return 'br'
88
+ if (lc.includes('gzip')) return 'gzip'
89
+ return null
90
+ }
91
+
92
+ /** Heuristic: is this content type worth compressing? */
93
+ function shouldCompressContentType(contentType: string | null): boolean {
94
+ if (!contentType) return true // unknown → assume text-like
95
+ const ct = (contentType.toLowerCase().split(';')[0] ?? '').trim()
96
+ for (const prefix of SKIP_CONTENT_TYPE_PREFIXES) {
97
+ if (ct.startsWith(prefix)) return false
98
+ }
99
+ return true
100
+ }
101
+
102
+ /**
103
+ * Compress a Response if (a) the client supports an encoding, (b) the
104
+ * body is large enough, and (c) the content type isn't already
105
+ * compressed. Returns the original Response unchanged when any of
106
+ * those conditions don't hold.
107
+ *
108
+ * Buffers the entire body in memory — appropriate for the typical
109
+ * JSON/HTML response sizes we're targeting (KB to single-digit MB).
110
+ * For multi-MB streamed responses, the middleware should be skipped
111
+ * (the SSE / event-stream check above handles the most common case).
112
+ *
113
+ * @example
114
+ * ```ts
115
+ * const response = Response.json({ users: [...] })
116
+ * return await applyCompression(request, response)
117
+ * // → response with `Content-Encoding: br` and a brotli-compressed body
118
+ * ```
119
+ */
120
+ export async function applyCompression(request: Request, response: Response): Promise<Response> {
121
+ // Already encoded — leave it alone. Re-encoding would corrupt the
122
+ // body, and the client already knows what to expect.
123
+ if (response.headers.get('content-encoding')) return response
124
+
125
+ // No body or non-text content streams (SSE, etc.) — skip.
126
+ if (!response.body) return response
127
+
128
+ const contentType = response.headers.get('content-type')
129
+ if (!shouldCompressContentType(contentType)) return response
130
+
131
+ const encoding = pickEncoding(request.headers.get('accept-encoding'))
132
+ if (!encoding) return response
133
+
134
+ // Buffer the body. We need the full payload to compress synchronously
135
+ // (Bun.gzipSync / brotliCompressSync) AND to know the post-compression
136
+ // length for the Content-Length header.
137
+ const bodyBuf = Buffer.from(await response.arrayBuffer())
138
+ if (bodyBuf.byteLength < MIN_COMPRESS_BYTES) {
139
+ // Body too small — re-emit as a fresh Response since we already
140
+ // consumed `response.body` above.
141
+ return new Response(bodyBuf, {
142
+ status: response.status,
143
+ statusText: response.statusText,
144
+ headers: response.headers,
145
+ })
146
+ }
147
+
148
+ let compressed: Buffer
149
+ if (encoding === 'br') {
150
+ // Brotli quality 5 is the sweet spot for dynamic responses:
151
+ // quality 11 (max) is ~10× slower for ~5% smaller output.
152
+ // 5 is also the Express compression-middleware default.
153
+ compressed = brotliCompressSync(bodyBuf, {
154
+ params: {
155
+ [zlibConstants.BROTLI_PARAM_QUALITY]: 5,
156
+ },
157
+ })
158
+ }
159
+ else {
160
+ // Bun.gzipSync is significantly faster than node:zlib.gzipSync
161
+ // for typical response sizes — used here in preference to
162
+ // node:zlib for the gzip path. Brotli has no Bun-native API yet
163
+ // (as of writing) so we use node:zlib for that branch.
164
+ compressed = Buffer.from(Bun.gzipSync(bodyBuf))
165
+ }
166
+
167
+ const newHeaders = new Headers(response.headers)
168
+ newHeaders.set('Content-Encoding', encoding)
169
+ newHeaders.set('Content-Length', String(compressed.byteLength))
170
+ // Caches MUST key on Accept-Encoding once we vary the body by it,
171
+ // otherwise a gzip-only proxy serves a brotli body to a gzip-only
172
+ // client and the response is undecodable.
173
+ const existingVary = newHeaders.get('Vary')
174
+ if (existingVary) {
175
+ if (!/\baccept-encoding\b/i.test(existingVary)) {
176
+ newHeaders.set('Vary', `${existingVary}, Accept-Encoding`)
177
+ }
178
+ }
179
+ else {
180
+ newHeaders.set('Vary', 'Accept-Encoding')
181
+ }
182
+
183
+ return new Response(compressed, {
184
+ status: response.status,
185
+ statusText: response.statusText,
186
+ headers: newHeaders,
187
+ })
188
+ }
189
+
190
+ /**
191
+ * Marker middleware. The router inspects the route middleware list for
192
+ * `compress` and, when present, runs `applyCompression()` on the final
193
+ * response. The middleware's `handle` is intentionally a no-op:
194
+ * compression must run *after* the action, but the standard middleware
195
+ * pipeline runs *before* it.
196
+ *
197
+ * @example
198
+ * ```ts
199
+ * route.get('/api/large.json', 'Actions/LargePayload').middleware('compress')
200
+ * ```
201
+ */
202
+ export default new Middleware({
203
+ name: 'compress',
204
+ // Run last in the pre-action chain so the marker stamp lands close
205
+ // to the action — the post-action wrapper picks it up by name.
206
+ priority: 100,
207
+
208
+ async handle(request) {
209
+ // Stamp the request so the post-response wrapper knows to compress.
210
+ // This is read by the router's response-finalization step.
211
+ ;request._compress = true
212
+ },
213
+ })