@jamwidgets/core 0.5.2 → 0.6.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 +28 -1
- package/dist/attribution.d.ts.map +1 -1
- package/dist/attribution.js +17 -12
- package/dist/gallery-elements.js +1 -1
- package/dist/index.d.ts +32 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +102 -46
- package/dist/uuid.d.ts +2 -0
- package/dist/uuid.d.ts.map +1 -0
- package/dist/uuid.js +18 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -42,7 +42,7 @@ await postComment({
|
|
|
42
42
|
authorName: "John",
|
|
43
43
|
content: "Great post!",
|
|
44
44
|
authorEmail: "john@example.com", // optional
|
|
45
|
-
parentId:
|
|
45
|
+
parentId: comment.id, // optional, for replies: the ID of the comment being answered
|
|
46
46
|
});
|
|
47
47
|
```
|
|
48
48
|
|
|
@@ -77,6 +77,10 @@ await removeReaction({
|
|
|
77
77
|
```ts
|
|
78
78
|
import { submitForm } from "@jamwidgets/core";
|
|
79
79
|
|
|
80
|
+
// When the form was shown, in Unix seconds. Submissions sent within a few
|
|
81
|
+
// seconds of this are held for review, so record it on render, not on submit.
|
|
82
|
+
const formLoadTime = Math.floor(Date.now() / 1000);
|
|
83
|
+
|
|
80
84
|
await submitForm({
|
|
81
85
|
siteKey: "your-key",
|
|
82
86
|
formSlug: "contact",
|
|
@@ -85,9 +89,32 @@ await submitForm({
|
|
|
85
89
|
email: "john@example.com",
|
|
86
90
|
message: "Hello!",
|
|
87
91
|
},
|
|
92
|
+
formLoadTime,
|
|
88
93
|
});
|
|
89
94
|
```
|
|
90
95
|
|
|
96
|
+
Each call sends a new idempotency key. To retry the same submission without
|
|
97
|
+
storing it twice, pass the same `requestId` again, or use `FormController`,
|
|
98
|
+
which keeps the load time and retry key for you.
|
|
99
|
+
|
|
100
|
+
### Errors
|
|
101
|
+
|
|
102
|
+
A failed request throws a `JamwidgetsApiError` whose `message` is the
|
|
103
|
+
server's explanation (for example "Email is invalid"), with `status` and
|
|
104
|
+
`code` (such as `"validation"`) for branching:
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
import { JamwidgetsApiError, subscribe } from "@jamwidgets/core";
|
|
108
|
+
|
|
109
|
+
try {
|
|
110
|
+
await subscribe({ siteKey: "your-key", email });
|
|
111
|
+
} catch (error) {
|
|
112
|
+
if (error instanceof JamwidgetsApiError && error.code === "validation") {
|
|
113
|
+
showFieldError(error.message);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
91
118
|
### Subscriptions
|
|
92
119
|
|
|
93
120
|
```ts
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attribution.d.ts","sourceRoot":"","sources":["../src/attribution.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attribution.d.ts","sourceRoot":"","sources":["../src/attribution.ts"],"names":[],"mappings":"AAKA,wBAAgB,YAAY,IAAI,MAAM,CAUrC;AAED,wBAAgB,qBAAqB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO3E"}
|
package/dist/attribution.js
CHANGED
|
@@ -1,23 +1,28 @@
|
|
|
1
|
+
import { generateUUID } from "./uuid.js";
|
|
1
2
|
const SESSION_KEY = "jamwidgets_session_id";
|
|
2
|
-
|
|
3
|
-
return typeof crypto !== "undefined" && crypto.randomUUID
|
|
4
|
-
? crypto.randomUUID()
|
|
5
|
-
: `${Date.now()}-${Math.random().toString(36).slice(2)}`;
|
|
6
|
-
}
|
|
3
|
+
let fallbackSessionId = null;
|
|
7
4
|
export function getSessionId() {
|
|
8
5
|
if (typeof window === "undefined")
|
|
9
|
-
return
|
|
6
|
+
return generateUUID();
|
|
7
|
+
let id = "";
|
|
8
|
+
let storageBlocked = false;
|
|
10
9
|
try {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
10
|
+
id = sessionStorage.getItem(SESSION_KEY) || "";
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
storageBlocked = true;
|
|
14
|
+
}
|
|
15
|
+
if (id)
|
|
16
16
|
return id;
|
|
17
|
+
id = fallbackSessionId ?? generateUUID();
|
|
18
|
+
try {
|
|
19
|
+
sessionStorage.setItem(SESSION_KEY, id);
|
|
17
20
|
}
|
|
18
21
|
catch {
|
|
19
|
-
|
|
22
|
+
storageBlocked = true;
|
|
20
23
|
}
|
|
24
|
+
fallbackSessionId = storageBlocked ? id : null;
|
|
25
|
+
return id;
|
|
21
26
|
}
|
|
22
27
|
export function getAttributionHeaders(path) {
|
|
23
28
|
if (typeof window === "undefined")
|
package/dist/gallery-elements.js
CHANGED
|
@@ -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}
|
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare const DEFAULT_ENDPOINT = "https://jamwidgets.com";
|
|
|
8
8
|
export declare const API_PATH = "/api/v1";
|
|
9
9
|
export declare const VISITOR_STORAGE_KEY = "jamwidgets_visitor_id";
|
|
10
10
|
export { getAttributionHeaders, getSessionId } from "./attribution.js";
|
|
11
|
+
export { generateUUID } from "./uuid.js";
|
|
11
12
|
export interface JamwidgetsConfig {
|
|
12
13
|
/** Your site key (required) */
|
|
13
14
|
siteKey: string;
|
|
@@ -120,8 +121,6 @@ export declare function getConfigFromMeta(): {
|
|
|
120
121
|
export declare function getSiteKey(config: JamwidgetsConfig): string;
|
|
121
122
|
/** Resolve full config, merging props with meta tag fallbacks */
|
|
122
123
|
export declare function resolveConfig(config: Partial<JamwidgetsConfig>): JamwidgetsConfig;
|
|
123
|
-
/** Generate a random UUID v4 */
|
|
124
|
-
export declare function generateUUID(): string;
|
|
125
124
|
/**
|
|
126
125
|
* Set a custom visitor ID (e.g., authenticated user ID).
|
|
127
126
|
* Useful for non-static sites where you have user sessions.
|
|
@@ -133,6 +132,22 @@ export declare function setVisitorId(id: string | null): void;
|
|
|
133
132
|
* Priority: custom ID > localStorage > generated UUID (SSR fallback)
|
|
134
133
|
*/
|
|
135
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>;
|
|
136
151
|
/** Per-site config exposed at `GET /api/v1/site` (plan-derived flags). */
|
|
137
152
|
export interface SiteConfig {
|
|
138
153
|
name: string;
|
|
@@ -151,8 +166,17 @@ export declare function fetchSiteConfig(options: JamwidgetsConfig): Promise<Site
|
|
|
151
166
|
export interface SubmitFormOptions extends JamwidgetsConfig {
|
|
152
167
|
formSlug: string;
|
|
153
168
|
data: Record<string, unknown>;
|
|
154
|
-
/**
|
|
169
|
+
/**
|
|
170
|
+
* When the form was shown, in Unix seconds. The server holds submissions
|
|
171
|
+
* sent within a few seconds of this for review, so pass the real load time
|
|
172
|
+
* (FormController does) or leave it out; never the time of submission.
|
|
173
|
+
*/
|
|
155
174
|
formLoadTime?: number;
|
|
175
|
+
/**
|
|
176
|
+
* Idempotency key. Reuse it when retrying the same submission so the
|
|
177
|
+
* server stores it once; a new one is generated when omitted.
|
|
178
|
+
*/
|
|
179
|
+
requestId?: string;
|
|
156
180
|
}
|
|
157
181
|
export declare function submitForm(options: SubmitFormOptions): Promise<FormSubmitResponse>;
|
|
158
182
|
export interface FetchCommentsOptions extends JamwidgetsConfig {
|
|
@@ -164,7 +188,8 @@ export interface PostCommentOptions extends JamwidgetsConfig {
|
|
|
164
188
|
authorName: string;
|
|
165
189
|
authorEmail?: string;
|
|
166
190
|
content: string;
|
|
167
|
-
|
|
191
|
+
/** ID of the comment being replied to, as returned in `Comment.id` */
|
|
192
|
+
parentId?: string | number;
|
|
168
193
|
}
|
|
169
194
|
export declare function postComment(options: PostCommentOptions): Promise<Comment>;
|
|
170
195
|
export interface FetchReactionsOptions extends JamwidgetsConfig {
|
|
@@ -418,6 +443,8 @@ export declare class FormController {
|
|
|
418
443
|
private formSlug;
|
|
419
444
|
private listeners;
|
|
420
445
|
private loadTime;
|
|
446
|
+
/** Idempotency key reused while the same data is retried */
|
|
447
|
+
private pending;
|
|
421
448
|
private _state;
|
|
422
449
|
constructor(config: JamwidgetsConfig, formSlug: string);
|
|
423
450
|
getState(): FormState;
|
|
@@ -461,7 +488,7 @@ export declare class CommentsController {
|
|
|
461
488
|
fetch(): Promise<Comment[]>;
|
|
462
489
|
post(authorName: string, content: string, options?: {
|
|
463
490
|
authorEmail?: string;
|
|
464
|
-
parentId?: string;
|
|
491
|
+
parentId?: string | number;
|
|
465
492
|
}): Promise<Comment>;
|
|
466
493
|
}
|
|
467
494
|
/** State for feedback controllers */
|
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":"AAAA;;;;;GAKG;AAMH,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AACzD,eAAO,MAAM,QAAQ,YAAY,CAAC;AAClC,eAAO,MAAM,mBAAmB,0BAA0B,CAAC;AAE3D,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGvE,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAMzC,MAAM,WAAW,gBAAgB;IAC/B,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,+CAA+C;AAC/C,MAAM,MAAM,YAAY,GAAG,gBAAgB,CAAC;AAE5C,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,iEAAiE;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,mBAAmB,EAAE,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC1C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,6CAA6C;AAC7C,MAAM,MAAM,UAAU,GAAG,cAAc,CAAC;AAMxC,gDAAgD;AAChD,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG3E;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,iBAAiB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAmBjF;AAED,0DAA0D;AAC1D,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,CAc3D;AAED,iEAAiE;AACjE,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,gBAAgB,CAAC,GAAG,gBAAgB,CAcjF;AAUD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAEpD;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAerC;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;CAM3D;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAW/F;AAyBD,0EAA0E;AAC1E,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,yCAAyC;AACzC,eAAO,MAAM,cAAc,kDAAkD,CAAC;AAC9E,eAAO,MAAM,gBAAgB,0BAA0B,CAAC;AAIxD;;;GAGG;AACH,wBAAsB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,CAkB3F;AAMD,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAsBxF;AAMD,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAerF;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B;AAYD,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,OAAO,CAAC,CA0B/E;AAMD,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,4EAA4E;IAC5E,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAmBpG;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB;IAC1D,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBlD;AAED,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC;IAAE,YAAY,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAoBlD;AAMD,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,KAAK,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmBrF;AAMD,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,0BAA0B;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAqBtF;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAmBzF;AAMD,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAazF;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,CAclG;AAED,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,uBAAuB,GAAG,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAerG;AAMD,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,4DAA4D;IAC5D,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,wDAAwD;IACxD,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAmB9F;AAMD,MAAM,WAAW,iBAAkB,SAAQ,gBAAgB;IACzD,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAmB,SAAQ,UAAU;IACpD,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAenF;AAED,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAgBxF;AAMD,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,SAAS,GAAG,SAAS,CAAC;AAEzD,MAAM,WAAW,qBAAsB,SAAQ,gBAAgB;IAC7D,IAAI,EAAE,YAAY,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAwBpG;AAMD,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,YAAY,GAAG,WAAW,GAAG,OAAO,CAAC;AAE9E,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,QAAQ,EAAE,YAAY,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAgB,SAAQ,IAAI;IAC3C,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;IACnB,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC,CAenF;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoBlF;AAMD,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;CAAG;AAEtE,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAepG;AAED,MAAM,WAAW,0BAA2B,SAAQ,gBAAgB;IAClE,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,0BAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAa5F;AAMD,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAExE,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,iCAAiC;AACjC,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC;CAClB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAsD;IACvE,OAAO,CAAC,MAAM,CAAkE;gBAEpE,MAAM,EAAE,gBAAgB;IAIpC,wBAAwB;IACxB,QAAQ,IAAI,cAAc;IAI1B,iCAAiC;IACjC,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,cAAc,CAAC,GAAG,MAAM,IAAI;IAOnE,OAAO,CAAC,MAAM;IAOd,oCAAoC;IAC9B,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAiBvD,0BAA0B;IAC1B,KAAK,IAAI,IAAI;CAId;AAED;;;;;;;;;;GAUG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAqD;IACtE,OAAO,CAAC,MAAM,CAAiF;gBAEnF,MAAM,EAAE,gBAAgB;IAIpC,QAAQ,IAAI,aAAa;IAIzB,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,aAAa,CAAC,GAAG,MAAM,IAAI;IAMlE,OAAO,CAAC,MAAM;IAOd,wBAAwB;IAClB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,oBAAoB,CAAC;IA2BtG,KAAK,IAAI,IAAI;CAId;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,SAAS,CAAiD;IAClE,OAAO,CAAC,QAAQ,CAAS;IACzB,4DAA4D;IAC5D,OAAO,CAAC,OAAO,CAAoD;IACnE,OAAO,CAAC,MAAM,CAA6D;gBAE/D,MAAM,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM;IAMtD,QAAQ,IAAI,SAAS;IAIrB,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI;IAM9D,OAAO,CAAC,MAAM;IAOR,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA8BxE,KAAK,IAAI,IAAI;CAMd;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAsD;IACvE,OAAO,CAAC,MAAM,CAAkF;gBAEpF,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM;IAKpD,QAAQ,IAAI,cAAc;IAI1B,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,cAAc,CAAC,GAAG,MAAM,IAAI;IAMnE,OAAO,CAAC,MAAM;IAOd,sCAAsC;IAChC,KAAK,IAAI,OAAO,CAAC,cAAc,CAAC;IAuBhC,GAAG,CAAC,YAAY,GAAE,MAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAgBjD,MAAM,CAAC,YAAY,GAAE,MAAe,GAAG,OAAO,CAAC,IAAI,CAAC;CAa3D;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAqD;IACtE,OAAO,CAAC,MAAM,CAAgE;gBAElE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM;IAKpD,QAAQ,IAAI,aAAa;IAIzB,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,aAAa,CAAC,GAAG,MAAM,IAAI;IAMlE,OAAO,CAAC,MAAM;IAOd,qCAAqC;IAC/B,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAiB3B,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC;CAoBlI;AAED,qCAAqC;AACrC,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,gBAAgB,CAAC;IACzB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAAqD;IACtE,OAAO,CAAC,MAAM,CAAiE;gBAEnE,MAAM,EAAE,gBAAgB;IAIpC,QAAQ,IAAI,aAAa;IAIzB,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,aAAa,CAAC,GAAG,MAAM,IAAI;IAMlE,OAAO,CAAC,MAAM;IAOR,MAAM,CACV,IAAI,EAAE,YAAY,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7C,OAAO,CAAC,sBAAsB,CAAC;IAuBlC,KAAK,IAAI,IAAI;CAId;AAED,iCAAiC;AACjC,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,eAAe,GAAG,IAAI,CAAC;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,SAAS,CAAiD;IAClE,OAAO,CAAC,MAAM,CAA0D;gBAE5D,MAAM,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM;IAKlD,QAAQ,IAAI,SAAS;IAIrB,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,MAAM,IAAI;IAM9D,OAAO,CAAC,MAAM;IAOd,sCAAsC;IAChC,KAAK,IAAI,OAAO,CAAC,eAAe,CAAC;IAiBvC,uBAAuB;IACjB,IAAI,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA0BhE,8BAA8B;IAC9B,QAAQ,IAAI,OAAO;CAGpB;AAED,0CAA0C;AAC1C,MAAM,WAAW,kBAAkB;IACjC,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACvB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,uBAAuB;IAClC,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,SAAS,CAA0D;IAC3E,OAAO,CAAC,MAAM,CAKZ;gBAEU,MAAM,EAAE,gBAAgB;IAIpC,QAAQ,IAAI,kBAAkB;IAQ9B,gDAAgD;IAChD,uBAAuB,IAAI,YAAY,EAAE;IAIzC,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,kBAAkB,CAAC,GAAG,MAAM,IAAI;IAMvE,OAAO,CAAC,MAAM;IAOd,0CAA0C;IACpC,KAAK,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAiBtC,8BAA8B;IACxB,OAAO,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAYrD;AAED,wCAAwC;AACxC,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,EAAE,gBAAgB,CAAC;IACzB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAmB;IACjC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAuD;IACxE,OAAO,CAAC,MAAM,CAAkB;gBAEpB,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM;IAMpD,QAAQ,IAAI,eAAe;IAI3B,SAAS,CAAC,QAAQ,EAAE,kBAAkB,CAAC,eAAe,CAAC,GAAG,MAAM,IAAI;IAMpE,OAAO,CAAC,MAAM;IAOd,wCAAwC;IAClC,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC;IAuBlC,6EAA6E;IACvE,MAAM,IAAI,OAAO,CAAC,kBAAkB,CAAC;CAiB5C;AAED,OAAO,EACL,aAAa,EACb,aAAa,EACb,KAAK,oBAAoB,GAC1B,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -12,6 +12,8 @@ export const API_PATH = "/api/v1";
|
|
|
12
12
|
export const VISITOR_STORAGE_KEY = "jamwidgets_visitor_id";
|
|
13
13
|
export { getAttributionHeaders, getSessionId } from "./attribution.js";
|
|
14
14
|
import { getAttributionHeaders } from "./attribution.js";
|
|
15
|
+
import { generateUUID } from "./uuid.js";
|
|
16
|
+
export { generateUUID } from "./uuid.js";
|
|
15
17
|
// =============================================================================
|
|
16
18
|
// Helpers
|
|
17
19
|
// =============================================================================
|
|
@@ -83,19 +85,7 @@ export function resolveConfig(config) {
|
|
|
83
85
|
// =============================================================================
|
|
84
86
|
/** Custom visitor ID set by the site (e.g., authenticated user ID) */
|
|
85
87
|
let customVisitorId = null;
|
|
86
|
-
|
|
87
|
-
export function generateUUID() {
|
|
88
|
-
// Use crypto.randomUUID if available, otherwise fallback
|
|
89
|
-
if (typeof crypto !== "undefined" && crypto.randomUUID) {
|
|
90
|
-
return crypto.randomUUID();
|
|
91
|
-
}
|
|
92
|
-
// Fallback for older environments
|
|
93
|
-
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (c) => {
|
|
94
|
-
const r = (Math.random() * 16) | 0;
|
|
95
|
-
const v = c === "x" ? r : (r & 0x3) | 0x8;
|
|
96
|
-
return v.toString(16);
|
|
97
|
-
});
|
|
98
|
-
}
|
|
88
|
+
let fallbackVisitorId = null;
|
|
99
89
|
/**
|
|
100
90
|
* Set a custom visitor ID (e.g., authenticated user ID).
|
|
101
91
|
* Useful for non-static sites where you have user sessions.
|
|
@@ -113,19 +103,63 @@ export function getVisitorId() {
|
|
|
113
103
|
if (customVisitorId) {
|
|
114
104
|
return customVisitorId;
|
|
115
105
|
}
|
|
116
|
-
|
|
117
|
-
if (typeof window === "undefined" || typeof localStorage === "undefined") {
|
|
118
|
-
// Return a temporary UUID for SSR - will be replaced client-side
|
|
106
|
+
if (typeof window === "undefined")
|
|
119
107
|
return generateUUID();
|
|
108
|
+
let visitorId = "";
|
|
109
|
+
let storageBlocked = false;
|
|
110
|
+
try {
|
|
111
|
+
visitorId = localStorage.getItem(VISITOR_STORAGE_KEY) || "";
|
|
120
112
|
}
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
113
|
+
catch {
|
|
114
|
+
storageBlocked = true;
|
|
115
|
+
}
|
|
116
|
+
if (visitorId)
|
|
117
|
+
return visitorId;
|
|
118
|
+
visitorId = fallbackVisitorId ?? generateUUID();
|
|
119
|
+
try {
|
|
125
120
|
localStorage.setItem(VISITOR_STORAGE_KEY, visitorId);
|
|
126
121
|
}
|
|
122
|
+
catch {
|
|
123
|
+
storageBlocked = true;
|
|
124
|
+
}
|
|
125
|
+
fallbackVisitorId = storageBlocked ? visitorId : null;
|
|
127
126
|
return visitorId;
|
|
128
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
|
+
}
|
|
129
163
|
/** Get common headers for API requests */
|
|
130
164
|
function getHeaders(siteKey, path) {
|
|
131
165
|
let visitorId;
|
|
@@ -173,13 +207,12 @@ export async function fetchSiteConfig(options) {
|
|
|
173
207
|
return promise;
|
|
174
208
|
}
|
|
175
209
|
export async function submitForm(options) {
|
|
176
|
-
const { endpoint, formSlug, data, formLoadTime } = options;
|
|
210
|
+
const { endpoint, formSlug, data, formLoadTime, requestId } = options;
|
|
177
211
|
const siteKey = getSiteKey(options);
|
|
178
212
|
const url = buildUrl(endpoint, `/forms/${formSlug}/submit`);
|
|
179
|
-
const payload = {
|
|
180
|
-
|
|
181
|
-
_seriph_ts
|
|
182
|
-
};
|
|
213
|
+
const payload = { ...data, _seriph_id: requestId || generateUUID() };
|
|
214
|
+
if (formLoadTime)
|
|
215
|
+
payload._seriph_ts = formLoadTime;
|
|
183
216
|
const response = await fetch(url, {
|
|
184
217
|
method: "POST",
|
|
185
218
|
headers: {
|
|
@@ -189,7 +222,7 @@ export async function submitForm(options) {
|
|
|
189
222
|
body: JSON.stringify(payload),
|
|
190
223
|
});
|
|
191
224
|
if (!response.ok) {
|
|
192
|
-
throw
|
|
225
|
+
throw await apiError(response, "Form submission failed");
|
|
193
226
|
}
|
|
194
227
|
return response.json();
|
|
195
228
|
}
|
|
@@ -201,13 +234,24 @@ export async function fetchComments(options) {
|
|
|
201
234
|
headers: getHeaders(siteKey),
|
|
202
235
|
});
|
|
203
236
|
if (!response.ok) {
|
|
204
|
-
throw
|
|
237
|
+
throw await apiError(response, "Failed to fetch comments");
|
|
205
238
|
}
|
|
206
239
|
const data = await response.json();
|
|
207
240
|
return data.comment_threads || [];
|
|
208
241
|
}
|
|
242
|
+
/** Comment IDs arrive as strings; the API takes the parent as an integer. */
|
|
243
|
+
function commentParentId(parentId) {
|
|
244
|
+
if (parentId === undefined || parentId === "")
|
|
245
|
+
return undefined;
|
|
246
|
+
const text = String(parentId).trim();
|
|
247
|
+
if (!/^\d+$/.test(text) || !Number.isSafeInteger(Number(text))) {
|
|
248
|
+
throw new Error(`Invalid parentId "${parentId}": expected a comment ID`);
|
|
249
|
+
}
|
|
250
|
+
return Number(text);
|
|
251
|
+
}
|
|
209
252
|
export async function postComment(options) {
|
|
210
|
-
const { endpoint, pageId, authorName, authorEmail, content
|
|
253
|
+
const { endpoint, pageId, authorName, authorEmail, content } = options;
|
|
254
|
+
const parentId = commentParentId(options.parentId);
|
|
211
255
|
const siteKey = getSiteKey(options);
|
|
212
256
|
const url = buildUrl(endpoint, `/comments/${encodeURIComponent(pageId)}`);
|
|
213
257
|
const response = await fetch(url, {
|
|
@@ -224,7 +268,7 @@ export async function postComment(options) {
|
|
|
224
268
|
}),
|
|
225
269
|
});
|
|
226
270
|
if (!response.ok) {
|
|
227
|
-
throw
|
|
271
|
+
throw await apiError(response, "Failed to post comment");
|
|
228
272
|
}
|
|
229
273
|
const data = await response.json();
|
|
230
274
|
return data.comment;
|
|
@@ -237,7 +281,7 @@ export async function fetchReactions(options) {
|
|
|
237
281
|
headers: getHeaders(siteKey),
|
|
238
282
|
});
|
|
239
283
|
if (!response.ok) {
|
|
240
|
-
throw
|
|
284
|
+
throw await apiError(response, "Failed to fetch reactions");
|
|
241
285
|
}
|
|
242
286
|
const data = await response.json();
|
|
243
287
|
const result = data.reaction_counts_with_user;
|
|
@@ -259,7 +303,7 @@ export async function addReaction(options) {
|
|
|
259
303
|
body: JSON.stringify({ reactionType }),
|
|
260
304
|
});
|
|
261
305
|
if (!response.ok) {
|
|
262
|
-
throw
|
|
306
|
+
throw await apiError(response, "Failed to add reaction");
|
|
263
307
|
}
|
|
264
308
|
const data = await response.json();
|
|
265
309
|
return data.reaction;
|
|
@@ -277,7 +321,7 @@ export async function removeReaction(options) {
|
|
|
277
321
|
body: JSON.stringify({ reactionType }),
|
|
278
322
|
});
|
|
279
323
|
if (!response.ok) {
|
|
280
|
-
throw
|
|
324
|
+
throw await apiError(response, "Failed to remove reaction");
|
|
281
325
|
}
|
|
282
326
|
const data = await response.json();
|
|
283
327
|
return data.reaction;
|
|
@@ -295,7 +339,7 @@ export async function subscribe(options) {
|
|
|
295
339
|
body: JSON.stringify({ email }),
|
|
296
340
|
});
|
|
297
341
|
if (!response.ok) {
|
|
298
|
-
throw
|
|
342
|
+
throw await apiError(response, "Subscription failed");
|
|
299
343
|
}
|
|
300
344
|
return response.json();
|
|
301
345
|
}
|
|
@@ -312,7 +356,7 @@ export async function fetchPosts(options) {
|
|
|
312
356
|
headers: getHeaders(siteKey),
|
|
313
357
|
});
|
|
314
358
|
if (!response.ok) {
|
|
315
|
-
throw
|
|
359
|
+
throw await apiError(response, "Failed to fetch posts");
|
|
316
360
|
}
|
|
317
361
|
const data = await response.json();
|
|
318
362
|
return data.posts;
|
|
@@ -328,7 +372,7 @@ export async function fetchPost(options) {
|
|
|
328
372
|
return null;
|
|
329
373
|
}
|
|
330
374
|
if (!response.ok) {
|
|
331
|
-
throw
|
|
375
|
+
throw await apiError(response, "Failed to fetch post");
|
|
332
376
|
}
|
|
333
377
|
const data = await response.json();
|
|
334
378
|
return data.public_post || data;
|
|
@@ -346,7 +390,7 @@ export async function fetchGalleries(options) {
|
|
|
346
390
|
},
|
|
347
391
|
});
|
|
348
392
|
if (!response.ok)
|
|
349
|
-
throw
|
|
393
|
+
throw await apiError(response, "Failed to fetch galleries");
|
|
350
394
|
return response.json();
|
|
351
395
|
}
|
|
352
396
|
export async function fetchGallery(options) {
|
|
@@ -363,7 +407,7 @@ export async function fetchGallery(options) {
|
|
|
363
407
|
if (response.status === 404)
|
|
364
408
|
return null;
|
|
365
409
|
if (!response.ok)
|
|
366
|
-
throw
|
|
410
|
+
throw await apiError(response, "Failed to fetch gallery");
|
|
367
411
|
const data = await response.json();
|
|
368
412
|
return data.gallery ?? data;
|
|
369
413
|
}
|
|
@@ -383,7 +427,7 @@ export async function fetchRandomPhoto(options) {
|
|
|
383
427
|
if (response.status === 404)
|
|
384
428
|
return null;
|
|
385
429
|
if (!response.ok)
|
|
386
|
-
throw
|
|
430
|
+
throw await apiError(response, "Failed to fetch random photo");
|
|
387
431
|
const data = await response.json();
|
|
388
432
|
return data.gallery_photo ?? data.galleryPhoto ?? data;
|
|
389
433
|
}
|
|
@@ -400,7 +444,7 @@ export async function joinWaitlist(options) {
|
|
|
400
444
|
body: JSON.stringify({ email, name, source }),
|
|
401
445
|
});
|
|
402
446
|
if (!response.ok) {
|
|
403
|
-
throw
|
|
447
|
+
throw await apiError(response, "Failed to join waitlist");
|
|
404
448
|
}
|
|
405
449
|
return response.json();
|
|
406
450
|
}
|
|
@@ -412,7 +456,7 @@ export async function getViewCounts(options) {
|
|
|
412
456
|
headers: getHeaders(siteKey),
|
|
413
457
|
});
|
|
414
458
|
if (!response.ok) {
|
|
415
|
-
throw
|
|
459
|
+
throw await apiError(response, "Failed to get view counts");
|
|
416
460
|
}
|
|
417
461
|
const data = await response.json();
|
|
418
462
|
return data.page_view_counts;
|
|
@@ -426,7 +470,7 @@ export async function recordView(options) {
|
|
|
426
470
|
headers: getHeaders(siteKey),
|
|
427
471
|
});
|
|
428
472
|
if (!response.ok) {
|
|
429
|
-
throw
|
|
473
|
+
throw await apiError(response, "Failed to record view");
|
|
430
474
|
}
|
|
431
475
|
const data = await response.json();
|
|
432
476
|
return data.record_view_response;
|
|
@@ -449,7 +493,7 @@ export async function submitFeedback(options) {
|
|
|
449
493
|
}),
|
|
450
494
|
});
|
|
451
495
|
if (!response.ok) {
|
|
452
|
-
throw
|
|
496
|
+
throw await apiError(response, "Failed to submit feedback");
|
|
453
497
|
}
|
|
454
498
|
return response.json();
|
|
455
499
|
}
|
|
@@ -461,7 +505,7 @@ export async function fetchPoll(options) {
|
|
|
461
505
|
headers: getHeaders(siteKey),
|
|
462
506
|
});
|
|
463
507
|
if (!response.ok) {
|
|
464
|
-
throw
|
|
508
|
+
throw await apiError(response, "Failed to fetch poll");
|
|
465
509
|
}
|
|
466
510
|
const data = await response.json();
|
|
467
511
|
return data.poll_with_results;
|
|
@@ -479,7 +523,7 @@ export async function votePoll(options) {
|
|
|
479
523
|
body: JSON.stringify({ selectedOptions }),
|
|
480
524
|
});
|
|
481
525
|
if (!response.ok) {
|
|
482
|
-
throw
|
|
526
|
+
throw await apiError(response, "Failed to vote");
|
|
483
527
|
}
|
|
484
528
|
const data = await response.json();
|
|
485
529
|
return data.vote_response;
|
|
@@ -492,7 +536,7 @@ export async function fetchAnnouncements(options) {
|
|
|
492
536
|
headers: getHeaders(siteKey),
|
|
493
537
|
});
|
|
494
538
|
if (!response.ok) {
|
|
495
|
-
throw
|
|
539
|
+
throw await apiError(response, "Failed to fetch announcements");
|
|
496
540
|
}
|
|
497
541
|
const data = await response.json();
|
|
498
542
|
return data.announcements || [];
|
|
@@ -506,7 +550,7 @@ export async function dismissAnnouncement(options) {
|
|
|
506
550
|
headers: getHeaders(siteKey),
|
|
507
551
|
});
|
|
508
552
|
if (!response.ok) {
|
|
509
|
-
throw
|
|
553
|
+
throw await apiError(response, "Failed to dismiss announcement");
|
|
510
554
|
}
|
|
511
555
|
}
|
|
512
556
|
/**
|
|
@@ -640,6 +684,8 @@ export class FormController {
|
|
|
640
684
|
formSlug;
|
|
641
685
|
listeners = new Set();
|
|
642
686
|
loadTime;
|
|
687
|
+
/** Idempotency key reused while the same data is retried */
|
|
688
|
+
pending = null;
|
|
643
689
|
_state = { status: "idle", message: null, error: null };
|
|
644
690
|
constructor(config, formSlug) {
|
|
645
691
|
this.config = config;
|
|
@@ -664,12 +710,21 @@ export class FormController {
|
|
|
664
710
|
this._state = { status: "loading", message: null, error: null };
|
|
665
711
|
this.notify();
|
|
666
712
|
try {
|
|
713
|
+
const body = JSON.stringify(data);
|
|
714
|
+
if (this.pending?.body !== body) {
|
|
715
|
+
this.pending = { body, requestId: generateUUID() };
|
|
716
|
+
}
|
|
717
|
+
const attempt = this.pending;
|
|
667
718
|
const result = await submitForm({
|
|
668
719
|
...this.config,
|
|
669
720
|
formSlug: this.formSlug,
|
|
670
721
|
data,
|
|
671
722
|
formLoadTime: this.loadTime,
|
|
723
|
+
requestId: attempt.requestId,
|
|
672
724
|
});
|
|
725
|
+
// An overlapping submit with other data may own the key by now.
|
|
726
|
+
if (this.pending === attempt)
|
|
727
|
+
this.pending = null;
|
|
673
728
|
this._state = { status: "success", message: result.message, error: null };
|
|
674
729
|
this.notify();
|
|
675
730
|
return result;
|
|
@@ -684,6 +739,7 @@ export class FormController {
|
|
|
684
739
|
reset() {
|
|
685
740
|
this._state = { status: "idle", message: null, error: null };
|
|
686
741
|
this.loadTime = Math.floor(Date.now() / 1000);
|
|
742
|
+
this.pending = null;
|
|
687
743
|
this.notify();
|
|
688
744
|
}
|
|
689
745
|
}
|
package/dist/uuid.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../src/uuid.ts"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,IAAI,MAAM,CAgBrC"}
|
package/dist/uuid.js
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function generateUUID() {
|
|
2
|
+
if (typeof crypto !== "undefined") {
|
|
3
|
+
if (typeof crypto.randomUUID === "function")
|
|
4
|
+
return crypto.randomUUID();
|
|
5
|
+
if (typeof crypto.getRandomValues === "function") {
|
|
6
|
+
const bytes = crypto.getRandomValues(new Uint8Array(16));
|
|
7
|
+
bytes[6] = (bytes[6] & 0x0f) | 0x40;
|
|
8
|
+
bytes[8] = (bytes[8] & 0x3f) | 0x80;
|
|
9
|
+
const hex = Array.from(bytes, byte => byte.toString(16).padStart(2, "0")).join("");
|
|
10
|
+
return `${hex.slice(0, 8)}-${hex.slice(8, 12)}-${hex.slice(12, 16)}-${hex.slice(16, 20)}-${hex.slice(20)}`;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
// Preserve visitor IDs in older server runtimes without Web Crypto.
|
|
14
|
+
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, c => {
|
|
15
|
+
const r = (Math.random() * 16) | 0;
|
|
16
|
+
return (c === "x" ? r : (r & 0x3) | 0x8).toString(16);
|
|
17
|
+
});
|
|
18
|
+
}
|