@rotateprotocol/sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/README.md +453 -0
  2. package/dist/catalog.d.ts +112 -0
  3. package/dist/catalog.d.ts.map +1 -0
  4. package/dist/catalog.js +210 -0
  5. package/dist/catalog.js.map +1 -0
  6. package/dist/components/CheckoutForm.d.ts +86 -0
  7. package/dist/components/CheckoutForm.d.ts.map +1 -0
  8. package/dist/components/CheckoutForm.js +332 -0
  9. package/dist/components/CheckoutForm.js.map +1 -0
  10. package/dist/components/HostedCheckout.d.ts +57 -0
  11. package/dist/components/HostedCheckout.d.ts.map +1 -0
  12. package/dist/components/HostedCheckout.js +414 -0
  13. package/dist/components/HostedCheckout.js.map +1 -0
  14. package/dist/components/PaymentButton.d.ts +80 -0
  15. package/dist/components/PaymentButton.d.ts.map +1 -0
  16. package/dist/components/PaymentButton.js +210 -0
  17. package/dist/components/PaymentButton.js.map +1 -0
  18. package/dist/components/RotateProvider.d.ts +115 -0
  19. package/dist/components/RotateProvider.d.ts.map +1 -0
  20. package/dist/components/RotateProvider.js +264 -0
  21. package/dist/components/RotateProvider.js.map +1 -0
  22. package/dist/components/index.d.ts +17 -0
  23. package/dist/components/index.d.ts.map +1 -0
  24. package/dist/components/index.js +27 -0
  25. package/dist/components/index.js.map +1 -0
  26. package/dist/embed.d.ts +85 -0
  27. package/dist/embed.d.ts.map +1 -0
  28. package/dist/embed.js +313 -0
  29. package/dist/embed.js.map +1 -0
  30. package/dist/hooks.d.ts +156 -0
  31. package/dist/hooks.d.ts.map +1 -0
  32. package/dist/hooks.js +280 -0
  33. package/dist/hooks.js.map +1 -0
  34. package/dist/idl/rotate_connect.json +2572 -0
  35. package/dist/index.d.ts +505 -0
  36. package/dist/index.d.ts.map +1 -0
  37. package/dist/index.js +1197 -0
  38. package/dist/index.js.map +1 -0
  39. package/dist/marketplace.d.ts +257 -0
  40. package/dist/marketplace.d.ts.map +1 -0
  41. package/dist/marketplace.js +433 -0
  42. package/dist/marketplace.js.map +1 -0
  43. package/dist/platform.d.ts +234 -0
  44. package/dist/platform.d.ts.map +1 -0
  45. package/dist/platform.js +268 -0
  46. package/dist/platform.js.map +1 -0
  47. package/dist/react.d.ts +140 -0
  48. package/dist/react.d.ts.map +1 -0
  49. package/dist/react.js +429 -0
  50. package/dist/react.js.map +1 -0
  51. package/dist/store.d.ts +213 -0
  52. package/dist/store.d.ts.map +1 -0
  53. package/dist/store.js +404 -0
  54. package/dist/store.js.map +1 -0
  55. package/dist/webhooks.d.ts +149 -0
  56. package/dist/webhooks.d.ts.map +1 -0
  57. package/dist/webhooks.js +371 -0
  58. package/dist/webhooks.js.map +1 -0
  59. package/package.json +114 -0
  60. package/src/catalog.ts +299 -0
  61. package/src/components/CheckoutForm.tsx +608 -0
  62. package/src/components/HostedCheckout.tsx +675 -0
  63. package/src/components/PaymentButton.tsx +348 -0
  64. package/src/components/RotateProvider.tsx +370 -0
  65. package/src/components/index.ts +26 -0
  66. package/src/embed.ts +408 -0
  67. package/src/hooks.ts +518 -0
  68. package/src/idl/rotate_connect.json +2572 -0
  69. package/src/index.ts +1538 -0
  70. package/src/marketplace.ts +642 -0
  71. package/src/platform.ts +403 -0
  72. package/src/react.ts +459 -0
  73. package/src/store.ts +577 -0
  74. package/src/webhooks.ts +506 -0
