@jamwidgets/core 0.5.3 → 0.7.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.
package/README.md CHANGED
@@ -16,12 +16,18 @@ This is the base package used by `@jamwidgets/astro`, `@jamwidgets/react`, and `
16
16
  ## Gallery elements
17
17
 
18
18
  ```html
19
- <script type="module" src="https://cdn.jsdelivr.net/npm/@jamwidgets/core@0.5.0/dist/gallery-elements.js"></script>
19
+ <script type="module" src="https://cdn.jsdelivr.net/npm/@jamwidgets/core@0.7.0/dist/gallery-elements.js"></script>
20
20
  <jamwidgets-gallery-index site-key="your-key" deep-link></jamwidgets-gallery-index>
21
21
  <jamwidgets-gallery site-key="your-key" slug="field-notes" tag="portraits"></jamwidgets-gallery>
22
22
  <jamwidgets-random-photo site-key="your-key" slug="field-notes" seed="homepage"></jamwidgets-random-photo>
23
23
  ```
24
24
 
25
+ A gallery or random photo whose slug doesn't exist, isn't published or has no matching photo renders nothing and logs a `console.warn` naming the slug. Other failures still show a message.
26
+
27
+ ## Missing content
28
+
29
+ Widgets tied to a piece of content (a poll, a gallery) hide themselves when the API answers 404 for it, so a typo'd slug or unpublished content never shows visitors an error. Each logs one `console.warn` with the widget and slug. Controllers report it as status `"notFound"` with no error, and `PollController.fetch()` resolves `null`. `isNotFound(error)` checks a caught `JamwidgetsApiError` the same way.
30
+
25
31
  ## API Functions
26
32
 
27
33
  ### Comments
@@ -42,7 +48,7 @@ await postComment({
42
48
  authorName: "John",
43
49
  content: "Great post!",
44
50
  authorEmail: "john@example.com", // optional
45
- parentId: "comment-id", // optional, for replies
51
+ parentId: comment.id, // optional, for replies: the ID of the comment being answered
46
52
  });
47
53
  ```
48
54
 
