digital-tools 2.0.1

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 (452) hide show
  1. package/.turbo/turbo-build.log +5 -0
  2. package/CHANGELOG.md +9 -0
  3. package/README.md +1144 -0
  4. package/dist/define.d.ts +109 -0
  5. package/dist/define.d.ts.map +1 -0
  6. package/dist/define.js +268 -0
  7. package/dist/define.js.map +1 -0
  8. package/dist/entities/advertising.d.ts +79 -0
  9. package/dist/entities/advertising.d.ts.map +1 -0
  10. package/dist/entities/advertising.js +1000 -0
  11. package/dist/entities/advertising.js.map +1 -0
  12. package/dist/entities/ai.d.ts +69 -0
  13. package/dist/entities/ai.d.ts.map +1 -0
  14. package/dist/entities/ai.js +757 -0
  15. package/dist/entities/ai.js.map +1 -0
  16. package/dist/entities/analytics.d.ts +83 -0
  17. package/dist/entities/analytics.d.ts.map +1 -0
  18. package/dist/entities/analytics.js +1589 -0
  19. package/dist/entities/analytics.js.map +1 -0
  20. package/dist/entities/automation.d.ts +61 -0
  21. package/dist/entities/automation.d.ts.map +1 -0
  22. package/dist/entities/automation.js +602 -0
  23. package/dist/entities/automation.js.map +1 -0
  24. package/dist/entities/communication.d.ts +96 -0
  25. package/dist/entities/communication.d.ts.map +1 -0
  26. package/dist/entities/communication.js +1151 -0
  27. package/dist/entities/communication.js.map +1 -0
  28. package/dist/entities/crm.d.ts +91 -0
  29. package/dist/entities/crm.d.ts.map +1 -0
  30. package/dist/entities/crm.js +1387 -0
  31. package/dist/entities/crm.js.map +1 -0
  32. package/dist/entities/design.d.ts +61 -0
  33. package/dist/entities/design.d.ts.map +1 -0
  34. package/dist/entities/design.js +547 -0
  35. package/dist/entities/design.js.map +1 -0
  36. package/dist/entities/development.d.ts +145 -0
  37. package/dist/entities/development.d.ts.map +1 -0
  38. package/dist/entities/development.js +2213 -0
  39. package/dist/entities/development.js.map +1 -0
  40. package/dist/entities/document.d.ts +54 -0
  41. package/dist/entities/document.d.ts.map +1 -0
  42. package/dist/entities/document.js +875 -0
  43. package/dist/entities/document.js.map +1 -0
  44. package/dist/entities/ecommerce.d.ts +93 -0
  45. package/dist/entities/ecommerce.d.ts.map +1 -0
  46. package/dist/entities/ecommerce.js +1430 -0
  47. package/dist/entities/ecommerce.js.map +1 -0
  48. package/dist/entities/experiment.d.ts +89 -0
  49. package/dist/entities/experiment.d.ts.map +1 -0
  50. package/dist/entities/experiment.js +1040 -0
  51. package/dist/entities/experiment.js.map +1 -0
  52. package/dist/entities/finance.d.ts +272 -0
  53. package/dist/entities/finance.d.ts.map +1 -0
  54. package/dist/entities/finance.js +3479 -0
  55. package/dist/entities/finance.js.map +1 -0
  56. package/dist/entities/forms.d.ts +91 -0
  57. package/dist/entities/forms.d.ts.map +1 -0
  58. package/dist/entities/forms.js +1893 -0
  59. package/dist/entities/forms.js.map +1 -0
  60. package/dist/entities/hr.d.ts +62 -0
  61. package/dist/entities/hr.d.ts.map +1 -0
  62. package/dist/entities/hr.js +662 -0
  63. package/dist/entities/hr.js.map +1 -0
  64. package/dist/entities/identity.d.ts +90 -0
  65. package/dist/entities/identity.d.ts.map +1 -0
  66. package/dist/entities/identity.js +998 -0
  67. package/dist/entities/identity.js.map +1 -0
  68. package/dist/entities/index.d.ts +410 -0
  69. package/dist/entities/index.d.ts.map +1 -0
  70. package/dist/entities/index.js +283 -0
  71. package/dist/entities/index.js.map +1 -0
  72. package/dist/entities/infrastructure.d.ts +98 -0
  73. package/dist/entities/infrastructure.d.ts.map +1 -0
  74. package/dist/entities/infrastructure.js +1154 -0
  75. package/dist/entities/infrastructure.js.map +1 -0
  76. package/dist/entities/knowledge.d.ts +98 -0
  77. package/dist/entities/knowledge.d.ts.map +1 -0
  78. package/dist/entities/knowledge.js +1439 -0
  79. package/dist/entities/knowledge.js.map +1 -0
  80. package/dist/entities/marketing.d.ts +82 -0
  81. package/dist/entities/marketing.d.ts.map +1 -0
  82. package/dist/entities/marketing.js +1611 -0
  83. package/dist/entities/marketing.js.map +1 -0
  84. package/dist/entities/media.d.ts +83 -0
  85. package/dist/entities/media.d.ts.map +1 -0
  86. package/dist/entities/media.js +1635 -0
  87. package/dist/entities/media.js.map +1 -0
  88. package/dist/entities/notification.d.ts +76 -0
  89. package/dist/entities/notification.d.ts.map +1 -0
  90. package/dist/entities/notification.js +1200 -0
  91. package/dist/entities/notification.js.map +1 -0
  92. package/dist/entities/presentation.d.ts +61 -0
  93. package/dist/entities/presentation.d.ts.map +1 -0
  94. package/dist/entities/presentation.js +1275 -0
  95. package/dist/entities/presentation.js.map +1 -0
  96. package/dist/entities/productivity.d.ts +92 -0
  97. package/dist/entities/productivity.d.ts.map +1 -0
  98. package/dist/entities/productivity.js +1318 -0
  99. package/dist/entities/productivity.js.map +1 -0
  100. package/dist/entities/project-management.d.ts +89 -0
  101. package/dist/entities/project-management.d.ts.map +1 -0
  102. package/dist/entities/project-management.js +1137 -0
  103. package/dist/entities/project-management.js.map +1 -0
  104. package/dist/entities/recruiting.d.ts +54 -0
  105. package/dist/entities/recruiting.d.ts.map +1 -0
  106. package/dist/entities/recruiting.js +737 -0
  107. package/dist/entities/recruiting.js.map +1 -0
  108. package/dist/entities/shipping.d.ts +52 -0
  109. package/dist/entities/shipping.d.ts.map +1 -0
  110. package/dist/entities/shipping.js +510 -0
  111. package/dist/entities/shipping.js.map +1 -0
  112. package/dist/entities/signature.d.ts +83 -0
  113. package/dist/entities/signature.d.ts.map +1 -0
  114. package/dist/entities/signature.js +1103 -0
  115. package/dist/entities/signature.js.map +1 -0
  116. package/dist/entities/site.d.ts +33 -0
  117. package/dist/entities/site.d.ts.map +1 -0
  118. package/dist/entities/site.js +223 -0
  119. package/dist/entities/site.js.map +1 -0
  120. package/dist/entities/spreadsheet.d.ts +68 -0
  121. package/dist/entities/spreadsheet.d.ts.map +1 -0
  122. package/dist/entities/spreadsheet.js +1342 -0
  123. package/dist/entities/spreadsheet.js.map +1 -0
  124. package/dist/entities/storage.d.ts +74 -0
  125. package/dist/entities/storage.d.ts.map +1 -0
  126. package/dist/entities/storage.js +1199 -0
  127. package/dist/entities/storage.js.map +1 -0
  128. package/dist/entities/support.d.ts +83 -0
  129. package/dist/entities/support.d.ts.map +1 -0
  130. package/dist/entities/support.js +1167 -0
  131. package/dist/entities/support.js.map +1 -0
  132. package/dist/entities/video-conferencing.d.ts +129 -0
  133. package/dist/entities/video-conferencing.d.ts.map +1 -0
  134. package/dist/entities/video-conferencing.js +1751 -0
  135. package/dist/entities/video-conferencing.js.map +1 -0
  136. package/dist/entities/video.d.ts +76 -0
  137. package/dist/entities/video.d.ts.map +1 -0
  138. package/dist/entities/video.js +951 -0
  139. package/dist/entities/video.js.map +1 -0
  140. package/dist/entities.d.ts +147 -0
  141. package/dist/entities.d.ts.map +1 -0
  142. package/dist/entities.js +1664 -0
  143. package/dist/entities.js.map +1 -0
  144. package/dist/index.d.ts +29 -0
  145. package/dist/index.d.ts.map +1 -0
  146. package/dist/index.js +75 -0
  147. package/dist/index.js.map +1 -0
  148. package/dist/providers/analytics/index.d.ts +19 -0
  149. package/dist/providers/analytics/index.d.ts.map +1 -0
  150. package/dist/providers/analytics/index.js +18 -0
  151. package/dist/providers/analytics/index.js.map +1 -0
  152. package/dist/providers/analytics/mixpanel.d.ts +25 -0
  153. package/dist/providers/analytics/mixpanel.d.ts.map +1 -0
  154. package/dist/providers/analytics/mixpanel.js +256 -0
  155. package/dist/providers/analytics/mixpanel.js.map +1 -0
  156. package/dist/providers/calendar/cal-com.d.ts +26 -0
  157. package/dist/providers/calendar/cal-com.d.ts.map +1 -0
  158. package/dist/providers/calendar/cal-com.js +304 -0
  159. package/dist/providers/calendar/cal-com.js.map +1 -0
  160. package/dist/providers/calendar/google-calendar.d.ts +25 -0
  161. package/dist/providers/calendar/google-calendar.d.ts.map +1 -0
  162. package/dist/providers/calendar/google-calendar.js +336 -0
  163. package/dist/providers/calendar/google-calendar.js.map +1 -0
  164. package/dist/providers/calendar/index.d.ts +20 -0
  165. package/dist/providers/calendar/index.d.ts.map +1 -0
  166. package/dist/providers/calendar/index.js +21 -0
  167. package/dist/providers/calendar/index.js.map +1 -0
  168. package/dist/providers/crm/hubspot.d.ts +25 -0
  169. package/dist/providers/crm/hubspot.d.ts.map +1 -0
  170. package/dist/providers/crm/hubspot.js +567 -0
  171. package/dist/providers/crm/hubspot.js.map +1 -0
  172. package/dist/providers/crm/index.d.ts +19 -0
  173. package/dist/providers/crm/index.d.ts.map +1 -0
  174. package/dist/providers/crm/index.js +18 -0
  175. package/dist/providers/crm/index.js.map +1 -0
  176. package/dist/providers/development/github.d.ts +25 -0
  177. package/dist/providers/development/github.d.ts.map +1 -0
  178. package/dist/providers/development/github.js +473 -0
  179. package/dist/providers/development/github.js.map +1 -0
  180. package/dist/providers/development/index.d.ts +19 -0
  181. package/dist/providers/development/index.d.ts.map +1 -0
  182. package/dist/providers/development/index.js +18 -0
  183. package/dist/providers/development/index.js.map +1 -0
  184. package/dist/providers/ecommerce/index.d.ts +19 -0
  185. package/dist/providers/ecommerce/index.d.ts.map +1 -0
  186. package/dist/providers/ecommerce/index.js +18 -0
  187. package/dist/providers/ecommerce/index.js.map +1 -0
  188. package/dist/providers/ecommerce/shopify.d.ts +25 -0
  189. package/dist/providers/ecommerce/shopify.d.ts.map +1 -0
  190. package/dist/providers/ecommerce/shopify.js +379 -0
  191. package/dist/providers/ecommerce/shopify.js.map +1 -0
  192. package/dist/providers/email/index.d.ts +20 -0
  193. package/dist/providers/email/index.d.ts.map +1 -0
  194. package/dist/providers/email/index.js +21 -0
  195. package/dist/providers/email/index.js.map +1 -0
  196. package/dist/providers/email/resend.d.ts +25 -0
  197. package/dist/providers/email/resend.d.ts.map +1 -0
  198. package/dist/providers/email/resend.js +259 -0
  199. package/dist/providers/email/resend.js.map +1 -0
  200. package/dist/providers/email/sendgrid.d.ts +25 -0
  201. package/dist/providers/email/sendgrid.d.ts.map +1 -0
  202. package/dist/providers/email/sendgrid.js +162 -0
  203. package/dist/providers/email/sendgrid.js.map +1 -0
  204. package/dist/providers/finance/index.d.ts +19 -0
  205. package/dist/providers/finance/index.d.ts.map +1 -0
  206. package/dist/providers/finance/index.js +18 -0
  207. package/dist/providers/finance/index.js.map +1 -0
  208. package/dist/providers/finance/stripe.d.ts +25 -0
  209. package/dist/providers/finance/stripe.d.ts.map +1 -0
  210. package/dist/providers/finance/stripe.js +550 -0
  211. package/dist/providers/finance/stripe.js.map +1 -0
  212. package/dist/providers/forms/index.d.ts +19 -0
  213. package/dist/providers/forms/index.d.ts.map +1 -0
  214. package/dist/providers/forms/index.js +18 -0
  215. package/dist/providers/forms/index.js.map +1 -0
  216. package/dist/providers/forms/typeform.d.ts +25 -0
  217. package/dist/providers/forms/typeform.d.ts.map +1 -0
  218. package/dist/providers/forms/typeform.js +501 -0
  219. package/dist/providers/forms/typeform.js.map +1 -0
  220. package/dist/providers/index.d.ts +56 -0
  221. package/dist/providers/index.d.ts.map +1 -0
  222. package/dist/providers/index.js +124 -0
  223. package/dist/providers/index.js.map +1 -0
  224. package/dist/providers/knowledge/index.d.ts +19 -0
  225. package/dist/providers/knowledge/index.d.ts.map +1 -0
  226. package/dist/providers/knowledge/index.js +18 -0
  227. package/dist/providers/knowledge/index.js.map +1 -0
  228. package/dist/providers/knowledge/notion.d.ts +25 -0
  229. package/dist/providers/knowledge/notion.d.ts.map +1 -0
  230. package/dist/providers/knowledge/notion.js +390 -0
  231. package/dist/providers/knowledge/notion.js.map +1 -0
  232. package/dist/providers/marketing/index.d.ts +19 -0
  233. package/dist/providers/marketing/index.d.ts.map +1 -0
  234. package/dist/providers/marketing/index.js +18 -0
  235. package/dist/providers/marketing/index.js.map +1 -0
  236. package/dist/providers/marketing/mailchimp.d.ts +25 -0
  237. package/dist/providers/marketing/mailchimp.d.ts.map +1 -0
  238. package/dist/providers/marketing/mailchimp.js +444 -0
  239. package/dist/providers/marketing/mailchimp.js.map +1 -0
  240. package/dist/providers/media/cloudinary.d.ts +25 -0
  241. package/dist/providers/media/cloudinary.d.ts.map +1 -0
  242. package/dist/providers/media/cloudinary.js +319 -0
  243. package/dist/providers/media/cloudinary.js.map +1 -0
  244. package/dist/providers/media/index.d.ts +19 -0
  245. package/dist/providers/media/index.d.ts.map +1 -0
  246. package/dist/providers/media/index.js +18 -0
  247. package/dist/providers/media/index.js.map +1 -0
  248. package/dist/providers/messaging/index.d.ts +24 -0
  249. package/dist/providers/messaging/index.d.ts.map +1 -0
  250. package/dist/providers/messaging/index.js +21 -0
  251. package/dist/providers/messaging/index.js.map +1 -0
  252. package/dist/providers/messaging/slack.d.ts +25 -0
  253. package/dist/providers/messaging/slack.d.ts.map +1 -0
  254. package/dist/providers/messaging/slack.js +394 -0
  255. package/dist/providers/messaging/slack.js.map +1 -0
  256. package/dist/providers/messaging/twilio-sms.d.ts +25 -0
  257. package/dist/providers/messaging/twilio-sms.d.ts.map +1 -0
  258. package/dist/providers/messaging/twilio-sms.js +250 -0
  259. package/dist/providers/messaging/twilio-sms.js.map +1 -0
  260. package/dist/providers/project-management/index.d.ts +19 -0
  261. package/dist/providers/project-management/index.d.ts.map +1 -0
  262. package/dist/providers/project-management/index.js +18 -0
  263. package/dist/providers/project-management/index.js.map +1 -0
  264. package/dist/providers/project-management/linear.d.ts +25 -0
  265. package/dist/providers/project-management/linear.d.ts.map +1 -0
  266. package/dist/providers/project-management/linear.js +576 -0
  267. package/dist/providers/project-management/linear.js.map +1 -0
  268. package/dist/providers/registry.d.ts +41 -0
  269. package/dist/providers/registry.d.ts.map +1 -0
  270. package/dist/providers/registry.js +87 -0
  271. package/dist/providers/registry.js.map +1 -0
  272. package/dist/providers/spreadsheet/google-sheets.d.ts +25 -0
  273. package/dist/providers/spreadsheet/google-sheets.d.ts.map +1 -0
  274. package/dist/providers/spreadsheet/google-sheets.js +376 -0
  275. package/dist/providers/spreadsheet/google-sheets.js.map +1 -0
  276. package/dist/providers/spreadsheet/index.d.ts +20 -0
  277. package/dist/providers/spreadsheet/index.d.ts.map +1 -0
  278. package/dist/providers/spreadsheet/index.js +21 -0
  279. package/dist/providers/spreadsheet/index.js.map +1 -0
  280. package/dist/providers/spreadsheet/xlsx.d.ts +26 -0
  281. package/dist/providers/spreadsheet/xlsx.d.ts.map +1 -0
  282. package/dist/providers/spreadsheet/xlsx.js +424 -0
  283. package/dist/providers/spreadsheet/xlsx.js.map +1 -0
  284. package/dist/providers/storage/index.d.ts +30 -0
  285. package/dist/providers/storage/index.d.ts.map +1 -0
  286. package/dist/providers/storage/index.js +25 -0
  287. package/dist/providers/storage/index.js.map +1 -0
  288. package/dist/providers/storage/s3.d.ts +25 -0
  289. package/dist/providers/storage/s3.d.ts.map +1 -0
  290. package/dist/providers/storage/s3.js +420 -0
  291. package/dist/providers/storage/s3.js.map +1 -0
  292. package/dist/providers/support/index.d.ts +19 -0
  293. package/dist/providers/support/index.d.ts.map +1 -0
  294. package/dist/providers/support/index.js +18 -0
  295. package/dist/providers/support/index.js.map +1 -0
  296. package/dist/providers/support/zendesk.d.ts +25 -0
  297. package/dist/providers/support/zendesk.d.ts.map +1 -0
  298. package/dist/providers/support/zendesk.js +374 -0
  299. package/dist/providers/support/zendesk.js.map +1 -0
  300. package/dist/providers/tasks/index.d.ts +19 -0
  301. package/dist/providers/tasks/index.d.ts.map +1 -0
  302. package/dist/providers/tasks/index.js +18 -0
  303. package/dist/providers/tasks/index.js.map +1 -0
  304. package/dist/providers/tasks/todoist.d.ts +25 -0
  305. package/dist/providers/tasks/todoist.d.ts.map +1 -0
  306. package/dist/providers/tasks/todoist.js +287 -0
  307. package/dist/providers/tasks/todoist.js.map +1 -0
  308. package/dist/providers/types.d.ts +1753 -0
  309. package/dist/providers/types.d.ts.map +1 -0
  310. package/dist/providers/types.js +10 -0
  311. package/dist/providers/types.js.map +1 -0
  312. package/dist/providers/video-conferencing/google-meet.d.ts +26 -0
  313. package/dist/providers/video-conferencing/google-meet.d.ts.map +1 -0
  314. package/dist/providers/video-conferencing/google-meet.js +287 -0
  315. package/dist/providers/video-conferencing/google-meet.js.map +1 -0
  316. package/dist/providers/video-conferencing/index.d.ts +22 -0
  317. package/dist/providers/video-conferencing/index.d.ts.map +1 -0
  318. package/dist/providers/video-conferencing/index.js +32 -0
  319. package/dist/providers/video-conferencing/index.js.map +1 -0
  320. package/dist/providers/video-conferencing/jitsi.d.ts +26 -0
  321. package/dist/providers/video-conferencing/jitsi.d.ts.map +1 -0
  322. package/dist/providers/video-conferencing/jitsi.js +255 -0
  323. package/dist/providers/video-conferencing/jitsi.js.map +1 -0
  324. package/dist/providers/video-conferencing/teams.d.ts +26 -0
  325. package/dist/providers/video-conferencing/teams.d.ts.map +1 -0
  326. package/dist/providers/video-conferencing/teams.js +271 -0
  327. package/dist/providers/video-conferencing/teams.js.map +1 -0
  328. package/dist/providers/video-conferencing/zoom.d.ts +25 -0
  329. package/dist/providers/video-conferencing/zoom.d.ts.map +1 -0
  330. package/dist/providers/video-conferencing/zoom.js +333 -0
  331. package/dist/providers/video-conferencing/zoom.js.map +1 -0
  332. package/dist/providers/voice/vapi.d.ts +27 -0
  333. package/dist/providers/voice/vapi.d.ts.map +1 -0
  334. package/dist/providers/voice/vapi.js +440 -0
  335. package/dist/providers/voice/vapi.js.map +1 -0
  336. package/dist/registry.d.ts +38 -0
  337. package/dist/registry.d.ts.map +1 -0
  338. package/dist/registry.js +129 -0
  339. package/dist/registry.js.map +1 -0
  340. package/dist/tools/communication.d.ts +94 -0
  341. package/dist/tools/communication.d.ts.map +1 -0
  342. package/dist/tools/communication.js +185 -0
  343. package/dist/tools/communication.js.map +1 -0
  344. package/dist/tools/data.d.ts +61 -0
  345. package/dist/tools/data.d.ts.map +1 -0
  346. package/dist/tools/data.js +206 -0
  347. package/dist/tools/data.js.map +1 -0
  348. package/dist/tools/index.d.ts +12 -0
  349. package/dist/tools/index.d.ts.map +1 -0
  350. package/dist/tools/index.js +12 -0
  351. package/dist/tools/index.js.map +1 -0
  352. package/dist/tools/web.d.ts +45 -0
  353. package/dist/tools/web.d.ts.map +1 -0
  354. package/dist/tools/web.js +138 -0
  355. package/dist/tools/web.js.map +1 -0
  356. package/dist/types.d.ts +330 -0
  357. package/dist/types.d.ts.map +1 -0
  358. package/dist/types.js +11 -0
  359. package/dist/types.js.map +1 -0
  360. package/package.json +45 -0
  361. package/src/define.ts +321 -0
  362. package/src/entities/advertising.ts +1086 -0
  363. package/src/entities/ai.ts +835 -0
  364. package/src/entities/analytics.ts +1690 -0
  365. package/src/entities/automation.ts +669 -0
  366. package/src/entities/communication.ts +1255 -0
  367. package/src/entities/crm.ts +1481 -0
  368. package/src/entities/design.ts +606 -0
  369. package/src/entities/development.ts +2392 -0
  370. package/src/entities/document.ts +930 -0
  371. package/src/entities/ecommerce.ts +1539 -0
  372. package/src/entities/experiment.ts +1139 -0
  373. package/src/entities/finance.ts +3907 -0
  374. package/src/entities/forms.ts +2021 -0
  375. package/src/entities/hr.ts +725 -0
  376. package/src/entities/identity.ts +1093 -0
  377. package/src/entities/index.ts +731 -0
  378. package/src/entities/infrastructure.ts +1254 -0
  379. package/src/entities/knowledge.ts +1547 -0
  380. package/src/entities/marketing.ts +1718 -0
  381. package/src/entities/media.ts +1747 -0
  382. package/src/entities/notification.ts +1260 -0
  383. package/src/entities/presentation.ts +1360 -0
  384. package/src/entities/productivity.ts +1411 -0
  385. package/src/entities/project-management.ts +1222 -0
  386. package/src/entities/recruiting.ts +797 -0
  387. package/src/entities/shipping.ts +566 -0
  388. package/src/entities/signature.ts +1204 -0
  389. package/src/entities/site.ts +244 -0
  390. package/src/entities/spreadsheet.ts +1434 -0
  391. package/src/entities/storage.ts +1290 -0
  392. package/src/entities/support.ts +1267 -0
  393. package/src/entities/video-conferencing.ts +1874 -0
  394. package/src/entities/video.ts +1035 -0
  395. package/src/entities.ts +1795 -0
  396. package/src/index.ts +176 -0
  397. package/src/providers/analytics/index.ts +21 -0
  398. package/src/providers/analytics/mixpanel.ts +311 -0
  399. package/src/providers/calendar/cal-com.ts +435 -0
  400. package/src/providers/calendar/google-calendar.ts +412 -0
  401. package/src/providers/calendar/index.ts +24 -0
  402. package/src/providers/crm/hubspot.ts +667 -0
  403. package/src/providers/crm/index.ts +21 -0
  404. package/src/providers/development/github.ts +608 -0
  405. package/src/providers/development/index.ts +21 -0
  406. package/src/providers/ecommerce/index.ts +21 -0
  407. package/src/providers/ecommerce/shopify.ts +451 -0
  408. package/src/providers/email/index.ts +24 -0
  409. package/src/providers/email/resend.ts +301 -0
  410. package/src/providers/email/sendgrid.ts +196 -0
  411. package/src/providers/finance/index.ts +21 -0
  412. package/src/providers/finance/stripe.ts +665 -0
  413. package/src/providers/forms/index.ts +21 -0
  414. package/src/providers/forms/typeform.ts +598 -0
  415. package/src/providers/index.ts +281 -0
  416. package/src/providers/knowledge/index.ts +21 -0
  417. package/src/providers/knowledge/notion.ts +497 -0
  418. package/src/providers/marketing/index.ts +21 -0
  419. package/src/providers/marketing/mailchimp.ts +656 -0
  420. package/src/providers/media/cloudinary.ts +373 -0
  421. package/src/providers/media/index.ts +21 -0
  422. package/src/providers/messaging/index.ts +24 -0
  423. package/src/providers/messaging/slack.ts +487 -0
  424. package/src/providers/messaging/twilio-sms.ts +301 -0
  425. package/src/providers/project-management/index.ts +21 -0
  426. package/src/providers/project-management/linear.ts +693 -0
  427. package/src/providers/registry.ts +119 -0
  428. package/src/providers/spreadsheet/google-sheets.ts +464 -0
  429. package/src/providers/spreadsheet/index.ts +24 -0
  430. package/src/providers/spreadsheet/xlsx.ts +542 -0
  431. package/src/providers/storage/index.ts +35 -0
  432. package/src/providers/storage/s3.ts +513 -0
  433. package/src/providers/support/index.ts +21 -0
  434. package/src/providers/support/zendesk.ts +417 -0
  435. package/src/providers/tasks/index.ts +21 -0
  436. package/src/providers/tasks/todoist.ts +407 -0
  437. package/src/providers/types.ts +2113 -0
  438. package/src/providers/video-conferencing/google-meet.ts +412 -0
  439. package/src/providers/video-conferencing/index.ts +35 -0
  440. package/src/providers/video-conferencing/jitsi.ts +324 -0
  441. package/src/providers/video-conferencing/teams.ts +408 -0
  442. package/src/providers/video-conferencing/zoom.ts +451 -0
  443. package/src/registry.ts +172 -0
  444. package/src/tools/communication.ts +256 -0
  445. package/src/tools/data.ts +236 -0
  446. package/src/tools/index.ts +12 -0
  447. package/src/tools/web.ts +161 -0
  448. package/src/types.ts +539 -0
  449. package/test/define.test.ts +367 -0
  450. package/test/registry.test.ts +444 -0
  451. package/test/tools.test.ts +453 -0
  452. package/tsconfig.json +20 -0