package/dist/hooks.js ADDED
@@ -0,0 +1,280 @@
1
+ "use strict";
2
+ /**
3
+ * Rotate React Hooks — Store, Cart & Marketplace
4
+ *
5
+ * Drop-in React hooks for building storefronts and marketplaces.
6
+ * Think of these as a ready-made React integration for Solana payments.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * function ProductPage() {
11
+ * const { products, getByCategory } = useProducts(store);
12
+ * const { cart, addItem, totals, checkout } = useCart(store);
13
+ *
14
+ * return (
15
+ * <div>
16
+ * {getByCategory('shirts').map(p => (
17
+ * <button key={p.id} onClick={() => addItem(p.id)}>
18
+ * {p.name} — ${p.price}
19
+ * </button>
20
+ * ))}
21
+ * <p>Cart: {totals.totalQuantity} items, ${totals.total}</p>
22
+ * <button onClick={() => checkout()}>Pay Now</button>
23
+ * </div>
24
+ * );
25
+ * }
26
+ * ```
27
+ *
28
+ * @packageDocumentation
29
+ */
30
+ Object.defineProperty(exports, "__esModule", { value: true });
31
+ exports.MarketplaceCart = exports.RotateMarketplace = exports.RotateCart = exports.RotateStore = void 0;
32
+ exports.useProducts = useProducts;
33
+ exports.useCart = useCart;
34
+ exports.useMarketplace = useMarketplace;
35
+ exports.useMarketplaceCart = useMarketplaceCart;
36
+ const react_1 = require("react");
37
+ const store_1 = require("./store");
38
+ Object.defineProperty(exports, "RotateStore", { enumerable: true, get: function () { return store_1.RotateStore; } });
39
+ Object.defineProperty(exports, "RotateCart", { enumerable: true, get: function () { return store_1.RotateCart; } });
40
+ const marketplace_1 = require("./marketplace");
41
+ Object.defineProperty(exports, "RotateMarketplace", { enumerable: true, get: function () { return marketplace_1.RotateMarketplace; } });
42
+ Object.defineProperty(exports, "MarketplaceCart", { enumerable: true, get: function () { return marketplace_1.MarketplaceCart; } });
43
+ /**
44
+ * Hook for browsing products in a RotateStore.
45
+ */
46
+ function useProducts(store) {
47
+ // Force re-render on catalog changes
48
+ const [version, setVersion] = (0, react_1.useState)(0);
49
+ const refresh = (0, react_1.useCallback)(() => setVersion((v) => v + 1), []);
50
+ const products = (0, react_1.useMemo)(() => store.getProducts({ active: true }),
51
+ // eslint-disable-next-line react-hooks/exhaustive-deps
52
+ [store, version]);
53
+ const categories = (0, react_1.useMemo)(() => store.getCategories(),
54
+ // eslint-disable-next-line react-hooks/exhaustive-deps
55
+ [store, version]);
56
+ const getProduct = (0, react_1.useCallback)((id) => store.getProduct(id), [store]);
57
+ const getByCategory = (0, react_1.useCallback)((category) => store.getProducts({ category, active: true }),
58
+ // eslint-disable-next-line react-hooks/exhaustive-deps
59
+ [store, version]);
60
+ const search = (0, react_1.useCallback)((query) => store.getProducts({ search: query, active: true }),
61
+ // eslint-disable-next-line react-hooks/exhaustive-deps
62
+ [store, version]);
63
+ const paginate = (0, react_1.useCallback)((page, perPage) => {
64
+ const all = store.getProducts({ active: true });
65
+ const total = all.length;
66
+ const totalPages = Math.ceil(total / perPage);
67
+ const offset = (page - 1) * perPage;
68
+ return {
69
+ products: all.slice(offset, offset + perPage),
70
+ totalPages,
71
+ total,
72
+ };
73
+ },
74
+ // eslint-disable-next-line react-hooks/exhaustive-deps
75
+ [store, version]);
76
+ const isInStock = (0, react_1.useCallback)((productId, qty = 1) => store.isInStock(productId, qty), [store]);
77
+ return {
78
+ products,
79
+ categories,
80
+ getProduct,
81
+ getByCategory,
82
+ search,
83
+ paginate,
84
+ isInStock,
85
+ count: products.length,
86
+ };
87
+ }
88
+ /**
89
+ * Hook for managing a shopping cart backed by a RotateStore.
90
+ */
91
+ function useCart(store) {
92
+ const cartRef = (0, react_1.useRef)(store.createCart());
93
+ const [version, setVersion] = (0, react_1.useState)(0);
94
+ const [checkingOut, setCheckingOut] = (0, react_1.useState)(false);
95
+ const [lastCheckout, setLastCheckout] = (0, react_1.useState)(null);
96
+ const [error, setError] = (0, react_1.useState)(null);
97
+ const bump = (0, react_1.useCallback)(() => setVersion((v) => v + 1), []);
98
+ const items = (0, react_1.useMemo)(() => cartRef.current.getItems(), [version]);
99
+ const totals = (0, react_1.useMemo)(() => cartRef.current.getTotals(), [version]);
100
+ const isEmpty = (0, react_1.useMemo)(() => cartRef.current.isEmpty, [version]);
101
+ const addItem = (0, react_1.useCallback)((productId, quantity = 1) => {
102
+ try {
103
+ cartRef.current.addItem(productId, quantity);
104
+ setError(null);
105
+ }
106
+ catch (e) {
107
+ setError(e.message);
108
+ }
109
+ bump();
110
+ }, [bump]);
111
+ const setQuantity = (0, react_1.useCallback)((productId, quantity) => {
112
+ try {
113
+ cartRef.current.setItemQuantity(productId, quantity);
114
+ setError(null);
115
+ }
116
+ catch (e) {
117
+ setError(e.message);
118
+ }
119
+ bump();
120
+ }, [bump]);
121
+ const removeItem = (0, react_1.useCallback)((productId) => {
122
+ cartRef.current.removeItem(productId);
123
+ bump();
124
+ }, [bump]);
125
+ const clear = (0, react_1.useCallback)(() => {
126
+ cartRef.current.clear();
127
+ setLastCheckout(null);
128
+ setError(null);
129
+ bump();
130
+ }, [bump]);
131
+ const applyDiscount = (0, react_1.useCallback)((code) => {
132
+ const ok = cartRef.current.applyDiscount(code);
133
+ bump();
134
+ return ok;
135
+ }, [bump]);
136
+ const removeDiscount = (0, react_1.useCallback)((code) => {
137
+ const ok = cartRef.current.removeDiscount(code);
138
+ bump();
139
+ return ok;
140
+ }, [bump]);
141
+ const setMetadata = (0, react_1.useCallback)((key, value) => {
142
+ cartRef.current.setMetadata(key, value);
143
+ }, []);
144
+ const checkout = (0, react_1.useCallback)(async (options) => {
145
+ setCheckingOut(true);
146
+ setError(null);
147
+ try {
148
+ const result = await cartRef.current.checkout(options);
149
+ setLastCheckout(result);
150
+ // Create a fresh cart after successful checkout
151
+ cartRef.current = store.createCart();
152
+ bump();
153
+ return result;
154
+ }
155
+ catch (e) {
156
+ setError(e.message);
157
+ throw e;
158
+ }
159
+ finally {
160
+ setCheckingOut(false);
161
+ }
162
+ }, [store, bump]);
163
+ return {
164
+ cart: cartRef.current,
165
+ items,
166
+ totals,
167
+ isEmpty,
168
+ addItem,
169
+ setQuantity,
170
+ removeItem,
171
+ clear,
172
+ applyDiscount,
173
+ removeDiscount,
174
+ setMetadata,
175
+ checkout,
176
+ checkingOut,
177
+ lastCheckout,
178
+ error,
179
+ };
180
+ }
181
+ /**
182
+ * Hook for browsing a marketplace catalog.
183
+ */
184
+ function useMarketplace(marketplace) {
185
+ const [version, setVersion] = (0, react_1.useState)(0);
186
+ const vendors = (0, react_1.useMemo)(() => marketplace.getVendors({ active: true }), [marketplace, version]);
187
+ const products = (0, react_1.useMemo)(() => marketplace.getProducts({ active: true }), [marketplace, version]);
188
+ const categories = (0, react_1.useMemo)(() => marketplace.getCategories(), [marketplace, version]);
189
+ const getVendorProducts = (0, react_1.useCallback)((vendorId) => marketplace.getVendorProducts(vendorId), [marketplace, version]);
190
+ const search = (0, react_1.useCallback)((query) => marketplace.getProducts({ search: query, active: true }), [marketplace, version]);
191
+ const isInStock = (0, react_1.useCallback)((productId, qty = 1) => marketplace.isInStock(productId, qty), [marketplace]);
192
+ const getVendor = (0, react_1.useCallback)((id) => marketplace.getVendor(id), [marketplace]);
193
+ return {
194
+ vendors,
195
+ products,
196
+ categories,
197
+ getVendorProducts,
198
+ search,
199
+ isInStock,
200
+ getVendor,
201
+ };
202
+ }
203
+ /**
204
+ * Hook for managing a multi-vendor marketplace cart.
205
+ */
206
+ function useMarketplaceCart(marketplace) {
207
+ const cartRef = (0, react_1.useRef)(marketplace.createCart());
208
+ const [version, setVersion] = (0, react_1.useState)(0);
209
+ const [checkingOut, setCheckingOut] = (0, react_1.useState)(false);
210
+ const [lastCheckout, setLastCheckout] = (0, react_1.useState)(null);
211
+ const [error, setError] = (0, react_1.useState)(null);
212
+ const bump = (0, react_1.useCallback)(() => setVersion((v) => v + 1), []);
213
+ const items = (0, react_1.useMemo)(() => cartRef.current.getItems(), [version]);
214
+ const totals = (0, react_1.useMemo)(() => cartRef.current.getTotals(), [version]);
215
+ const isEmpty = (0, react_1.useMemo)(() => cartRef.current.isEmpty, [version]);
216
+ const addItem = (0, react_1.useCallback)((productId, quantity = 1) => {
217
+ try {
218
+ cartRef.current.addItem(productId, quantity);
219
+ setError(null);
220
+ }
221
+ catch (e) {
222
+ setError(e.message);
223
+ }
224
+ bump();
225
+ }, [bump]);
226
+ const setQuantity = (0, react_1.useCallback)((productId, quantity) => {
227
+ try {
228
+ cartRef.current.setItemQuantity(productId, quantity);
229
+ setError(null);
230
+ }
231
+ catch (e) {
232
+ setError(e.message);
233
+ }
234
+ bump();
235
+ }, [bump]);
236
+ const removeItem = (0, react_1.useCallback)((productId) => {
237
+ cartRef.current.removeItem(productId);
238
+ bump();
239
+ }, [bump]);
240
+ const clear = (0, react_1.useCallback)(() => {
241
+ cartRef.current.clear();
242
+ setLastCheckout(null);
243
+ setError(null);
244
+ bump();
245
+ }, [bump]);
246
+ const checkout = (0, react_1.useCallback)(async (options) => {
247
+ setCheckingOut(true);
248
+ setError(null);
249
+ try {
250
+ const result = await cartRef.current.checkout(options);
251
+ setLastCheckout(result);
252
+ cartRef.current = marketplace.createCart();
253
+ bump();
254
+ return result;
255
+ }
256
+ catch (e) {
257
+ setError(e.message);
258
+ throw e;
259
+ }
260
+ finally {
261
+ setCheckingOut(false);
262
+ }
263
+ }, [marketplace, bump]);
264
+ return {
265
+ cart: cartRef.current,
266
+ items,
267
+ totals,
268
+ isEmpty,
269
+ vendorCount: totals.vendorCount,
270
+ addItem,
271
+ setQuantity,
272
+ removeItem,
273
+ clear,
274
+ checkout,
275
+ checkingOut,
276
+ lastCheckout,
277
+ error,
278
+ };
279
+ }
280
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}