@businessdash/sdk 0.9.60 → 0.9.80

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 (239) hide show
  1. package/README.md +991 -295
  2. package/assets/biab-sw.js +92 -0
  3. package/dist/account-core/index.d.ts +126 -0
  4. package/dist/account-core/index.d.ts.map +1 -0
  5. package/dist/account-core/index.js +191 -0
  6. package/dist/account-core/index.js.map +1 -0
  7. package/dist/account.d.ts +11 -0
  8. package/dist/account.d.ts.map +1 -0
  9. package/dist/account.js +11 -0
  10. package/dist/account.js.map +1 -0
  11. package/dist/auth-handler.d.ts +1 -1
  12. package/dist/auth-links.d.ts +33 -0
  13. package/dist/auth-links.d.ts.map +1 -0
  14. package/dist/auth-links.js +64 -0
  15. package/dist/auth-links.js.map +1 -0
  16. package/dist/blog-core/index.d.ts +112 -0
  17. package/dist/blog-core/index.d.ts.map +1 -0
  18. package/dist/blog-core/index.js +330 -0
  19. package/dist/blog-core/index.js.map +1 -0
  20. package/dist/blog.d.ts +11 -0
  21. package/dist/blog.d.ts.map +1 -0
  22. package/dist/blog.js +11 -0
  23. package/dist/blog.js.map +1 -0
  24. package/dist/chat-core/index.d.ts +97 -0
  25. package/dist/chat-core/index.d.ts.map +1 -0
  26. package/dist/chat-core/index.js +237 -0
  27. package/dist/chat-core/index.js.map +1 -0
  28. package/dist/chat.d.ts +11 -0
  29. package/dist/chat.d.ts.map +1 -0
  30. package/dist/chat.js +11 -0
  31. package/dist/chat.js.map +1 -0
  32. package/dist/checkout-core/index.d.ts +65 -0
  33. package/dist/checkout-core/index.d.ts.map +1 -0
  34. package/dist/checkout-core/index.js +159 -0
  35. package/dist/checkout-core/index.js.map +1 -0
  36. package/dist/checkout.d.ts +10 -0
  37. package/dist/checkout.d.ts.map +1 -0
  38. package/dist/checkout.js +10 -0
  39. package/dist/checkout.js.map +1 -0
  40. package/dist/cli.js +133 -25
  41. package/dist/cli.js.map +1 -1
  42. package/dist/client.d.ts +622 -1
  43. package/dist/client.d.ts.map +1 -1
  44. package/dist/client.js +888 -1
  45. package/dist/client.js.map +1 -1
  46. package/dist/consent-core/index.cjs +107 -0
  47. package/dist/consent-core/index.d.ts +103 -0
  48. package/dist/consent-core/index.d.ts.map +1 -0
  49. package/dist/consent-core/index.js +157 -0
  50. package/dist/consent-core/index.js.map +1 -0
  51. package/dist/contracts.d.ts +3526 -767
  52. package/dist/contracts.d.ts.map +1 -1
  53. package/dist/contracts.js +571 -4
  54. package/dist/contracts.js.map +1 -1
  55. package/dist/data-model-schema.d.ts +1 -1
  56. package/dist/data-model-schema.d.ts.map +1 -1
  57. package/dist/element.d.ts +30 -0
  58. package/dist/element.d.ts.map +1 -1
  59. package/dist/element.js +56 -0
  60. package/dist/element.js.map +1 -1
  61. package/dist/embed-protocol.d.ts +86 -0
  62. package/dist/embed-protocol.d.ts.map +1 -0
  63. package/dist/embed-protocol.js +60 -0
  64. package/dist/embed-protocol.js.map +1 -0
  65. package/dist/framework-support.d.ts +122 -0
  66. package/dist/framework-support.d.ts.map +1 -0
  67. package/dist/framework-support.js +323 -0
  68. package/dist/framework-support.js.map +1 -0
  69. package/dist/index.cjs +1355 -24
  70. package/dist/legal-core/index.cjs +115 -0
  71. package/dist/legal-core/index.d.ts +160 -0
  72. package/dist/legal-core/index.d.ts.map +1 -0
  73. package/dist/legal-core/index.js +220 -0
  74. package/dist/legal-core/index.js.map +1 -0
  75. package/dist/marketing-core/index.d.ts +66 -0
  76. package/dist/marketing-core/index.d.ts.map +1 -0
  77. package/dist/marketing-core/index.js +154 -0
  78. package/dist/marketing-core/index.js.map +1 -0
  79. package/dist/marketing.d.ts +7 -0
  80. package/dist/marketing.d.ts.map +1 -0
  81. package/dist/marketing.js +7 -0
  82. package/dist/marketing.js.map +1 -0
  83. package/dist/mcp-adapters/index.d.ts +135 -0
  84. package/dist/mcp-adapters/index.d.ts.map +1 -0
  85. package/dist/mcp-adapters/index.js +187 -0
  86. package/dist/mcp-adapters/index.js.map +1 -0
  87. package/dist/mcp-adapters.d.ts +7 -0
  88. package/dist/mcp-adapters.d.ts.map +1 -0
  89. package/dist/mcp-adapters.js +7 -0
  90. package/dist/mcp-adapters.js.map +1 -0
  91. package/dist/model3d-core/index.cjs +95 -0
  92. package/dist/model3d-core/index.d.ts +167 -0
  93. package/dist/model3d-core/index.d.ts.map +1 -0
  94. package/dist/model3d-core/index.js +158 -0
  95. package/dist/model3d-core/index.js.map +1 -0
  96. package/dist/notifications-core/index.cjs +315 -0
  97. package/dist/notifications-core/index.d.ts +229 -0
  98. package/dist/notifications-core/index.d.ts.map +1 -0
  99. package/dist/notifications-core/index.js +445 -0
  100. package/dist/notifications-core/index.js.map +1 -0
  101. package/dist/portal-core/index.d.ts +451 -0
  102. package/dist/portal-core/index.d.ts.map +1 -0
  103. package/dist/portal-core/index.js +819 -0
  104. package/dist/portal-core/index.js.map +1 -0
  105. package/dist/portal.d.ts +7 -0
  106. package/dist/portal.d.ts.map +1 -0
  107. package/dist/portal.js +7 -0
  108. package/dist/portal.js.map +1 -0
  109. package/dist/push-core/index.cjs +171 -0
  110. package/dist/push-core/index.d.ts +149 -0
  111. package/dist/push-core/index.d.ts.map +1 -0
  112. package/dist/push-core/index.js +231 -0
  113. package/dist/push-core/index.js.map +1 -0
  114. package/dist/react-marketing.d.ts +1 -17
  115. package/dist/react-marketing.d.ts.map +1 -1
  116. package/dist/react-marketing.js +4 -0
  117. package/dist/react-marketing.js.map +1 -1
  118. package/dist/react.d.ts +294 -101
  119. package/dist/react.d.ts.map +1 -1
  120. package/dist/react.js +302 -246
  121. package/dist/react.js.map +1 -1
  122. package/dist/seed-core/index.d.ts +354 -0
  123. package/dist/seed-core/index.d.ts.map +1 -0
  124. package/dist/seed-core/index.js +420 -0
  125. package/dist/seed-core/index.js.map +1 -0
  126. package/dist/seed.d.ts +7 -0
  127. package/dist/seed.d.ts.map +1 -0
  128. package/dist/seed.js +7 -0
  129. package/dist/seed.js.map +1 -0
  130. package/dist/seo-core/blog.d.ts +94 -0
  131. package/dist/seo-core/blog.d.ts.map +1 -0
  132. package/dist/seo-core/blog.js +149 -0
  133. package/dist/seo-core/blog.js.map +1 -0
  134. package/dist/seo-core/commerce.d.ts +64 -0
  135. package/dist/seo-core/commerce.d.ts.map +1 -0
  136. package/dist/seo-core/commerce.js +87 -0
  137. package/dist/seo-core/commerce.js.map +1 -0
  138. package/dist/seo-core/index.cjs +751 -0
  139. package/dist/seo-core/index.d.ts +226 -0
  140. package/dist/seo-core/index.d.ts.map +1 -0
  141. package/dist/seo-core/index.js +455 -0
  142. package/dist/seo-core/index.js.map +1 -0
  143. package/dist/seo-core/local.d.ts +181 -0
  144. package/dist/seo-core/local.d.ts.map +1 -0
  145. package/dist/seo-core/local.js +193 -0
  146. package/dist/seo-core/local.js.map +1 -0
  147. package/dist/sitemap-core/index.cjs +167 -0
  148. package/dist/sitemap-core/index.d.ts +155 -0
  149. package/dist/sitemap-core/index.d.ts.map +1 -0
  150. package/dist/sitemap-core/index.js +195 -0
  151. package/dist/sitemap-core/index.js.map +1 -0
  152. package/dist/social-core/index.d.ts +74 -0
  153. package/dist/social-core/index.d.ts.map +1 -0
  154. package/dist/social-core/index.js +72 -0
  155. package/dist/social-core/index.js.map +1 -0
  156. package/dist/social.d.ts +7 -0
  157. package/dist/social.d.ts.map +1 -0
  158. package/dist/social.js +7 -0
  159. package/dist/social.js.map +1 -0
  160. package/dist/solid-compat.d.ts +204 -0
  161. package/dist/solid-compat.d.ts.map +1 -0
  162. package/dist/solid-compat.js +221 -0
  163. package/dist/solid-compat.js.map +1 -0
  164. package/dist/store-core/index.d.ts +141 -0
  165. package/dist/store-core/index.d.ts.map +1 -0
  166. package/dist/store-core/index.js +277 -0
  167. package/dist/store-core/index.js.map +1 -0
  168. package/dist/store.d.ts +12 -0
  169. package/dist/store.d.ts.map +1 -0
  170. package/dist/store.js +12 -0
  171. package/dist/store.js.map +1 -0
  172. package/dist/vanilla.d.ts +111 -0
  173. package/dist/vanilla.d.ts.map +1 -1
  174. package/dist/vanilla.js +206 -0
  175. package/dist/vanilla.js.map +1 -1
  176. package/dist/verify-core/index.d.ts +98 -0
  177. package/dist/verify-core/index.d.ts.map +1 -0
  178. package/dist/verify-core/index.js +186 -0
  179. package/dist/verify-core/index.js.map +1 -0
  180. package/dist/verify.d.ts +8 -0
  181. package/dist/verify.d.ts.map +1 -0
  182. package/dist/verify.js +8 -0
  183. package/dist/verify.js.map +1 -0
  184. package/openapi.json +4516 -1311
  185. package/package.json +128 -11
  186. package/src/account-core/index.ts +309 -0
  187. package/src/account.ts +11 -0
  188. package/src/angular/headless.ts +519 -0
  189. package/src/angular/index.ts +3 -0
  190. package/src/auth-links.ts +76 -0
  191. package/src/blog-core/index.ts +423 -0
  192. package/src/blog.ts +11 -0
  193. package/src/chat-core/index.ts +335 -0
  194. package/src/chat.ts +11 -0
  195. package/src/checkout-core/index.ts +225 -0
  196. package/src/checkout.ts +10 -0
  197. package/src/cli.ts +184 -28
  198. package/src/client.ts +1097 -0
  199. package/src/consent-core/index.ts +213 -0
  200. package/src/contracts.ts +768 -11
  201. package/src/data-model-schema.ts +1 -1
  202. package/src/element.ts +102 -0
  203. package/src/embed-protocol.ts +100 -0
  204. package/src/framework-support.ts +440 -0
  205. package/src/legal-core/index.ts +276 -0
  206. package/src/marketing-core/index.ts +209 -0
  207. package/src/marketing.ts +7 -0
  208. package/src/mcp-adapters/index.ts +264 -0
  209. package/src/mcp-adapters.ts +7 -0
  210. package/src/model3d-core/index.ts +248 -0
  211. package/src/notifications-core/index.ts +650 -0
  212. package/src/portal-core/index.ts +1564 -0
  213. package/src/portal.ts +7 -0
  214. package/src/push-core/index.ts +335 -0
  215. package/src/qwik.tsx +602 -2
  216. package/src/react-marketing.tsx +5 -0
  217. package/src/react.tsx +434 -319
  218. package/src/seed-core/index.ts +735 -0
  219. package/src/seed.ts +7 -0
  220. package/src/seo-core/blog.ts +216 -0
  221. package/src/seo-core/commerce.ts +138 -0
  222. package/src/seo-core/index.ts +605 -0
  223. package/src/seo-core/local.ts +333 -0
  224. package/src/sitemap-core/index.ts +296 -0
  225. package/src/social-core/index.ts +103 -0
  226. package/src/social.ts +7 -0
  227. package/src/solid-compat.tsx +347 -0
  228. package/src/solid-surfaces.tsx +1311 -0
  229. package/src/solid.tsx +82 -60
  230. package/src/store-core/index.ts +426 -0
  231. package/src/store.ts +12 -0
  232. package/src/svelte/SocialLinks.svelte +84 -0
  233. package/src/svelte/headless.ts +435 -0
  234. package/src/svelte/index.ts +9 -0
  235. package/src/vanilla.ts +367 -0
  236. package/src/verify-core/index.ts +288 -0
  237. package/src/verify.ts +8 -0
  238. package/src/vue/headless.ts +527 -0
  239. package/src/vue/index.ts +3 -0