@@ -77,6 +83,10 @@ await removeReaction({
77
83
  ```ts
78
84
  import { submitForm } from "@jamwidgets/core";
79
85
 
86
+ // When the form was shown, in Unix seconds. Submissions sent within a few
87
+ // seconds of this are held for review, so record it on render, not on submit.
88
+ const formLoadTime = Math.floor(Date.now() / 1000);
89
+
80
90
  await submitForm({
81
91
  siteKey: "your-key",
82
92
  formSlug: "contact",
@@ -85,9 +95,32 @@ await submitForm({
85
95
  email: "john@example.com",
86
96
  message: "Hello!",
87
97
  },
98
+ formLoadTime,
88
99
  });
89
100
  ```
90
101
 
102
+ Each call sends a new idempotency key. To retry the same submission without
103
+ storing it twice, pass the same `requestId` again, or use `FormController`,
104
+ which keeps the load time and retry key for you.
105
+
106
+ ### Errors
107
+
108
+ A failed request throws a `JamwidgetsApiError` whose `message` is the
109
+ server's explanation (for example "Email is invalid"), with `status` and
110
+ `code` (such as `"validation"`) for branching:
111
+
112
+ ```ts
113
+ import { JamwidgetsApiError, subscribe } from "@jamwidgets/core";
114
+
115
+ try {
116
+ await subscribe({ siteKey: "your-key", email });
117
+ } catch (error) {
118
+ if (error instanceof JamwidgetsApiError && error.code === "validation") {
119
+ showFieldError(error.message);
120
+ }
121
+ }
122
+ ```
123
+
91
124
  ### Subscriptions
92
125
 
93
126
  ```ts
@@ -15,6 +15,8 @@ declare abstract class GalleryElement extends HTMLElementBase {
15
15
  protected abstract load(generation: number): Promise<void>;
16
16
  frame(): HTMLElement;
17
17
  protected loading(): void;
18
+ /** Missing or unpublished content: show nothing to visitors, tell the owner in the console. */
19
+ protected hideMissing(widget: string, slug: string): void;
18
20
  protected fail(error: unknown): void;
19
21
  brand(frame: HTMLElement): Promise<void>;
20
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"gallery-elements.d.ts","sourceRoot":"","sources":["../src/gallery-elements.ts"],"names":[],"mappings":"AA8BA,QAAA,MAAM,eAAe,EAA2C,OAAO,WAAW,CAAC;AAsBnF,uBAAe,cAAe,SAAQ,eAAe;IACnD,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC5B,OAAO,CAAC,UAAU,CAAK;IAEvB,MAAM,KAAK,kBAAkB,aAE5B;IAED,iBAAiB;IAIjB,oBAAoB;IAGpB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAGpF,SAAS,CAAC,MAAM;IAKhB,SAAS,CAAC,iBAAiB;IAC3B,SAAS,KAAK,iBAAiB,WAA8B;IAC7D,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM;IAEtC,SAAS,KAAK,OAAO,WAAkD;IACvE,SAAS,KAAK,QAAQ,uBAAyD;IAC/E,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1D,KAAK,IAAI,WAAW;IAOpB,SAAS,CAAC,OAAO;IACjB,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO;IACvB,KAAK,CAAC,KAAK,EAAE,WAAW;CAS/B;AA+DD,qBAAa,wBAAyB,SAAQ,cAAc;cAC1C,IAAI,CAAC,UAAU,EAAE,MAAM;CAUxC;AAED,qBAAa,6BAA8B,SAAQ,cAAc;IAC/D,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAUvB;IAEF,iBAAiB;IAIjB,oBAAoB;cAKJ,IAAI,CAAC,UAAU,EAAE,MAAM;YAazB,SAAS;YAYT,WAAW;CAsB1B;AAED,qBAAa,4BAA6B,SAAQ,cAAc;cAC9C,IAAI,CAAC,UAAU,EAAE,MAAM;CAUxC"}
1
+ {"version":3,"file":"gallery-elements.d.ts","sourceRoot":"","sources":["../src/gallery-elements.ts"],"names":[],"mappings":"AA+BA,QAAA,MAAM,eAAe,EAA2C,OAAO,WAAW,CAAC;AAsBnF,uBAAe,cAAe,SAAQ,eAAe;IACnD,SAAS,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC;IAC5B,OAAO,CAAC,UAAU,CAAK;IAEvB,MAAM,KAAK,kBAAkB,aAE5B;IAED,iBAAiB;IAIjB,oBAAoB;IAGpB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAGpF,SAAS,CAAC,MAAM;IAMhB,SAAS,CAAC,iBAAiB;IAC3B,SAAS,KAAK,iBAAiB,WAA8B;IAC7D,SAAS,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM;IAEtC,SAAS,KAAK,OAAO,WAAkD;IACvE,SAAS,KAAK,QAAQ,uBAAyD;IAC/E,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1D,KAAK,IAAI,WAAW;IAOpB,SAAS,CAAC,OAAO;IACjB,+FAA+F;IAC/F,SAAS,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;IAKlD,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO;IACvB,KAAK,CAAC,KAAK,EAAE,WAAW;CAS/B;AA+DD,qBAAa,wBAAyB,SAAQ,cAAc;cAC1C,IAAI,CAAC,UAAU,EAAE,MAAM;CAUxC;AAED,qBAAa,6BAA8B,SAAQ,cAAc;IAC/D,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAUvB;IAEF,iBAAiB;IAIjB,oBAAoB;cAKJ,IAAI,CAAC,UAAU,EAAE,MAAM;YAazB,SAAS;YAYT,WAAW;CAsB1B;AAED,qBAAa,4BAA6B,SAAQ,cAAc;cAC9C,IAAI,CAAC,UAAU,EAAE,MAAM;CAWxC"}
@@ -1,6 +1,6 @@
1
- import { fetchGalleries, fetchGallery, fetchRandomPhoto, fetchSiteConfig, POWERED_BY_LABEL, POWERED_BY_URL, } from "./index.js";
1
+ import { fetchGalleries, fetchGallery, fetchRandomPhoto, fetchSiteConfig, POWERED_BY_LABEL, POWERED_BY_URL, warnMissingContent, } from "./index.js";
2
2
  const styles = `
3
- :host{display:block;color:inherit;font:inherit;--jw-gap:clamp(.55rem,1.5vw,1rem)}
3
+ :host{display:block;color:inherit;font:inherit;--jw-gap:clamp(.55rem,1.5vw,1rem)}:host([hidden]){display:none}
4
4
  *{box-sizing:border-box}.state{padding:2rem;text-align:center;color:color-mix(in srgb,currentColor 60%,transparent)}
5
5
  .error{color:#b42318}.head{margin-bottom:1rem}.head h2{margin:0;font:700 clamp(1.4rem,3vw,2rem)/1.15 inherit}
6
6
  .head p{margin:.4rem 0 0;color:color-mix(in srgb,currentColor 66%,transparent)}
@@ -9,7 +9,7 @@ const styles = `
9
9
  .photo img,.cover img,.random img{display:block;width:100%;height:auto;aspect-ratio:var(--ratio,4/3);object-fit:var(--fit,cover)}
10
10
  figcaption{padding:.45rem .15rem 0;font-size:.875rem;color:color-mix(in srgb,currentColor 72%,transparent)}
11
11
  .tags{display:flex;gap:.4rem;overflow:auto;margin:0 0 1rem;padding:.1rem}.tag,.back{border:1px solid color-mix(in srgb,currentColor 20%,transparent);border-radius:999px;background:transparent;color:inherit;padding:.4rem .75rem;cursor:pointer}
12
- .tag[aria-pressed=true]{background:currentColor;color:Canvas}.index{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));gap:var(--jw-gap)}
12
+ .tag[aria-pressed=true]{background:color-mix(in srgb,currentColor 14%,transparent);border-color:currentColor;font-weight:600}.index{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,16rem),1fr));gap:var(--jw-gap)}
13
13
  .card{border:1px solid color-mix(in srgb,currentColor 15%,transparent);border-radius:1rem;overflow:hidden;background:transparent;color:inherit;text-align:left;padding:0;cursor:pointer}
14
14
  .card-copy{display:block;padding:.85rem}.card strong{display:block;font-size:1.05rem}.card small{display:block;margin-top:.2rem;color:color-mix(in srgb,currentColor 60%,transparent)}
15
15
  dialog{border:0;border-radius:1rem;padding:0;max-width:min(94vw,72rem);max-height:92vh;background:#111;color:#fff}dialog::backdrop{background:#000b}
@@ -55,6 +55,7 @@ class GalleryElement extends HTMLElementBase {
55
55
  }
56
56
  reload() {
57
57
  const generation = this.advanceGeneration();
58
+ this.hidden = false;
58
59
  this.loading();
59
60
  void this.load(generation);
60
61
  }
@@ -71,6 +72,12 @@ class GalleryElement extends HTMLElementBase {
71
72
  return frame;
72
73
  }
73
74
  loading() { const frame = this.frame(); frame.className = "state"; frame.textContent = "Loading gallery…"; }
75
+ /** Missing or unpublished content: show nothing to visitors, tell the owner in the console. */
76
+ hideMissing(widget, slug) {
77
+ this.root?.replaceChildren();
78
+ this.hidden = true;
79
+ warnMissingContent(widget, slug);
80
+ }
74
81
  fail(error) { const frame = this.frame(); frame.className = "state error"; frame.textContent = error instanceof Error ? error.message : "Gallery unavailable"; }
75
82
  async brand(frame) {
76
83
  try {
@@ -193,7 +200,7 @@ export class JamwidgetsGalleryElement extends GalleryElement {
193
200
  if (!this.isCurrent(generation))
194
201
  return;
195
202
  if (!gallery)
196
- throw new Error("Gallery not found");
203
+ return this.hideMissing("Gallery", slug);
197
204
  const frame = renderGallery(this, gallery, tag);
198
205
  await this.brand(frame);
199
206
  }
@@ -328,7 +335,7 @@ export class JamwidgetsRandomPhotoElement extends GalleryElement {
328
335
  if (!this.isCurrent(generation))
329
336
  return;
330
337
  if (!photo)
331
- throw new Error("No matching photo");
338
+ return this.hideMissing("Random photo from gallery", slug);
332
339
  const frame = this.frame();
333
340
  const figure = document.createElement("figure");
334
341
  figure.className = "random";
package/dist/index.d.ts CHANGED
@@ -132,6 +132,30 @@ export declare function setVisitorId(id: string | null): void;
132
132
  * Priority: custom ID > localStorage > generated UUID (SSR fallback)
133
133
  */
134
134
  export declare function getVisitorId(): string;
135
+ /**
136
+ * Error thrown when the Jamwidgets API answers with a non-2xx status.
137
+ * `message` is the server's own explanation when it sent one.
138
+ */
139
+ export declare class JamwidgetsApiError extends Error {
140
+ readonly status: number;
141
+ /** Server error code, e.g. "validation" or "notFound", when available */
142
+ readonly code?: string;
143
+ constructor(message: string, status: number, code?: string);
144
+ }
145
+ /**
146
+ * Build an error from a failed API response. Reads the server's
147
+ * `{ message, code }` body; falls back to `context` and the status code,
148
+ * since `statusText` is empty over HTTP/2.
149
+ */
150
+ export declare function apiError(response: Response, context: string): Promise<JamwidgetsApiError>;
151
+ /** True when the API said the requested content (poll, gallery, post…) does not exist. */
152
+ export declare function isNotFound(error: unknown): boolean;
153
+ /**
154
+ * Tell the site owner, once per page, that a widget's content is missing.
155
+ * Widgets render nothing in that case, so visitors never see an error for a
156
+ * typo'd slug or content that is not published yet.
157
+ */
158
+ export declare function warnMissingContent(widget: string, slug: string): void;
135
159
  /** Per-site config exposed at `GET /api/v1/site` (plan-derived flags). */
136
160
  export interface SiteConfig {
137
161
  name: string;
@@ -150,8 +174,17 @@ export declare function fetchSiteConfig(options: JamwidgetsConfig): Promise<Site
150
174
  export interface SubmitFormOptions extends JamwidgetsConfig {
151
175
  formSlug: string;
152
176
  data: Record<string, unknown>;
153
- /** Form load timestamp for spam detection (auto-set if not provided) */
177
+ /**
178
+ * When the form was shown, in Unix seconds. The server holds submissions
179
+ * sent within a few seconds of this for review, so pass the real load time
180
+ * (FormController does) or leave it out; never the time of submission.
181
+ */
154
182
  formLoadTime?: number;
183
+ /**
184
+ * Idempotency key. Reuse it when retrying the same submission so the
185
+ * server stores it once; a new one is generated when omitted.
186
+ */
187
+ requestId?: string;
155
188
  }
156
189
  export declare function submitForm(options: SubmitFormOptions): Promise<FormSubmitResponse>;
157
190
  export interface FetchCommentsOptions extends JamwidgetsConfig {
@@ -163,7 +196,8 @@ export interface PostCommentOptions extends JamwidgetsConfig {
163
196
  authorName: string;
164
197
  authorEmail?: string;
165
198
  content: string;
166
- parentId?: string;
199
+ /** ID of the comment being replied to, as returned in `Comment.id` */
200
+ parentId?: string | number;
167
201
  }
168
202
  export declare function postComment(options: PostCommentOptions): Promise<Comment>;
169
203
  export interface FetchReactionsOptions extends JamwidgetsConfig {
@@ -320,7 +354,12 @@ export interface DismissAnnouncementOptions extends JamwidgetsConfig {
320
354
  announcementId: number;
321
355
  }
322
356
  export declare function dismissAnnouncement(options: DismissAnnouncementOptions): Promise<void>;
323
- export type ControllerStatus = "idle" | "loading" | "success" | "error";
357
+ /**
358
+ * Lifecycle of a widget controller. `notFound` means the configured content
359
+ * (a poll slug, for example) does not exist or is not published: render
360
+ * nothing rather than an error.
361
+ */
362
+ export type ControllerStatus = "idle" | "loading" | "success" | "error" | "notFound";
324
363
  /** State for subscribe controllers */
325
364
  export interface SubscribeState {
326
365
  status: ControllerStatus;
@@ -417,6 +456,8 @@ export declare class FormController {
417
456
  private formSlug;
418
457
  private listeners;
419
458
  private loadTime;
459
+ /** Idempotency key reused while the same data is retried */
460
+ private pending;
420
461
  private _state;
421
462
  constructor(config: JamwidgetsConfig, formSlug: string);
422
463
  getState(): FormState;
@@ -460,7 +501,7 @@ export declare class CommentsController {
460
501
  fetch(): Promise<Comment[]>;
461
502
  post(authorName: string, content: string, options?: {
462
503
  authorEmail?: string;
463
- parentId?: string;
504
+ parentId?: string | number;
464
505
  }): Promise<Comment>;
465
506
  }
466
507
  /** State for feedback controllers */
@@ -506,8 +547,11 @@ export declare class PollController {
506
547
  getState(): PollState;
507
548
  subscribe(listener: ControllerListener<PollState>): () => void;
508
549
  private notify;
509
- /** Fetch poll data from the server */
510
- fetch(): Promise<PollWithResults>;
550
+ /**
551
+ * Fetch poll data from the server. Resolves `null` (status `notFound`)
552
+ * when the poll does not exist or is not published.
553
+ */
554
+ fetch(): Promise<PollWithResults | null>;
511
555
  /** Vote on the poll */
512
556
  vote(selectedOptions: string[]): Promise<VotePollResponse>;
513
557
  /** Check if user has voted */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -125,6 +125,58 @@ export function getVisitorId() {
125
125
  fallbackVisitorId = storageBlocked ? visitorId : null;
126
126
  return visitorId;
127
127
  }
128
+ /**
129
+ * Error thrown when the Jamwidgets API answers with a non-2xx status.
130
+ * `message` is the server's own explanation when it sent one.
131
+ */
132
+ export class JamwidgetsApiError extends Error {
133
+ status;
134
+ /** Server error code, e.g. "validation" or "notFound", when available */
135
+ code;
136
+ constructor(message, status, code) {
137
+ super(message);
138
+ this.name = "JamwidgetsApiError";
139
+ this.status = status;
140
+ this.code = code;
141
+ }
142
+ }
143
+ /**
144
+ * Build an error from a failed API response. Reads the server's
145
+ * `{ message, code }` body; falls back to `context` and the status code,
146
+ * since `statusText` is empty over HTTP/2.
147
+ */
148
+ export async function apiError(response, context) {
149
+ let message = "";
150
+ let code;
151
+ try {
152
+ const body = (await response.json());
153
+ if (typeof body?.message === "string")
154
+ message = body.message.trim();
155
+ if (typeof body?.code === "string")
156
+ code = body.code;
157
+ }
158
+ catch {
159
+ // Not JSON (a proxy page, an empty body): use the fallback below.
160
+ }
161
+ return new JamwidgetsApiError(message || `${context} (HTTP ${response.status})`, response.status, code);
162
+ }
163
+ /** True when the API said the requested content (poll, gallery, post…) does not exist. */
164
+ export function isNotFound(error) {
165
+ return error instanceof JamwidgetsApiError && error.status === 404;
166
+ }
167
+ const warnedMissing = new Set();
168
+ /**
169
+ * Tell the site owner, once per page, that a widget's content is missing.
170
+ * Widgets render nothing in that case, so visitors never see an error for a
171
+ * typo'd slug or content that is not published yet.
172
+ */
173
+ export function warnMissingContent(widget, slug) {
174
+ const key = `${widget}:${slug}`;
175
+ if (warnedMissing.has(key))
176
+ return;
177
+ warnedMissing.add(key);
178
+ console.warn(`[jamwidgets] ${widget} "${slug}" was not found, so it is hidden. Create or publish it in the Jamwidgets dashboard.`);
179
+ }
128
180
  /** Get common headers for API requests */
129
181
  function getHeaders(siteKey, path) {
130
182
  let visitorId;
@@ -172,13 +224,12 @@ export async function fetchSiteConfig(options) {
172
224
  return promise;
173
225
  }
174
226
  export async function submitForm(options) {
175
- const { endpoint, formSlug, data, formLoadTime } = options;
227
+ const { endpoint, formSlug, data, formLoadTime, requestId } = options;
176
228
  const siteKey = getSiteKey(options);
177
229
  const url = buildUrl(endpoint, `/forms/${formSlug}/submit`);
178
- const payload = {
179
- ...data,
180
- _seriph_ts: formLoadTime || Math.floor(Date.now() / 1000),
181
- };
230
+ const payload = { ...data, _seriph_id: requestId || generateUUID() };
231
+ if (formLoadTime)
232
+ payload._seriph_ts = formLoadTime;
182
233
  const response = await fetch(url, {
183
234
  method: "POST",
184
235
  headers: {
@@ -188,7 +239,7 @@ export async function submitForm(options) {
188
239
  body: JSON.stringify(payload),
189
240
  });
190
241
  if (!response.ok) {
191
- throw new Error(`Form submission failed: ${response.statusText}`);
242
+ throw await apiError(response, "Form submission failed");
192
243
  }
193
244
  return response.json();
194
245
  }
@@ -200,13 +251,24 @@ export async function fetchComments(options) {
200
251
  headers: getHeaders(siteKey),
201
252
  });
202
253
  if (!response.ok) {
203
- throw new Error(`Failed to fetch comments: ${response.statusText}`);
254
+ throw await apiError(response, "Failed to fetch comments");
204
255
  }
205
256
  const data = await response.json();
206
257
  return data.comment_threads || [];
207
258
  }
259
+ /** Comment IDs arrive as strings; the API takes the parent as an integer. */
260
+ function commentParentId(parentId) {
261
+ if (parentId === undefined || parentId === "")
262
+ return undefined;
263
+ const text = String(parentId).trim();
264
+ if (!/^\d+$/.test(text) || !Number.isSafeInteger(Number(text))) {
265
+ throw new Error(`Invalid parentId "${parentId}": expected a comment ID`);
266
+ }
267
+ return Number(text);
268
+ }
208
269
  export async function postComment(options) {
209
- const { endpoint, pageId, authorName, authorEmail, content, parentId } = options;
270
+ const { endpoint, pageId, authorName, authorEmail, content } = options;
271
+ const parentId = commentParentId(options.parentId);
210
272
  const siteKey = getSiteKey(options);
211
273
  const url = buildUrl(endpoint, `/comments/${encodeURIComponent(pageId)}`);
212
274
  const response = await fetch(url, {
@@ -223,7 +285,7 @@ export async function postComment(options) {
223
285
  }),
224
286
  });
225
287
  if (!response.ok) {
226
- throw new Error(`Failed to post comment: ${response.statusText}`);
288
+ throw await apiError(response, "Failed to post comment");
227
289
  }
228
290
  const data = await response.json();
229
291
  return data.comment;
@@ -236,7 +298,7 @@ export async function fetchReactions(options) {
236
298
  headers: getHeaders(siteKey),
237
299
  });
238
300
  if (!response.ok) {
239
- throw new Error(`Failed to fetch reactions: ${response.statusText}`);
301
+ throw await apiError(response, "Failed to fetch reactions");
240
302
  }
241
303
  const data = await response.json();
242
304
  const result = data.reaction_counts_with_user;
@@ -258,7 +320,7 @@ export async function addReaction(options) {
258
320
  body: JSON.stringify({ reactionType }),
259
321
  });
260
322
  if (!response.ok) {
261
- throw new Error(`Failed to add reaction: ${response.statusText}`);
323
+ throw await apiError(response, "Failed to add reaction");
262
324
  }
263
325
  const data = await response.json();
264
326
  return data.reaction;
@@ -276,7 +338,7 @@ export async function removeReaction(options) {
276
338
  body: JSON.stringify({ reactionType }),
277
339
  });
278
340
  if (!response.ok) {
279
- throw new Error(`Failed to remove reaction: ${response.statusText}`);
341
+ throw await apiError(response, "Failed to remove reaction");
280
342
  }
281
343
  const data = await response.json();
282
344
  return data.reaction;
@@ -294,7 +356,7 @@ export async function subscribe(options) {
294
356
  body: JSON.stringify({ email }),
295
357
  });
296
358
  if (!response.ok) {
297
- throw new Error(`Subscription failed: ${response.statusText}`);
359
+ throw await apiError(response, "Subscription failed");
298
360
  }
299
361
  return response.json();
300
362
  }
@@ -311,7 +373,7 @@ export async function fetchPosts(options) {
311
373
  headers: getHeaders(siteKey),
312
374
  });
313
375
  if (!response.ok) {
314
- throw new Error(`Failed to fetch posts: ${response.status} ${response.statusText}`);
376
+ throw await apiError(response, "Failed to fetch posts");
315
377
  }
316
378
  const data = await response.json();
317
379
  return data.posts;
@@ -327,7 +389,7 @@ export async function fetchPost(options) {
327
389
  return null;
328
390
  }
329
391
  if (!response.ok) {
330
- throw new Error(`Failed to fetch post: ${response.status} ${response.statusText}`);
392
+ throw await apiError(response, "Failed to fetch post");
331
393
  }
332
394
  const data = await response.json();
333
395
  return data.public_post || data;
@@ -345,7 +407,7 @@ export async function fetchGalleries(options) {
345
407
  },
346
408
  });
347
409
  if (!response.ok)
348
- throw new Error(`Failed to fetch galleries: ${response.status}`);
410
+ throw await apiError(response, "Failed to fetch galleries");
349
411
  return response.json();
350
412
  }
351
413
  export async function fetchGallery(options) {
@@ -362,7 +424,7 @@ export async function fetchGallery(options) {
362
424
  if (response.status === 404)
363
425
  return null;
364
426
  if (!response.ok)
365
- throw new Error(`Failed to fetch gallery: ${response.status}`);
427
+ throw await apiError(response, "Failed to fetch gallery");
366
428
  const data = await response.json();
367
429
  return data.gallery ?? data;
368
430
  }
@@ -382,7 +444,7 @@ export async function fetchRandomPhoto(options) {
382
444
  if (response.status === 404)
383
445
  return null;
384
446
  if (!response.ok)
385
- throw new Error(`Failed to fetch random photo: ${response.status}`);
447
+ throw await apiError(response, "Failed to fetch random photo");
386
448
  const data = await response.json();
387
449
  return data.gallery_photo ?? data.galleryPhoto ?? data;
388
450
  }
@@ -399,7 +461,7 @@ export async function joinWaitlist(options) {
399
461
  body: JSON.stringify({ email, name, source }),
400
462
  });
401
463
  if (!response.ok) {
402
- throw new Error(`Failed to join waitlist: ${response.statusText}`);
464
+ throw await apiError(response, "Failed to join waitlist");
403
465
  }
404
466
  return response.json();
405
467
  }
@@ -411,7 +473,7 @@ export async function getViewCounts(options) {
411
473
  headers: getHeaders(siteKey),
412
474
  });
413
475
  if (!response.ok) {
414
- throw new Error(`Failed to get view counts: ${response.statusText}`);
476
+ throw await apiError(response, "Failed to get view counts");
415
477
  }
416
478
  const data = await response.json();
417
479
  return data.page_view_counts;
@@ -425,7 +487,7 @@ export async function recordView(options) {
425
487
  headers: getHeaders(siteKey),
426
488
  });
427
489
  if (!response.ok) {
428
- throw new Error(`Failed to record view: ${response.statusText}`);
490
+ throw await apiError(response, "Failed to record view");
429
491
  }
430
492
  const data = await response.json();
431
493
  return data.record_view_response;
@@ -448,19 +510,19 @@ export async function submitFeedback(options) {
448
510
  }),
449
511
  });
450
512
  if (!response.ok) {
451
- throw new Error(`Failed to submit feedback: ${response.statusText}`);
513
+ throw await apiError(response, "Failed to submit feedback");
452
514
  }
453
515
  return response.json();
454
516
  }
455
517
  export async function fetchPoll(options) {
456
518
  const { endpoint, slug } = options;
457
519
  const siteKey = getSiteKey(options);
458
- const url = buildUrl(endpoint, `/polls/${slug}`);
520
+ const url = buildUrl(endpoint, `/polls/${encodeURIComponent(slug)}`);
459
521
  const response = await fetch(url, {
460
522
  headers: getHeaders(siteKey),
461
523
  });
462
524
  if (!response.ok) {
463
- throw new Error(`Failed to fetch poll: ${response.statusText}`);
525
+ throw await apiError(response, "Failed to fetch poll");
464
526
  }
465
527
  const data = await response.json();
466
528
  return data.poll_with_results;
@@ -478,7 +540,7 @@ export async function votePoll(options) {
478
540
  body: JSON.stringify({ selectedOptions }),
479
541
  });
480
542
  if (!response.ok) {
481
- throw new Error(`Failed to vote: ${response.statusText}`);
543
+ throw await apiError(response, "Failed to vote");
482
544
  }
483
545
  const data = await response.json();
484
546
  return data.vote_response;
@@ -491,7 +553,7 @@ export async function fetchAnnouncements(options) {
491
553
  headers: getHeaders(siteKey),
492
554
  });
493
555
  if (!response.ok) {
494
- throw new Error(`Failed to fetch announcements: ${response.statusText}`);
556
+ throw await apiError(response, "Failed to fetch announcements");
495
557
  }
496
558
  const data = await response.json();
497
559
  return data.announcements || [];
@@ -505,7 +567,7 @@ export async function dismissAnnouncement(options) {
505
567
  headers: getHeaders(siteKey),
506
568
  });
507
569
  if (!response.ok) {
508
- throw new Error(`Failed to dismiss announcement: ${response.statusText}`);
570
+ throw await apiError(response, "Failed to dismiss announcement");
509
571
  }
510
572
  }
511
573
  /**
@@ -639,6 +701,8 @@ export class FormController {
639
701
  formSlug;
640
702
  listeners = new Set();
641
703
  loadTime;
704
+ /** Idempotency key reused while the same data is retried */
705
+ pending = null;
642
706
  _state = { status: "idle", message: null, error: null };
643
707
  constructor(config, formSlug) {
644
708
  this.config = config;
@@ -663,12 +727,21 @@ export class FormController {
663
727
  this._state = { status: "loading", message: null, error: null };
664
728
  this.notify();
665
729
  try {
730
+ const body = JSON.stringify(data);
731
+ if (this.pending?.body !== body) {
732
+ this.pending = { body, requestId: generateUUID() };
733
+ }
734
+ const attempt = this.pending;
666
735
  const result = await submitForm({
667
736
  ...this.config,
668
737
  formSlug: this.formSlug,
669
738
  data,
670
739
  formLoadTime: this.loadTime,
740
+ requestId: attempt.requestId,
671
741
  });
742
+ // An overlapping submit with other data may own the key by now.
743
+ if (this.pending === attempt)
744
+ this.pending = null;
672
745
  this._state = { status: "success", message: result.message, error: null };
673
746
  this.notify();
674
747
  return result;
@@ -683,6 +756,7 @@ export class FormController {
683
756
  reset() {
684
757
  this._state = { status: "idle", message: null, error: null };
685
758
  this.loadTime = Math.floor(Date.now() / 1000);
759
+ this.pending = null;
686
760
  this.notify();
687
761
  }
688
762
  }
@@ -912,7 +986,10 @@ export class PollController {
912
986
  listener(state);
913
987
  }
914
988
  }
915
- /** Fetch poll data from the server */
989
+ /**
990
+ * Fetch poll data from the server. Resolves `null` (status `notFound`)
991
+ * when the poll does not exist or is not published.
992
+ */
916
993
  async fetch() {
917
994
  this._state = { ...this._state, status: "loading", error: null };
918
995
  this.notify();
@@ -923,6 +1000,12 @@ export class PollController {
923
1000
  return poll;
924
1001
  }
925
1002
  catch (e) {
1003
+ if (isNotFound(e)) {
1004
+ warnMissingContent("Poll", this.slug);
1005
+ this._state = { poll: null, status: "notFound", error: null };
1006
+ this.notify();
1007
+ return null;
1008
+ }
926
1009
  const error = e instanceof Error ? e : new Error(String(e));
927
1010
  this._state = { ...this._state, status: "error", error };
928
1011
  this.notify();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jamwidgets/core",
3
- "version": "0.5.3",
3
+ "version": "0.7.0",
4
4
  "description": "Framework-agnostic API client and types for Jamwidgets",
5
5
  "repository": {
6
6
  "type": "git",