@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 +35 -2
- package/dist/gallery-elements.d.ts +2 -0
- package/dist/gallery-elements.d.ts.map +1 -1
- package/dist/gallery-elements.js +12 -5
- package/dist/index.d.ts +50 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +111 -28
- package/package.json +1 -1
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.
|
|
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:
|
|
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":"
|
|
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"}
|
package/dist/gallery-elements.js
CHANGED
|
@@ -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:
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
/**
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
/**
|
|
510
|
-
|
|
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 */
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
-
|
|
180
|
-
_seriph_ts
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
/**
|
|
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();
|