@@ -0,0 +1,237 @@
1
+ /**
2
+ * `@businessdash/sdk/chat` — the headless Front Desk chat controller.
3
+ *
4
+ * ## Why this exists
5
+ *
6
+ * Chat was the one capability where React was genuinely ahead rather than
7
+ * merely first: it shipped a headless `useChatbot` plus `<ChatbotInline>`, so a
8
+ * React consumer could render chat in their own design system, while every
9
+ * other framework got an iframe widget and nothing else.
10
+ *
11
+ * The logic was never React-specific. It is a message list, a pending flag, the
12
+ * latest UI actions and an availability snapshot — none of which needs hooks.
13
+ * This module is that logic, lifted out verbatim so React's behaviour is
14
+ * preserved rather than reimplemented, and so every other binding can offer the
15
+ * same thing.
16
+ *
17
+ * ## What a binding does
18
+ *
19
+ * Subscribe to `snapshot()`, render it, call the actions. That is the whole
20
+ * contract — the same one `createFormController` and `createStoreController`
21
+ * use.
22
+ *
23
+ * ## Transcript ownership
24
+ *
25
+ * The controller holds the transcript and sends the WHOLE thing on every turn,
26
+ * because the chat endpoint is stateless: it answers from the messages it is
27
+ * given. A binding must not keep its own copy and pass it in — two transcripts
28
+ * diverge the moment one render is dropped, and the visitor gets an answer to a
29
+ * question they didn't ask.
30
+ *
31
+ * @module
32
+ */
33
+ function toError(cause, fallback) {
34
+ return cause instanceof Error ? cause : new Error(fallback);
35
+ }
36
+ export function createChatController(options) {
37
+ const { client, onError } = options;
38
+ let destroyed = false;
39
+ const subscribers = new Set();
40
+ const state = {
41
+ status: "idle",
42
+ messages: [...(options.initialMessages ?? [])],
43
+ isPending: false,
44
+ error: null,
45
+ uiActions: [],
46
+ availability: null,
47
+ config: null,
48
+ };
49
+ let cached = null;
50
+ function snapshot() {
51
+ if (!cached) {
52
+ cached = {
53
+ status: state.status,
54
+ messages: state.messages,
55
+ isPending: state.isPending,
56
+ error: state.error,
57
+ uiActions: state.uiActions,
58
+ availability: state.availability,
59
+ config: state.config,
60
+ };
61
+ }
62
+ return cached;
63
+ }
64
+ function notify() {
65
+ if (destroyed)
66
+ return;
67
+ cached = null;
68
+ const next = snapshot();
69
+ for (const cb of subscribers)
70
+ cb(next);
71
+ }
72
+ function fail(cause, fallback) {
73
+ const error = toError(cause, fallback);
74
+ state.error = error;
75
+ state.status = "error";
76
+ onError?.(error);
77
+ return error;
78
+ }
79
+ return {
80
+ snapshot,
81
+ subscribe(callback) {
82
+ subscribers.add(callback);
83
+ return () => {
84
+ subscribers.delete(callback);
85
+ };
86
+ },
87
+ async send(content) {
88
+ const trimmed = content.trim();
89
+ if (!trimmed || destroyed)
90
+ return null;
91
+ state.error = null;
92
+ state.isPending = true;
93
+ // The user's turn is appended BEFORE the request so it paints
94
+ // immediately; the transcript sent is the same array, which is what
95
+ // keeps the visible thread and the model's context identical.
96
+ state.messages = [...state.messages, { role: "user", content: trimmed }];
97
+ notify();
98
+ try {
99
+ const input = { messages: state.messages };
100
+ const reply = await client.chatbot.chat(input);
101
+ if (destroyed)
102
+ return null;
103
+ state.messages = [
104
+ ...state.messages,
105
+ { role: "assistant", content: reply.text },
106
+ ];
107
+ state.uiActions = reply.uiActions ?? [];
108
+ if (reply.availability)
109
+ state.availability = reply.availability;
110
+ state.status = "ready";
111
+ return reply;
112
+ }
113
+ catch (cause) {
114
+ if (destroyed)
115
+ return null;
116
+ fail(cause, "Chat failed");
117
+ return null;
118
+ }
119
+ finally {
120
+ if (!destroyed) {
121
+ state.isPending = false;
122
+ notify();
123
+ }
124
+ }
125
+ },
126
+ reset() {
127
+ if (destroyed)
128
+ return;
129
+ state.messages = [];
130
+ state.error = null;
131
+ state.uiActions = [];
132
+ state.status = "idle";
133
+ notify();
134
+ },
135
+ async loadConfig() {
136
+ if (destroyed)
137
+ return null;
138
+ try {
139
+ const config = await client.chatbot.getConfig();
140
+ if (destroyed)
141
+ return null;
142
+ state.config = config;
143
+ notify();
144
+ return config;
145
+ }
146
+ catch (cause) {
147
+ if (!destroyed) {
148
+ fail(cause, "Failed to load the chatbot config.");
149
+ notify();
150
+ }
151
+ return null;
152
+ }
153
+ },
154
+ async refreshAvailability() {
155
+ if (destroyed)
156
+ return null;
157
+ try {
158
+ const next = await client.chatbot.getAvailability();
159
+ if (destroyed)
160
+ return null;
161
+ state.availability = next;
162
+ notify();
163
+ return next;
164
+ }
165
+ catch {
166
+ // Presence is decoration. Failing to read it must not put the whole
167
+ // chat into an error state while the assistant is answering fine.
168
+ return null;
169
+ }
170
+ },
171
+ async getForm(slug) {
172
+ if (destroyed)
173
+ return null;
174
+ try {
175
+ return await client.chatbot.getChatForm(slug);
176
+ }
177
+ catch {
178
+ // A form the assistant referenced but we can't fetch is better
179
+ // skipped than turned into a chat-wide error.
180
+ return null;
181
+ }
182
+ },
183
+ async submitForm(slug, input) {
184
+ if (destroyed)
185
+ return null;
186
+ try {
187
+ // The transcript goes along so the submission carries the context it
188
+ // was collected in. An explicit `priorChat` wins.
189
+ const priorChat = state.messages.map((m, i) => ({
190
+ role: m.role,
191
+ content: m.content,
192
+ createdAt: i,
193
+ }));
194
+ return await client.chatbot.submitChatForm(slug, {
195
+ ...input,
196
+ priorChat: input.priorChat ?? priorChat,
197
+ });
198
+ }
199
+ catch (cause) {
200
+ if (!destroyed) {
201
+ fail(cause, "Submit failed");
202
+ notify();
203
+ }
204
+ return null;
205
+ }
206
+ },
207
+ async requestHuman(input) {
208
+ if (destroyed)
209
+ return null;
210
+ try {
211
+ const res = await client.chatbot.requestHuman(input);
212
+ if (destroyed)
213
+ return null;
214
+ // The reply usually carries a fresh queue position; reflect it.
215
+ const availability = res
216
+ .availability;
217
+ if (availability) {
218
+ state.availability = availability;
219
+ notify();
220
+ }
221
+ return res;
222
+ }
223
+ catch (cause) {
224
+ if (!destroyed) {
225
+ fail(cause, "Could not reach a person right now.");
226
+ notify();
227
+ }
228
+ return null;
229
+ }
230
+ },
231
+ destroy() {
232
+ destroyed = true;
233
+ subscribers.clear();
234
+ },
235
+ };
236
+ }
237
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/chat-core/index.ts"],"names":[],"mappings":"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"}
package/dist/chat.d.ts ADDED
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `@businessdash/sdk/chat` — the framework-agnostic Front Desk chat core.
3
+ *
4
+ * Bindings shipped as SOURCE import through this public subpath rather than a
5
+ * relative path, so the consumer's bundler resolves it exactly as their own
6
+ * code would. `forms` works the same way.
7
+ *
8
+ * @module
9
+ */
10
+ export * from "./chat-core/index.js";
11
+ //# sourceMappingURL=chat.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,sBAAsB,CAAC"}
package/dist/chat.js ADDED
@@ -0,0 +1,11 @@
1
+ /**
2
+ * `@businessdash/sdk/chat` — the framework-agnostic Front Desk chat core.
3
+ *
4
+ * Bindings shipped as SOURCE import through this public subpath rather than a
5
+ * relative path, so the consumer's bundler resolves it exactly as their own
6
+ * code would. `forms` works the same way.
7
+ *
8
+ * @module
9
+ */
10
+ export * from "./chat-core/index.js";
11
+ //# sourceMappingURL=chat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chat.js","sourceRoot":"","sources":["../src/chat.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,cAAc,sBAAsB,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * `@businessdash/sdk/checkout` — the headless checkout controller.
3
+ *
4
+ * Checkout existed only on React and Solid, and only as a button that redirects
5
+ * plus an iframe surface. This is the framework-agnostic half: mint a Stripe
6
+ * session, hand back the URL, and resolve the outcome afterwards.
7
+ *
8
+ * ## Why it does not navigate for you
9
+ *
10
+ * `start()` returns the session and leaves the navigation to the caller. The
11
+ * previous React component called `window.location.href = …` itself, which is
12
+ * fine in a browser and wrong everywhere else — a native app, an SSR render, a
13
+ * test. `redirect()` is offered separately for callers that do want it, and it
14
+ * no-ops off the browser rather than throwing.
15
+ *
16
+ * ## Resolving the result
17
+ *
18
+ * After Stripe sends the customer back, `resolve(sessionId)` reads the real
19
+ * payment status from the server. Never trust the query string alone: the
20
+ * `session_id` in the URL says the customer returned, not that they paid.
21
+ *
22
+ * @module
23
+ */
24
+ import type { CheckoutSessionInput, CheckoutSessionResponse, CheckoutStatusResponse } from "../contracts.js";
25
+ export type CheckoutCoreClient = {
26
+ checkout: {
27
+ createSession(input: CheckoutSessionInput): Promise<CheckoutSessionResponse>;
28
+ getStatus(sessionId: string): Promise<CheckoutStatusResponse>;
29
+ };
30
+ };
31
+ export type CheckoutStatus = "idle" | "starting" | "ready" | "resolving" | "paid" | "unpaid" | "error";
32
+ /** Field names are STABLE and load-bearing for every framework binding. */
33
+ export type CheckoutSnapshot = {
34
+ status: CheckoutStatus;
35
+ /** The minted session, once `start()` succeeds. */
36
+ session: CheckoutSessionResponse | null;
37
+ /** Where to send the customer. `null` until a session exists. */
38
+ stripeUrl: string | null;
39
+ /** Server-confirmed outcome, once `resolve()` has run. */
40
+ result: CheckoutStatusResponse | null;
41
+ error: Error | null;
42
+ /** True while a session is being minted or a status resolved. */
43
+ isPending: boolean;
44
+ };
45
+ export type CheckoutController = {
46
+ snapshot(): CheckoutSnapshot;
47
+ subscribe(callback: (snapshot: CheckoutSnapshot) => void): () => void;
48
+ /** Mint a Stripe checkout session. Does NOT navigate. */
49
+ start(input: CheckoutSessionInput): Promise<CheckoutSessionResponse | null>;
50
+ /**
51
+ * Send the browser to Stripe using the session already minted by `start()`.
52
+ * No-ops outside a browser and when there is no session yet.
53
+ */
54
+ redirect(): void;
55
+ /** Read the real payment status for a returning customer. */
56
+ resolve(sessionId: string): Promise<CheckoutStatusResponse | null>;
57
+ reset(): void;
58
+ destroy(): void;
59
+ };
60
+ export type CreateCheckoutControllerOptions = {
61
+ client: CheckoutCoreClient;
62
+ onError?: (error: Error) => void;
63
+ };
64
+ export declare function createCheckoutController(options: CreateCheckoutControllerOptions): CheckoutController;
65
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/checkout-core/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EACX,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,MAAM,iBAAiB,CAAC;AAEzB,MAAM,MAAM,kBAAkB,GAAG;IAChC,QAAQ,EAAE;QACT,aAAa,CACZ,KAAK,EAAE,oBAAoB,GACzB,OAAO,CAAC,uBAAuB,CAAC,CAAC;QACpC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;KAC9D,CAAC;CACF,CAAC;AAEF,MAAM,MAAM,cAAc,GACvB,MAAM,GACN,UAAU,GACV,OAAO,GACP,WAAW,GACX,MAAM,GACN,QAAQ,GACR,OAAO,CAAC;AAEX,2EAA2E;AAC3E,MAAM,MAAM,gBAAgB,GAAG;IAC9B,MAAM,EAAE,cAAc,CAAC;IACvB,mDAAmD;IACnD,OAAO,EAAE,uBAAuB,GAAG,IAAI,CAAC;IACxC,iEAAiE;IACjE,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,0DAA0D;IAC1D,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC;IACtC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,iEAAiE;IACjE,SAAS,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAChC,QAAQ,IAAI,gBAAgB,CAAC;IAC7B,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IACtE,yDAAyD;IACzD,KAAK,CAAC,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAAC;IAC5E;;;OAGG;IACH,QAAQ,IAAI,IAAI,CAAC;IACjB,6DAA6D;IAC7D,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;IACnE,KAAK,IAAI,IAAI,CAAC;IACd,OAAO,IAAI,IAAI,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,+BAA+B,GAAG;IAC7C,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CACjC,CAAC;AAMF,wBAAgB,wBAAwB,CACvC,OAAO,EAAE,+BAA+B,GACtC,kBAAkB,CAuIpB"}
@@ -0,0 +1,159 @@
1
+ /**
2
+ * `@businessdash/sdk/checkout` — the headless checkout controller.
3
+ *
4
+ * Checkout existed only on React and Solid, and only as a button that redirects
5
+ * plus an iframe surface. This is the framework-agnostic half: mint a Stripe
6
+ * session, hand back the URL, and resolve the outcome afterwards.
7
+ *
8
+ * ## Why it does not navigate for you
9
+ *
10
+ * `start()` returns the session and leaves the navigation to the caller. The
11
+ * previous React component called `window.location.href = …` itself, which is
12
+ * fine in a browser and wrong everywhere else — a native app, an SSR render, a
13
+ * test. `redirect()` is offered separately for callers that do want it, and it
14
+ * no-ops off the browser rather than throwing.
15
+ *
16
+ * ## Resolving the result
17
+ *
18
+ * After Stripe sends the customer back, `resolve(sessionId)` reads the real
19
+ * payment status from the server. Never trust the query string alone: the
20
+ * `session_id` in the URL says the customer returned, not that they paid.
21
+ *
22
+ * @module
23
+ */
24
+ function toError(cause, fallback) {
25
+ return cause instanceof Error ? cause : new Error(fallback);
26
+ }
27
+ export function createCheckoutController(options) {
28
+ const { client, onError } = options;
29
+ let destroyed = false;
30
+ const subscribers = new Set();
31
+ const state = {
32
+ status: "idle",
33
+ session: null,
34
+ result: null,
35
+ error: null,
36
+ isPending: false,
37
+ };
38
+ let cached = null;
39
+ function snapshot() {
40
+ if (!cached) {
41
+ cached = {
42
+ status: state.status,
43
+ session: state.session,
44
+ stripeUrl: state.session?.stripeUrl ?? null,
45
+ result: state.result,
46
+ error: state.error,
47
+ isPending: state.isPending,
48
+ };
49
+ }
50
+ return cached;
51
+ }
52
+ function notify() {
53
+ if (destroyed)
54
+ return;
55
+ cached = null;
56
+ const next = snapshot();
57
+ for (const cb of subscribers)
58
+ cb(next);
59
+ }
60
+ function fail(cause, fallback) {
61
+ const error = toError(cause, fallback);
62
+ state.error = error;
63
+ state.status = "error";
64
+ onError?.(error);
65
+ }
66
+ return {
67
+ snapshot,
68
+ subscribe(callback) {
69
+ subscribers.add(callback);
70
+ return () => {
71
+ subscribers.delete(callback);
72
+ };
73
+ },
74
+ async start(input) {
75
+ if (destroyed)
76
+ return null;
77
+ state.status = "starting";
78
+ state.isPending = true;
79
+ state.error = null;
80
+ notify();
81
+ try {
82
+ const session = await client.checkout.createSession(input);
83
+ if (destroyed)
84
+ return null;
85
+ state.session = session;
86
+ state.status = "ready";
87
+ return session;
88
+ }
89
+ catch (cause) {
90
+ if (destroyed)
91
+ return null;
92
+ fail(cause, "Could not start checkout.");
93
+ return null;
94
+ }
95
+ finally {
96
+ if (!destroyed) {
97
+ state.isPending = false;
98
+ notify();
99
+ }
100
+ }
101
+ },
102
+ redirect() {
103
+ if (destroyed)
104
+ return;
105
+ const url = state.session?.stripeUrl;
106
+ if (!url || typeof window === "undefined")
107
+ return;
108
+ window.location.href = url;
109
+ },
110
+ async resolve(sessionId) {
111
+ if (destroyed)
112
+ return null;
113
+ state.status = "resolving";
114
+ state.isPending = true;
115
+ state.error = null;
116
+ notify();
117
+ try {
118
+ const result = await client.checkout.getStatus(sessionId);
119
+ if (destroyed)
120
+ return null;
121
+ state.result = result;
122
+ // The query string only proves the customer came back. This is the
123
+ // only thing that proves they paid.
124
+ state.status =
125
+ result.paymentStatus === "paid"
126
+ ? "paid"
127
+ : "unpaid";
128
+ return result;
129
+ }
130
+ catch (cause) {
131
+ if (destroyed)
132
+ return null;
133
+ fail(cause, "Could not read the payment status.");
134
+ return null;
135
+ }
136
+ finally {
137
+ if (!destroyed) {
138
+ state.isPending = false;
139
+ notify();
140
+ }
141
+ }
142
+ },
143
+ reset() {
144
+ if (destroyed)
145
+ return;
146
+ state.status = "idle";
147
+ state.session = null;
148
+ state.result = null;
149
+ state.error = null;
150
+ state.isPending = false;
151
+ notify();
152
+ },
153
+ destroy() {
154
+ destroyed = true;
155
+ subscribers.clear();
156
+ },
157
+ };
158
+ }
159
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/checkout-core/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `@businessdash/sdk/checkout` — the framework-agnostic checkout core.
3
+ *
4
+ * Source-shipped bindings import through this public subpath, as they do for
5
+ * `forms`, `store`, `chat` and `blog`.
6
+ *
7
+ * @module
8
+ */
9
+ export * from "./checkout-core/index.js";
10
+ //# sourceMappingURL=checkout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkout.d.ts","sourceRoot":"","sources":["../src/checkout.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,0BAA0B,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * `@businessdash/sdk/checkout` — the framework-agnostic checkout core.
3
+ *
4
+ * Source-shipped bindings import through this public subpath, as they do for
5
+ * `forms`, `store`, `chat` and `blog`.
6
+ *
7
+ * @module
8
+ */
9
+ export * from "./checkout-core/index.js";
10
+ //# sourceMappingURL=checkout.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkout.js","sourceRoot":"","sources":["../src/checkout.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc,0BAA0B,CAAC"}