@@ -0,0 +1,1539 @@
1
+ /**
2
+ * E-Commerce Entity Types (Nouns)
3
+ *
4
+ * Semantic type definitions for e-commerce digital tools that can be used by
5
+ * both remote human workers AND AI agents. Each entity defines:
6
+ * - Properties: The data fields
7
+ * - Actions: Operations that can be performed (Verbs)
8
+ * - Events: State changes that occur
9
+ *
10
+ * @packageDocumentation
11
+ */
12
+
13
+ import type { Noun, NounProperty, NounRelationship, Verb } from 'ai-database'
14
+
15
+ // =============================================================================
16
+ // Product
17
+ // =============================================================================
18
+
19
+ /**
20
+ * Product entity
21
+ *
22
+ * Represents a product that can be sold in an e-commerce store
23
+ */
24
+ export const Product: Noun = {
25
+ singular: 'product',
26
+ plural: 'products',
27
+ description: 'A product that can be sold in an e-commerce store',
28
+
29
+ properties: {
30
+ // Identity
31
+ sku: {
32
+ type: 'string',
33
+ description: 'Stock Keeping Unit - unique product identifier',
34
+ },
35
+ name: {
36
+ type: 'string',
37
+ description: 'Product name',
38
+ },
39
+ slug: {
40
+ type: 'string',
41
+ optional: true,
42
+ description: 'URL-friendly version of the product name',
43
+ },
44
+
45
+ // Content
46
+ description: {
47
+ type: 'string',
48
+ optional: true,
49
+ description: 'Product description',
50
+ },
51
+ shortDescription: {
52
+ type: 'string',
53
+ optional: true,
54
+ description: 'Brief product summary',
55
+ },
56
+ features: {
57
+ type: 'string',
58
+ array: true,
59
+ optional: true,
60
+ description: 'List of product features',
61
+ },
62
+ specifications: {
63
+ type: 'json',
64
+ optional: true,
65
+ description: 'Technical specifications and attributes',
66
+ },
67
+
68
+ // Pricing
69
+ price: {
70
+ type: 'number',
71
+ description: 'Base price of the product',
72
+ },
73
+ compareAtPrice: {
74
+ type: 'number',
75
+ optional: true,
76
+ description: 'Original price for comparison (for showing discounts)',
77
+ },
78
+ cost: {
79
+ type: 'number',
80
+ optional: true,
81
+ description: 'Cost of goods (for internal use)',
82
+ },
83
+ currency: {
84
+ type: 'string',
85
+ description: 'Currency code (USD, EUR, etc.)',
86
+ examples: ['USD', 'EUR', 'GBP', 'CAD'],
87
+ },
88
+
89
+ // Media
90
+ images: {
91
+ type: 'url',
92
+ array: true,
93
+ optional: true,
94
+ description: 'Product image URLs',
95
+ },
96
+ featuredImage: {
97
+ type: 'url',
98
+ optional: true,
99
+ description: 'Primary product image URL',
100
+ },
101
+ videos: {
102
+ type: 'url',
103
+ array: true,
104
+ optional: true,
105
+ description: 'Product video URLs',
106
+ },
107
+
108
+ // Categorization
109
+ category: {
110
+ type: 'string',
111
+ optional: true,
112
+ description: 'Product category',
113
+ },
114
+ tags: {
115
+ type: 'string',
116
+ array: true,
117
+ optional: true,
118
+ description: 'Tags for organization and search',
119
+ },
120
+ brand: {
121
+ type: 'string',
122
+ optional: true,
123
+ description: 'Product brand or manufacturer',
124
+ },
125
+
126
+ // Inventory
127
+ trackInventory: {
128
+ type: 'boolean',
129
+ optional: true,
130
+ description: 'Whether to track inventory for this product',
131
+ },
132
+ inventoryQuantity: {
133
+ type: 'number',
134
+ optional: true,
135
+ description: 'Available inventory quantity',
136
+ },
137
+ lowStockThreshold: {
138
+ type: 'number',
139
+ optional: true,
140
+ description: 'Quantity at which low stock warning triggers',
141
+ },
142
+
143
+ // Variants
144
+ hasVariants: {
145
+ type: 'boolean',
146
+ optional: true,
147
+ description: 'Whether product has variants (size, color, etc.)',
148
+ },
149
+ variantOptions: {
150
+ type: 'json',
151
+ optional: true,
152
+ description: 'Available variant options (e.g., sizes, colors)',
153
+ },
154
+
155
+ // Status
156
+ status: {
157
+ type: 'string',
158
+ description: 'Product status: draft, active, archived',
159
+ examples: ['draft', 'active', 'archived'],
160
+ },
161
+ published: {
162
+ type: 'boolean',
163
+ optional: true,
164
+ description: 'Whether the product is publicly visible',
165
+ },
166
+ publishedAt: {
167
+ type: 'datetime',
168
+ optional: true,
169
+ description: 'When the product was published',
170
+ },
171
+
172
+ // Shipping
173
+ weight: {
174
+ type: 'number',
175
+ optional: true,
176
+ description: 'Product weight for shipping',
177
+ },
178
+ weightUnit: {
179
+ type: 'string',
180
+ optional: true,
181
+ description: 'Weight unit: lb, kg, oz, g',
182
+ examples: ['lb', 'kg', 'oz', 'g'],
183
+ },
184
+ dimensions: {
185
+ type: 'json',
186
+ optional: true,
187
+ description: 'Product dimensions (length, width, height)',
188
+ },
189
+ requiresShipping: {
190
+ type: 'boolean',
191
+ optional: true,
192
+ description: 'Whether product requires physical shipping',
193
+ },
194
+
195
+ // SEO
196
+ metaTitle: {
197
+ type: 'string',
198
+ optional: true,
199
+ description: 'SEO meta title',
200
+ },
201
+ metaDescription: {
202
+ type: 'string',
203
+ optional: true,
204
+ description: 'SEO meta description',
205
+ },
206
+
207
+ // Metrics
208
+ viewCount: {
209
+ type: 'number',
210
+ optional: true,
211
+ description: 'Number of times product has been viewed',
212
+ },
213
+ salesCount: {
214
+ type: 'number',
215
+ optional: true,
216
+ description: 'Total number of units sold',
217
+ },
218
+ averageRating: {
219
+ type: 'number',
220
+ optional: true,
221
+ description: 'Average customer rating (e.g., 4.5)',
222
+ },
223
+ reviewCount: {
224
+ type: 'number',
225
+ optional: true,
226
+ description: 'Number of customer reviews',
227
+ },
228
+ },
229
+
230
+ relationships: {
231
+ variants: {
232
+ type: 'ProductVariant[]',
233
+ backref: 'product',
234
+ description: 'Product variants (different sizes, colors, etc.)',
235
+ },
236
+ reviews: {
237
+ type: 'Review[]',
238
+ backref: 'product',
239
+ description: 'Customer reviews for this product',
240
+ },
241
+ inventory: {
242
+ type: 'Inventory',
243
+ backref: 'product',
244
+ description: 'Inventory tracking information',
245
+ },
246
+ orderItems: {
247
+ type: 'OrderItem[]',
248
+ backref: 'product',
249
+ description: 'Order items containing this product',
250
+ },
251
+ },
252
+
253
+ actions: [
254
+ 'create',
255
+ 'update',
256
+ 'publish',
257
+ 'unpublish',
258
+ 'archive',
259
+ 'delete',
260
+ 'duplicate',
261
+ 'addVariant',
262
+ 'removeVariant',
263
+ 'updatePrice',
264
+ 'updateInventory',
265
+ 'addImage',
266
+ 'removeImage',
267
+ 'addToCart',
268
+ 'addToWishlist',
269
+ 'view',
270
+ 'review',
271
+ ],
272
+
273
+ events: [
274
+ 'created',
275
+ 'updated',
276
+ 'published',
277
+ 'unpublished',
278
+ 'archived',
279
+ 'deleted',
280
+ 'duplicated',
281
+ 'variantAdded',
282
+ 'variantRemoved',
283
+ 'priceChanged',
284
+ 'inventoryUpdated',
285
+ 'imageAdded',
286
+ 'imageRemoved',
287
+ 'viewed',
288
+ 'addedToCart',
289
+ 'addedToWishlist',
290
+ 'purchased',
291
+ 'reviewed',
292
+ 'outOfStock',
293
+ 'lowStock',
294
+ ],
295
+ }
296
+
297
+ /**
298
+ * Product variant entity
299
+ *
300
+ * Represents a variant of a product (e.g., size, color)
301
+ */
302
+ export const ProductVariant: Noun = {
303
+ singular: 'product variant',
304
+ plural: 'product variants',
305
+ description: 'A variant of a product with different options (size, color, etc.)',
306
+
307
+ properties: {
308
+ // Identity
309
+ sku: {
310
+ type: 'string',
311
+ description: 'Unique SKU for this variant',
312
+ },
313
+ title: {
314
+ type: 'string',
315
+ description: 'Variant title (e.g., "Large / Blue")',
316
+ },
317
+
318
+ // Options
319
+ option1: {
320
+ type: 'string',
321
+ optional: true,
322
+ description: 'First option value (e.g., "Large")',
323
+ },
324
+ option2: {
325
+ type: 'string',
326
+ optional: true,
327
+ description: 'Second option value (e.g., "Blue")',
328
+ },
329
+ option3: {
330
+ type: 'string',
331
+ optional: true,
332
+ description: 'Third option value',
333
+ },
334
+
335
+ // Pricing
336
+ price: {
337
+ type: 'number',
338
+ description: 'Variant price (overrides product price)',
339
+ },
340
+ compareAtPrice: {
341
+ type: 'number',
342
+ optional: true,
343
+ description: 'Original price for comparison',
344
+ },
345
+ cost: {
346
+ type: 'number',
347
+ optional: true,
348
+ description: 'Cost of goods for this variant',
349
+ },
350
+
351
+ // Inventory
352
+ inventoryQuantity: {
353
+ type: 'number',
354
+ description: 'Available inventory quantity',
355
+ },
356
+ inventoryPolicy: {
357
+ type: 'string',
358
+ optional: true,
359
+ description: 'How to handle out-of-stock: deny, continue',
360
+ examples: ['deny', 'continue'],
361
+ },
362
+
363
+ // Media
364
+ image: {
365
+ type: 'url',
366
+ optional: true,
367
+ description: 'Variant-specific image URL',
368
+ },
369
+ position: {
370
+ type: 'number',
371
+ optional: true,
372
+ description: 'Display position/order',
373
+ },
374
+
375
+ // Physical
376
+ weight: {
377
+ type: 'number',
378
+ optional: true,
379
+ description: 'Variant weight (overrides product weight)',
380
+ },
381
+ barcode: {
382
+ type: 'string',
383
+ optional: true,
384
+ description: 'Barcode/UPC for this variant',
385
+ },
386
+
387
+ // Status
388
+ available: {
389
+ type: 'boolean',
390
+ description: 'Whether variant is available for purchase',
391
+ },
392
+ },
393
+
394
+ relationships: {
395
+ product: {
396
+ type: 'Product',
397
+ backref: 'variants',
398
+ description: 'Parent product',
399
+ },
400
+ inventory: {
401
+ type: 'Inventory',
402
+ backref: 'variant',
403
+ description: 'Inventory tracking for this variant',
404
+ },
405
+ orderItems: {
406
+ type: 'OrderItem[]',
407
+ backref: 'variant',
408
+ description: 'Order items for this variant',
409
+ },
410
+ },
411
+
412
+ actions: [
413
+ 'create',
414
+ 'update',
415
+ 'delete',
416
+ 'updatePrice',
417
+ 'updateInventory',
418
+ 'enable',
419
+ 'disable',
420
+ 'addToCart',
421
+ ],
422
+
423
+ events: [
424
+ 'created',
425
+ 'updated',
426
+ 'deleted',
427
+ 'priceChanged',
428
+ 'inventoryUpdated',
429
+ 'enabled',
430
+ 'disabled',
431
+ 'purchased',
432
+ 'outOfStock',
433
+ 'restocked',
434
+ ],
435
+ }
436
+
437
+ // =============================================================================
438
+ // Order
439
+ // =============================================================================
440
+
441
+ /**
442
+ * Order entity
443
+ *
444
+ * Represents a customer order
445
+ */
446
+ export const Order: Noun = {
447
+ singular: 'order',
448
+ plural: 'orders',
449
+ description: 'A customer order containing one or more products',
450
+
451
+ properties: {
452
+ // Identity
453
+ orderNumber: {
454
+ type: 'string',
455
+ description: 'Unique order number (human-readable)',
456
+ },
457
+
458
+ // Status
459
+ status: {
460
+ type: 'string',
461
+ description: 'Order status: pending, confirmed, processing, shipped, delivered, cancelled, refunded',
462
+ examples: ['pending', 'confirmed', 'processing', 'shipped', 'delivered', 'cancelled', 'refunded'],
463
+ },
464
+ fulfillmentStatus: {
465
+ type: 'string',
466
+ optional: true,
467
+ description: 'Fulfillment status: unfulfilled, partial, fulfilled',
468
+ examples: ['unfulfilled', 'partial', 'fulfilled'],
469
+ },
470
+ paymentStatus: {
471
+ type: 'string',
472
+ description: 'Payment status: pending, paid, partial, refunded, failed',
473
+ examples: ['pending', 'paid', 'partial', 'refunded', 'failed'],
474
+ },
475
+
476
+ // Amounts
477
+ subtotal: {
478
+ type: 'number',
479
+ description: 'Subtotal before tax and shipping',
480
+ },
481
+ shippingCost: {
482
+ type: 'number',
483
+ optional: true,
484
+ description: 'Shipping cost',
485
+ },
486
+ taxAmount: {
487
+ type: 'number',
488
+ optional: true,
489
+ description: 'Total tax amount',
490
+ },
491
+ discountAmount: {
492
+ type: 'number',
493
+ optional: true,
494
+ description: 'Total discount amount applied',
495
+ },
496
+ total: {
497
+ type: 'number',
498
+ description: 'Total amount charged',
499
+ },
500
+ currency: {
501
+ type: 'string',
502
+ description: 'Currency code',
503
+ examples: ['USD', 'EUR', 'GBP', 'CAD'],
504
+ },
505
+
506
+ // Shipping
507
+ shippingMethod: {
508
+ type: 'string',
509
+ optional: true,
510
+ description: 'Selected shipping method',
511
+ },
512
+ shippingAddress: {
513
+ type: 'json',
514
+ description: 'Shipping address details',
515
+ },
516
+ billingAddress: {
517
+ type: 'json',
518
+ optional: true,
519
+ description: 'Billing address details',
520
+ },
521
+ trackingNumber: {
522
+ type: 'string',
523
+ optional: true,
524
+ description: 'Shipping tracking number',
525
+ },
526
+ trackingUrl: {
527
+ type: 'url',
528
+ optional: true,
529
+ description: 'URL to track shipment',
530
+ },
531
+
532
+ // Payment
533
+ paymentMethod: {
534
+ type: 'string',
535
+ optional: true,
536
+ description: 'Payment method used: card, paypal, bank_transfer, etc.',
537
+ examples: ['card', 'paypal', 'bank_transfer', 'apple_pay', 'google_pay'],
538
+ },
539
+ paymentReference: {
540
+ type: 'string',
541
+ optional: true,
542
+ description: 'Payment gateway transaction reference',
543
+ },
544
+
545
+ // Customer
546
+ customerEmail: {
547
+ type: 'string',
548
+ description: 'Customer email address',
549
+ },
550
+ customerPhone: {
551
+ type: 'string',
552
+ optional: true,
553
+ description: 'Customer phone number',
554
+ },
555
+
556
+ // Discounts
557
+ couponCode: {
558
+ type: 'string',
559
+ optional: true,
560
+ description: 'Applied coupon code',
561
+ },
562
+
563
+ // Metadata
564
+ notes: {
565
+ type: 'string',
566
+ optional: true,
567
+ description: 'Order notes or special instructions',
568
+ },
569
+ tags: {
570
+ type: 'string',
571
+ array: true,
572
+ optional: true,
573
+ description: 'Tags for organization',
574
+ },
575
+ source: {
576
+ type: 'string',
577
+ optional: true,
578
+ description: 'Order source: web, mobile, phone, pos',
579
+ examples: ['web', 'mobile', 'phone', 'pos'],
580
+ },
581
+
582
+ // Timestamps
583
+ placedAt: {
584
+ type: 'datetime',
585
+ optional: true,
586
+ description: 'When the order was placed',
587
+ },
588
+ confirmedAt: {
589
+ type: 'datetime',
590
+ optional: true,
591
+ description: 'When the order was confirmed',
592
+ },
593
+ shippedAt: {
594
+ type: 'datetime',
595
+ optional: true,
596
+ description: 'When the order was shipped',
597
+ },
598
+ deliveredAt: {
599
+ type: 'datetime',
600
+ optional: true,
601
+ description: 'When the order was delivered',
602
+ },
603
+ cancelledAt: {
604
+ type: 'datetime',
605
+ optional: true,
606
+ description: 'When the order was cancelled',
607
+ },
608
+ },
609
+
610
+ relationships: {
611
+ customer: {
612
+ type: 'Customer',
613
+ backref: 'orders',
614
+ description: 'Customer who placed the order',
615
+ },
616
+ items: {
617
+ type: 'OrderItem[]',
618
+ backref: 'order',
619
+ description: 'Line items in this order',
620
+ },
621
+ discount: {
622
+ type: 'Discount',
623
+ required: false,
624
+ description: 'Applied discount/coupon',
625
+ },
626
+ },
627
+
628
+ actions: [
629
+ 'create',
630
+ 'update',
631
+ 'confirm',
632
+ 'process',
633
+ 'fulfill',
634
+ 'ship',
635
+ 'deliver',
636
+ 'cancel',
637
+ 'refund',
638
+ 'addItem',
639
+ 'removeItem',
640
+ 'updateAddress',
641
+ 'applyDiscount',
642
+ 'removeDiscount',
643
+ 'sendNotification',
644
+ 'print',
645
+ 'export',
646
+ ],
647
+
648
+ events: [
649
+ 'created',
650
+ 'updated',
651
+ 'confirmed',
652
+ 'processing',
653
+ 'fulfilled',
654
+ 'shipped',
655
+ 'delivered',
656
+ 'cancelled',
657
+ 'refunded',
658
+ 'itemAdded',
659
+ 'itemRemoved',
660
+ 'addressUpdated',
661
+ 'discountApplied',
662
+ 'discountRemoved',
663
+ 'notificationSent',
664
+ 'printed',
665
+ 'exported',
666
+ ],
667
+ }
668
+
669
+ /**
670
+ * Order item entity
671
+ *
672
+ * Represents a line item in an order
673
+ */
674
+ export const OrderItem: Noun = {
675
+ singular: 'order item',
676
+ plural: 'order items',
677
+ description: 'A line item in an order',
678
+
679
+ properties: {
680
+ // Product Info
681
+ productName: {
682
+ type: 'string',
683
+ description: 'Product name (snapshot at time of order)',
684
+ },
685
+ variantTitle: {
686
+ type: 'string',
687
+ optional: true,
688
+ description: 'Variant title if applicable',
689
+ },
690
+ sku: {
691
+ type: 'string',
692
+ optional: true,
693
+ description: 'Product or variant SKU',
694
+ },
695
+
696
+ // Quantity & Price
697
+ quantity: {
698
+ type: 'number',
699
+ description: 'Quantity ordered',
700
+ },
701
+ price: {
702
+ type: 'number',
703
+ description: 'Unit price at time of order',
704
+ },
705
+ subtotal: {
706
+ type: 'number',
707
+ description: 'Line item subtotal (price × quantity)',
708
+ },
709
+ discountAmount: {
710
+ type: 'number',
711
+ optional: true,
712
+ description: 'Discount applied to this line item',
713
+ },
714
+ taxAmount: {
715
+ type: 'number',
716
+ optional: true,
717
+ description: 'Tax for this line item',
718
+ },
719
+ total: {
720
+ type: 'number',
721
+ description: 'Line item total',
722
+ },
723
+
724
+ // Fulfillment
725
+ fulfillmentStatus: {
726
+ type: 'string',
727
+ optional: true,
728
+ description: 'Fulfillment status: unfulfilled, fulfilled, returned',
729
+ examples: ['unfulfilled', 'fulfilled', 'returned'],
730
+ },
731
+ quantityFulfilled: {
732
+ type: 'number',
733
+ optional: true,
734
+ description: 'Quantity that has been fulfilled',
735
+ },
736
+
737
+ // Metadata
738
+ image: {
739
+ type: 'url',
740
+ optional: true,
741
+ description: 'Product image URL',
742
+ },
743
+ requiresShipping: {
744
+ type: 'boolean',
745
+ optional: true,
746
+ description: 'Whether this item requires shipping',
747
+ },
748
+ },
749
+
750
+ relationships: {
751
+ order: {
752
+ type: 'Order',
753
+ backref: 'items',
754
+ description: 'Parent order',
755
+ },
756
+ product: {
757
+ type: 'Product',
758
+ backref: 'orderItems',
759
+ description: 'The product ordered',
760
+ },
761
+ variant: {
762
+ type: 'ProductVariant',
763
+ required: false,
764
+ backref: 'orderItems',
765
+ description: 'The variant ordered if applicable',
766
+ },
767
+ },
768
+
769
+ actions: [
770
+ 'add',
771
+ 'update',
772
+ 'remove',
773
+ 'fulfill',
774
+ 'unfulfill',
775
+ 'return',
776
+ 'refund',
777
+ ],
778
+
779
+ events: [
780
+ 'added',
781
+ 'updated',
782
+ 'removed',
783
+ 'fulfilled',
784
+ 'unfulfilled',
785
+ 'returned',
786
+ 'refunded',
787
+ ],
788
+ }
789
+
790
+ // =============================================================================
791
+ // Cart
792
+ // =============================================================================
793
+
794
+ /**
795
+ * Shopping cart entity
796
+ *
797
+ * Represents a customer's shopping cart
798
+ */
799
+ export const Cart: Noun = {
800
+ singular: 'cart',
801
+ plural: 'carts',
802
+ description: 'A shopping cart containing products to be purchased',
803
+
804
+ properties: {
805
+ // Status
806
+ status: {
807
+ type: 'string',
808
+ description: 'Cart status: active, abandoned, completed',
809
+ examples: ['active', 'abandoned', 'completed'],
810
+ },
811
+
812
+ // Amounts
813
+ subtotal: {
814
+ type: 'number',
815
+ optional: true,
816
+ description: 'Subtotal of all items',
817
+ },
818
+ discountAmount: {
819
+ type: 'number',
820
+ optional: true,
821
+ description: 'Total discount amount',
822
+ },
823
+ total: {
824
+ type: 'number',
825
+ optional: true,
826
+ description: 'Total cart value',
827
+ },
828
+ currency: {
829
+ type: 'string',
830
+ description: 'Currency code',
831
+ examples: ['USD', 'EUR', 'GBP', 'CAD'],
832
+ },
833
+
834
+ // Item Count
835
+ itemCount: {
836
+ type: 'number',
837
+ optional: true,
838
+ description: 'Total number of items in cart',
839
+ },
840
+ uniqueItemCount: {
841
+ type: 'number',
842
+ optional: true,
843
+ description: 'Number of unique products in cart',
844
+ },
845
+
846
+ // Discounts
847
+ couponCode: {
848
+ type: 'string',
849
+ optional: true,
850
+ description: 'Applied coupon code',
851
+ },
852
+
853
+ // Session
854
+ token: {
855
+ type: 'string',
856
+ optional: true,
857
+ description: 'Cart token for anonymous users',
858
+ },
859
+ expiresAt: {
860
+ type: 'datetime',
861
+ optional: true,
862
+ description: 'When the cart expires',
863
+ },
864
+
865
+ // Metadata
866
+ notes: {
867
+ type: 'string',
868
+ optional: true,
869
+ description: 'Customer notes or special instructions',
870
+ },
871
+ lastActivityAt: {
872
+ type: 'datetime',
873
+ optional: true,
874
+ description: 'Last time cart was modified',
875
+ },
876
+ },
877
+
878
+ relationships: {
879
+ customer: {
880
+ type: 'Customer',
881
+ required: false,
882
+ backref: 'carts',
883
+ description: 'Customer who owns this cart (if logged in)',
884
+ },
885
+ items: {
886
+ type: 'OrderItem[]',
887
+ description: 'Items in the cart',
888
+ },
889
+ discount: {
890
+ type: 'Discount',
891
+ required: false,
892
+ description: 'Applied discount/coupon',
893
+ },
894
+ },
895
+
896
+ actions: [
897
+ 'create',
898
+ 'addItem',
899
+ 'removeItem',
900
+ 'updateItem',
901
+ 'clear',
902
+ 'applyCoupon',
903
+ 'removeCoupon',
904
+ 'checkout',
905
+ 'abandon',
906
+ 'recover',
907
+ 'merge',
908
+ ],
909
+
910
+ events: [
911
+ 'created',
912
+ 'itemAdded',
913
+ 'itemRemoved',
914
+ 'itemUpdated',
915
+ 'cleared',
916
+ 'couponApplied',
917
+ 'couponRemoved',
918
+ 'checkedOut',
919
+ 'abandoned',
920
+ 'recovered',
921
+ 'merged',
922
+ ],
923
+ }
924
+
925
+ // =============================================================================
926
+ // Customer
927
+ // =============================================================================
928
+
929
+ /**
930
+ * Customer entity
931
+ *
932
+ * Represents an e-commerce customer
933
+ */
934
+ export const Customer: Noun = {
935
+ singular: 'customer',
936
+ plural: 'customers',
937
+ description: 'An e-commerce customer',
938
+
939
+ properties: {
940
+ // Identity
941
+ email: {
942
+ type: 'string',
943
+ description: 'Customer email address',
944
+ },
945
+ firstName: {
946
+ type: 'string',
947
+ optional: true,
948
+ description: 'First name',
949
+ },
950
+ lastName: {
951
+ type: 'string',
952
+ optional: true,
953
+ description: 'Last name',
954
+ },
955
+ phone: {
956
+ type: 'string',
957
+ optional: true,
958
+ description: 'Phone number',
959
+ },
960
+
961
+ // Account
962
+ acceptsMarketing: {
963
+ type: 'boolean',
964
+ optional: true,
965
+ description: 'Whether customer accepts marketing emails',
966
+ },
967
+ emailVerified: {
968
+ type: 'boolean',
969
+ optional: true,
970
+ description: 'Whether email has been verified',
971
+ },
972
+
973
+ // Status
974
+ status: {
975
+ type: 'string',
976
+ optional: true,
977
+ description: 'Customer status: active, disabled, invited',
978
+ examples: ['active', 'disabled', 'invited'],
979
+ },
980
+
981
+ // Addresses
982
+ defaultAddress: {
983
+ type: 'json',
984
+ optional: true,
985
+ description: 'Default shipping address',
986
+ },
987
+ addresses: {
988
+ type: 'json',
989
+ array: true,
990
+ optional: true,
991
+ description: 'Saved addresses',
992
+ },
993
+
994
+ // Metadata
995
+ notes: {
996
+ type: 'string',
997
+ optional: true,
998
+ description: 'Internal notes about the customer',
999
+ },
1000
+ tags: {
1001
+ type: 'string',
1002
+ array: true,
1003
+ optional: true,
1004
+ description: 'Customer tags for segmentation',
1005
+ },
1006
+
1007
+ // Statistics
1008
+ orderCount: {
1009
+ type: 'number',
1010
+ optional: true,
1011
+ description: 'Total number of orders',
1012
+ },
1013
+ totalSpent: {
1014
+ type: 'number',
1015
+ optional: true,
1016
+ description: 'Total amount spent',
1017
+ },
1018
+ averageOrderValue: {
1019
+ type: 'number',
1020
+ optional: true,
1021
+ description: 'Average order value',
1022
+ },
1023
+
1024
+ // Timestamps
1025
+ lastOrderAt: {
1026
+ type: 'datetime',
1027
+ optional: true,
1028
+ description: 'Date of last order',
1029
+ },
1030
+ firstOrderAt: {
1031
+ type: 'datetime',
1032
+ optional: true,
1033
+ description: 'Date of first order',
1034
+ },
1035
+ },
1036
+
1037
+ relationships: {
1038
+ orders: {
1039
+ type: 'Order[]',
1040
+ backref: 'customer',
1041
+ description: 'Customer orders',
1042
+ },
1043
+ carts: {
1044
+ type: 'Cart[]',
1045
+ backref: 'customer',
1046
+ description: 'Customer shopping carts',
1047
+ },
1048
+ reviews: {
1049
+ type: 'Review[]',
1050
+ backref: 'customer',
1051
+ description: 'Product reviews written by this customer',
1052
+ },
1053
+ },
1054
+
1055
+ actions: [
1056
+ 'create',
1057
+ 'update',
1058
+ 'delete',
1059
+ 'enable',
1060
+ 'disable',
1061
+ 'invite',
1062
+ 'addAddress',
1063
+ 'updateAddress',
1064
+ 'removeAddress',
1065
+ 'setDefaultAddress',
1066
+ 'sendEmail',
1067
+ 'addNote',
1068
+ 'tag',
1069
+ 'untag',
1070
+ 'merge',
1071
+ 'export',
1072
+ ],
1073
+
1074
+ events: [
1075
+ 'created',
1076
+ 'updated',
1077
+ 'deleted',
1078
+ 'enabled',
1079
+ 'disabled',
1080
+ 'invited',
1081
+ 'addressAdded',
1082
+ 'addressUpdated',
1083
+ 'addressRemoved',
1084
+ 'defaultAddressSet',
1085
+ 'emailSent',
1086
+ 'noteAdded',
1087
+ 'tagged',
1088
+ 'untagged',
1089
+ 'merged',
1090
+ 'exported',
1091
+ 'orderPlaced',
1092
+ 'emailVerified',
1093
+ ],
1094
+ }
1095
+
1096
+ // =============================================================================
1097
+ // Inventory
1098
+ // =============================================================================
1099
+
1100
+ /**
1101
+ * Inventory entity
1102
+ *
1103
+ * Tracks inventory for products and variants
1104
+ */
1105
+ export const Inventory: Noun = {
1106
+ singular: 'inventory',
1107
+ plural: 'inventories',
1108
+ description: 'Inventory tracking for a product or variant',
1109
+
1110
+ properties: {
1111
+ // Quantity
1112
+ quantity: {
1113
+ type: 'number',
1114
+ description: 'Available quantity',
1115
+ },
1116
+ reservedQuantity: {
1117
+ type: 'number',
1118
+ optional: true,
1119
+ description: 'Quantity reserved for pending orders',
1120
+ },
1121
+ availableQuantity: {
1122
+ type: 'number',
1123
+ optional: true,
1124
+ description: 'Quantity available for new orders',
1125
+ },
1126
+
1127
+ // Thresholds
1128
+ lowStockThreshold: {
1129
+ type: 'number',
1130
+ optional: true,
1131
+ description: 'Threshold for low stock warning',
1132
+ },
1133
+ isLowStock: {
1134
+ type: 'boolean',
1135
+ optional: true,
1136
+ description: 'Whether inventory is below threshold',
1137
+ },
1138
+ isOutOfStock: {
1139
+ type: 'boolean',
1140
+ optional: true,
1141
+ description: 'Whether inventory is out of stock',
1142
+ },
1143
+
1144
+ // Policy
1145
+ allowBackorder: {
1146
+ type: 'boolean',
1147
+ optional: true,
1148
+ description: 'Whether to allow backorders when out of stock',
1149
+ },
1150
+ trackInventory: {
1151
+ type: 'boolean',
1152
+ description: 'Whether to track inventory for this item',
1153
+ },
1154
+
1155
+ // Location
1156
+ location: {
1157
+ type: 'string',
1158
+ optional: true,
1159
+ description: 'Warehouse or location name',
1160
+ },
1161
+ bin: {
1162
+ type: 'string',
1163
+ optional: true,
1164
+ description: 'Bin or shelf location',
1165
+ },
1166
+
1167
+ // Metadata
1168
+ lastRestockedAt: {
1169
+ type: 'datetime',
1170
+ optional: true,
1171
+ description: 'Last time inventory was restocked',
1172
+ },
1173
+ lastCountedAt: {
1174
+ type: 'datetime',
1175
+ optional: true,
1176
+ description: 'Last physical inventory count',
1177
+ },
1178
+ },
1179
+
1180
+ relationships: {
1181
+ product: {
1182
+ type: 'Product',
1183
+ required: false,
1184
+ backref: 'inventory',
1185
+ description: 'Product being tracked',
1186
+ },
1187
+ variant: {
1188
+ type: 'ProductVariant',
1189
+ required: false,
1190
+ backref: 'inventory',
1191
+ description: 'Variant being tracked',
1192
+ },
1193
+ },
1194
+
1195
+ actions: [
1196
+ 'create',
1197
+ 'update',
1198
+ 'adjust',
1199
+ 'reserve',
1200
+ 'release',
1201
+ 'restock',
1202
+ 'count',
1203
+ 'transfer',
1204
+ 'setThreshold',
1205
+ ],
1206
+
1207
+ events: [
1208
+ 'created',
1209
+ 'updated',
1210
+ 'adjusted',
1211
+ 'reserved',
1212
+ 'released',
1213
+ 'restocked',
1214
+ 'counted',
1215
+ 'transferred',
1216
+ 'thresholdSet',
1217
+ 'lowStock',
1218
+ 'outOfStock',
1219
+ 'backInStock',
1220
+ ],
1221
+ }
1222
+
1223
+ // =============================================================================
1224
+ // Discount
1225
+ // =============================================================================
1226
+
1227
+ /**
1228
+ * Discount entity
1229
+ *
1230
+ * Represents a discount code or coupon
1231
+ */
1232
+ export const Discount: Noun = {
1233
+ singular: 'discount',
1234
+ plural: 'discounts',
1235
+ description: 'A discount code or coupon',
1236
+
1237
+ properties: {
1238
+ // Identity
1239
+ code: {
1240
+ type: 'string',
1241
+ description: 'Discount code (e.g., "SAVE20")',
1242
+ },
1243
+ name: {
1244
+ type: 'string',
1245
+ optional: true,
1246
+ description: 'Internal name for the discount',
1247
+ },
1248
+
1249
+ // Type
1250
+ type: {
1251
+ type: 'string',
1252
+ description: 'Discount type: percentage, fixed_amount, free_shipping',
1253
+ examples: ['percentage', 'fixed_amount', 'free_shipping'],
1254
+ },
1255
+ value: {
1256
+ type: 'number',
1257
+ description: 'Discount value (percentage or amount)',
1258
+ },
1259
+
1260
+ // Conditions
1261
+ minimumPurchase: {
1262
+ type: 'number',
1263
+ optional: true,
1264
+ description: 'Minimum purchase amount required',
1265
+ },
1266
+ minimumQuantity: {
1267
+ type: 'number',
1268
+ optional: true,
1269
+ description: 'Minimum quantity of items required',
1270
+ },
1271
+ appliesToProducts: {
1272
+ type: 'string',
1273
+ array: true,
1274
+ optional: true,
1275
+ description: 'Product IDs this discount applies to',
1276
+ },
1277
+ appliesToCategories: {
1278
+ type: 'string',
1279
+ array: true,
1280
+ optional: true,
1281
+ description: 'Categories this discount applies to',
1282
+ },
1283
+ excludedProducts: {
1284
+ type: 'string',
1285
+ array: true,
1286
+ optional: true,
1287
+ description: 'Product IDs excluded from discount',
1288
+ },
1289
+
1290
+ // Usage
1291
+ usageLimit: {
1292
+ type: 'number',
1293
+ optional: true,
1294
+ description: 'Maximum number of times code can be used',
1295
+ },
1296
+ usageCount: {
1297
+ type: 'number',
1298
+ optional: true,
1299
+ description: 'Number of times code has been used',
1300
+ },
1301
+ usageLimitPerCustomer: {
1302
+ type: 'number',
1303
+ optional: true,
1304
+ description: 'Max uses per customer',
1305
+ },
1306
+ oneTimeUse: {
1307
+ type: 'boolean',
1308
+ optional: true,
1309
+ description: 'Whether code can only be used once',
1310
+ },
1311
+
1312
+ // Validity
1313
+ startsAt: {
1314
+ type: 'datetime',
1315
+ optional: true,
1316
+ description: 'When discount becomes active',
1317
+ },
1318
+ endsAt: {
1319
+ type: 'datetime',
1320
+ optional: true,
1321
+ description: 'When discount expires',
1322
+ },
1323
+ active: {
1324
+ type: 'boolean',
1325
+ description: 'Whether discount is currently active',
1326
+ },
1327
+
1328
+ // Metadata
1329
+ description: {
1330
+ type: 'string',
1331
+ optional: true,
1332
+ description: 'Description of the discount',
1333
+ },
1334
+ },
1335
+
1336
+ relationships: {
1337
+ orders: {
1338
+ type: 'Order[]',
1339
+ description: 'Orders that used this discount',
1340
+ },
1341
+ },
1342
+
1343
+ actions: [
1344
+ 'create',
1345
+ 'update',
1346
+ 'activate',
1347
+ 'deactivate',
1348
+ 'delete',
1349
+ 'apply',
1350
+ 'remove',
1351
+ 'extend',
1352
+ 'duplicate',
1353
+ ],
1354
+
1355
+ events: [
1356
+ 'created',
1357
+ 'updated',
1358
+ 'activated',
1359
+ 'deactivated',
1360
+ 'deleted',
1361
+ 'applied',
1362
+ 'removed',
1363
+ 'extended',
1364
+ 'duplicated',
1365
+ 'expired',
1366
+ 'limitReached',
1367
+ ],
1368
+ }
1369
+
1370
+ // =============================================================================
1371
+ // Review
1372
+ // =============================================================================
1373
+
1374
+ /**
1375
+ * Review entity
1376
+ *
1377
+ * Represents a product review
1378
+ */
1379
+ export const Review: Noun = {
1380
+ singular: 'review',
1381
+ plural: 'reviews',
1382
+ description: 'A customer review of a product',
1383
+
1384
+ properties: {
1385
+ // Rating
1386
+ rating: {
1387
+ type: 'number',
1388
+ description: 'Star rating (typically 1-5)',
1389
+ },
1390
+
1391
+ // Content
1392
+ title: {
1393
+ type: 'string',
1394
+ optional: true,
1395
+ description: 'Review title or headline',
1396
+ },
1397
+ body: {
1398
+ type: 'string',
1399
+ description: 'Review text content',
1400
+ },
1401
+
1402
+ // Author
1403
+ authorName: {
1404
+ type: 'string',
1405
+ optional: true,
1406
+ description: 'Name of reviewer',
1407
+ },
1408
+ authorEmail: {
1409
+ type: 'string',
1410
+ optional: true,
1411
+ description: 'Email of reviewer',
1412
+ },
1413
+ verified: {
1414
+ type: 'boolean',
1415
+ optional: true,
1416
+ description: 'Whether reviewer is a verified purchaser',
1417
+ },
1418
+
1419
+ // Status
1420
+ status: {
1421
+ type: 'string',
1422
+ description: 'Review status: pending, published, rejected',
1423
+ examples: ['pending', 'published', 'rejected'],
1424
+ },
1425
+ publishedAt: {
1426
+ type: 'datetime',
1427
+ optional: true,
1428
+ description: 'When review was published',
1429
+ },
1430
+
1431
+ // Engagement
1432
+ helpful: {
1433
+ type: 'number',
1434
+ optional: true,
1435
+ description: 'Number of "helpful" votes',
1436
+ },
1437
+ notHelpful: {
1438
+ type: 'number',
1439
+ optional: true,
1440
+ description: 'Number of "not helpful" votes',
1441
+ },
1442
+
1443
+ // Media
1444
+ images: {
1445
+ type: 'url',
1446
+ array: true,
1447
+ optional: true,
1448
+ description: 'Customer-submitted images',
1449
+ },
1450
+ videos: {
1451
+ type: 'url',
1452
+ array: true,
1453
+ optional: true,
1454
+ description: 'Customer-submitted videos',
1455
+ },
1456
+
1457
+ // Metadata
1458
+ source: {
1459
+ type: 'string',
1460
+ optional: true,
1461
+ description: 'Review source: website, email, imported',
1462
+ examples: ['website', 'email', 'imported'],
1463
+ },
1464
+ },
1465
+
1466
+ relationships: {
1467
+ product: {
1468
+ type: 'Product',
1469
+ backref: 'reviews',
1470
+ description: 'Product being reviewed',
1471
+ },
1472
+ customer: {
1473
+ type: 'Customer',
1474
+ required: false,
1475
+ backref: 'reviews',
1476
+ description: 'Customer who wrote the review',
1477
+ },
1478
+ },
1479
+
1480
+ actions: [
1481
+ 'create',
1482
+ 'update',
1483
+ 'publish',
1484
+ 'unpublish',
1485
+ 'approve',
1486
+ 'reject',
1487
+ 'delete',
1488
+ 'markHelpful',
1489
+ 'markNotHelpful',
1490
+ 'reply',
1491
+ 'flag',
1492
+ ],
1493
+
1494
+ events: [
1495
+ 'created',
1496
+ 'updated',
1497
+ 'published',
1498
+ 'unpublished',
1499
+ 'approved',
1500
+ 'rejected',
1501
+ 'deleted',
1502
+ 'markedHelpful',
1503
+ 'markedNotHelpful',
1504
+ 'replied',
1505
+ 'flagged',
1506
+ ],
1507
+ }
1508
+
1509
+ // =============================================================================
1510
+ // Export all entities as a schema
1511
+ // =============================================================================
1512
+
1513
+ /**
1514
+ * All e-commerce entity types
1515
+ */
1516
+ export const EcommerceEntities = {
1517
+ Product,
1518
+ ProductVariant,
1519
+ Order,
1520
+ OrderItem,
1521
+ Cart,
1522
+ Customer,
1523
+ Inventory,
1524
+ Discount,
1525
+ Review,
1526
+ }
1527
+
1528
+ /**
1529
+ * Entity categories for organization
1530
+ */
1531
+ export const EcommerceCategories = {
1532
+ products: ['Product', 'ProductVariant'],
1533
+ orders: ['Order', 'OrderItem'],
1534
+ cart: ['Cart'],
1535
+ customers: ['Customer'],
1536
+ inventory: ['Inventory'],
1537
+ marketing: ['Discount'],
1538
+ reviews: ['Review'],
1539
+ } as const