@dani-builder/strapi-client 0.10.0 → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/README.md +30 -8
  2. package/dist/agent/create-agent-client.d.ts +43 -0
  3. package/dist/agent/create-agent-client.d.ts.map +1 -0
  4. package/dist/agent/create-agent-client.js +168 -0
  5. package/dist/agent/create-agent-client.js.map +1 -0
  6. package/dist/api/categories.d.ts +2 -0
  7. package/dist/api/categories.d.ts.map +1 -1
  8. package/dist/api/categories.js +2 -0
  9. package/dist/api/categories.js.map +1 -1
  10. package/dist/api/inquiry.d.ts +2 -2
  11. package/dist/api/inquiry.d.ts.map +1 -1
  12. package/dist/api/inquiry.js.map +1 -1
  13. package/dist/index.d.ts +3 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +2 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/populate/builders.d.ts +8 -0
  18. package/dist/populate/builders.d.ts.map +1 -1
  19. package/dist/populate/builders.js +4 -0
  20. package/dist/populate/builders.js.map +1 -1
  21. package/dist/populate/index.d.ts +1 -1
  22. package/dist/populate/index.d.ts.map +1 -1
  23. package/dist/populate/index.js +1 -1
  24. package/dist/populate/index.js.map +1 -1
  25. package/dist/preview.cjs +55 -0
  26. package/dist/preview.cjs.map +1 -0
  27. package/dist/preview.d.cts +5 -0
  28. package/dist/preview.d.cts.map +1 -0
  29. package/dist/types/components/blocks.d.ts +2 -0
  30. package/dist/types/components/blocks.d.ts.map +1 -1
  31. package/dist/types/content-types/category.d.ts +3 -0
  32. package/dist/types/content-types/category.d.ts.map +1 -1
  33. package/dist/types/content-types/index.d.ts +1 -1
  34. package/dist/types/content-types/index.d.ts.map +1 -1
  35. package/dist/types/content-types/inquiry.d.ts +13 -0
  36. package/dist/types/content-types/inquiry.d.ts.map +1 -1
  37. package/dist/types/index.d.ts +1 -1
  38. package/dist/types/index.d.ts.map +1 -1
  39. package/docs/api-guide.md +32 -7
  40. package/docs/block-reference.md +2 -0
  41. package/docs/content-types.md +7 -1
  42. package/package.json +16 -2
package/README.md CHANGED
@@ -11,7 +11,8 @@ functions for every content type — pairs with
11
11
  pnpm add @dani-builder/strapi-client
12
12
  ```
13
13
 
14
- ESM-only (`"type": "module"`).
14
+ Existing client entries are ESM-only (`"type": "module"`). The server-only
15
+ `/preview` entry supports ESM and CommonJS, with no Strapi runtime or peers.
15
16
 
16
17
  ## Usage
17
18
 
@@ -35,16 +36,37 @@ const draft = await getPageBySlug(strapi, "about", { status: "draft" });
35
36
 
36
37
  ## Sub-exports
37
38
 
38
- | Import | Contents |
39
- |--------|----------|
40
- | `@dani-builder/strapi-client/types` | Hand-curated content-type & block types |
41
- | `@dani-builder/strapi-client/client` | `createStrapiClient` |
42
- | `@dani-builder/strapi-client/api` | 19 API functions |
43
- | `@dani-builder/strapi-client/populate` | 15 block populate builders |
44
- | `@dani-builder/strapi-client/utils` | Media URL helpers |
39
+ | Import | Contents |
40
+ | -------------------------------------- | ------------------------------------------------------------------------------------ |
41
+ | `@dani-builder/strapi-client/types` | Hand-curated content-type & block types |
42
+ | `@dani-builder/strapi-client/client` | `createStrapiClient` |
43
+ | `@dani-builder/strapi-client/api` | 19 API functions |
44
+ | `@dani-builder/strapi-client/populate` | 15 block populate builders |
45
+ | `@dani-builder/strapi-client/utils` | Media URL helpers |
46
+ | `@dani-builder/strapi-client/preview` | Node.js server-only `verifyPreviewToken`, `isSafePreviewPath`, `PREVIEW_TTL_SECONDS` |
45
47
 
46
48
  See [`docs/block-reference.md`](./docs/block-reference.md) for the full block schema.
47
49
 
48
50
  ## License
49
51
 
50
52
  MIT © HJ-company
53
+
54
+ Preview verification requires client 0.12.0 or later. Import it only in Node.js
55
+ server code and keep `PREVIEW_SECRET` private. The shared verifier binds the signed
56
+ path and draft/published status and rejects tokens at expiry (300 seconds).
57
+ The existing plugin `/preview` verifier remains compatible.
58
+
59
+ ## Agent browser client
60
+
61
+ `createAgentClient({ baseUrl, apiPrefix?, fetch? })` is exported from the package
62
+ root. It provides `session()` issuance, `session(credentials)` restoration,
63
+ `history(credentials)`, `chat(credentials, request, { onEvent? })` and
64
+ `cancel(credentials, requestId)`. A chat handle exposes its stable `requestId`,
65
+ `result` promise and `cancel()` immediately. Streaming events use the shared
66
+ `@dani-builder/agent-contract` parser. Keep the issued token with the session ID
67
+ in caller-owned storage and handle both result and cancellation rejections. Tokens
68
+ are sent only in Bearer headers; cookies are omitted. Existing Axios APIs continue
69
+ to work independently.
70
+
71
+ See [Agent sessions and conversation context](../../docs/guides/agent-conversation-context.md)
72
+ for browser usage, error/cancellation behavior, retries and the CMS origin allowlist.
@@ -0,0 +1,43 @@
1
+ import type { ChatDoneEventData, ChatEvent, ChatRequest, ConversationRestoreResponse, SessionResponse } from "@dani-builder/agent-contract";
2
+ export interface AgentClientConfig {
3
+ /** CMS origin, or empty for same-origin requests. */
4
+ baseUrl: string;
5
+ /** Strapi REST prefix; defaults to /api. */
6
+ apiPrefix?: string;
7
+ fetch?: typeof globalThis.fetch;
8
+ }
9
+ export interface AgentSessionCredentials {
10
+ sessionId: string;
11
+ token: string;
12
+ }
13
+ export interface AgentRestoreOptions extends AgentSessionCredentials {
14
+ agentId?: string;
15
+ }
16
+ export interface AgentChatOptions {
17
+ onEvent?: (event: ChatEvent) => void;
18
+ }
19
+ export interface AgentTurn {
20
+ requestId: string;
21
+ result: Promise<ChatDoneEventData>;
22
+ /** Stops local delivery immediately and independently requests server cancellation. */
23
+ cancel(): Promise<{
24
+ cancelled: boolean;
25
+ }>;
26
+ }
27
+ export declare class AgentClientError extends Error {
28
+ readonly code: string;
29
+ readonly status?: number | undefined;
30
+ constructor(code: string, status?: number | undefined);
31
+ }
32
+ export declare function createAgentClient(config: AgentClientConfig): {
33
+ session: {
34
+ (): Promise<SessionResponse>;
35
+ (options: AgentRestoreOptions): Promise<ConversationRestoreResponse>;
36
+ };
37
+ chat: (credentials: AgentSessionCredentials, input: Omit<ChatRequest, "sessionId">, options?: AgentChatOptions) => AgentTurn;
38
+ history: (options: AgentRestoreOptions) => Promise<import("@dani-builder/agent-contract").ConversationHistoryMessage[]>;
39
+ cancel: (credentials: AgentSessionCredentials, requestId: string) => Promise<{
40
+ cancelled: boolean;
41
+ }>;
42
+ };
43
+ //# sourceMappingURL=create-agent-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-agent-client.d.ts","sourceRoot":"","sources":["../../src/agent/create-agent-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,2BAA2B,EAC3B,eAAe,EAChB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,WAAW,iBAAiB;IAChC,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AACD,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAClE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AACD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;CACtC;AACD,MAAM,WAAW,SAAS;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnC,uFAAuF;IACvF,MAAM,IAAI,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAC3C;AAED,qBAAa,gBAAiB,SAAQ,KAAK;aAEvB,IAAI,EAAE,MAAM;aACZ,MAAM,CAAC,EAAE,MAAM;gBADf,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,YAAA;CAKlC;AAmED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB;;YA8B/B,OAAO,CAAC,eAAe,CAAC;kBAEvC,mBAAmB,GAC3B,OAAO,CAAC,2BAA2B,CAAC;;wBAyBxB,uBAAuB,SAC7B,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,YAC5B,gBAAgB,KACxB,SAAS;uBAmCoB,mBAAmB;0BAlDpC,uBAAuB,aACzB,MAAM,KAChB,OAAO,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC;EAoDnC"}
@@ -0,0 +1,168 @@
1
+ import { parseSseEvent } from "@dani-builder/agent-contract";
2
+ export class AgentClientError extends Error {
3
+ code;
4
+ status;
5
+ constructor(code, status) {
6
+ super(`Agent request failed: ${code}`);
7
+ this.code = code;
8
+ this.status = status;
9
+ this.name = "AgentClientError";
10
+ }
11
+ }
12
+ // Frame transport here; shared contract owns event validation and normalization.
13
+ async function readEvents(response, signal, onEvent) {
14
+ if (!response.body)
15
+ throw new AgentClientError("missing_stream");
16
+ const reader = response.body.getReader();
17
+ const decoder = new TextDecoder();
18
+ let buffer = "";
19
+ let name = "";
20
+ let data = [];
21
+ const abort = () => {
22
+ void reader.cancel().catch(() => undefined);
23
+ };
24
+ signal.addEventListener("abort", abort, { once: true });
25
+ try {
26
+ for (;;) {
27
+ if (signal.aborted)
28
+ throw new AgentClientError("cancelled");
29
+ const chunk = await reader.read();
30
+ if (signal.aborted)
31
+ throw new AgentClientError("cancelled");
32
+ buffer += decoder.decode(chunk.value, { stream: !chunk.done });
33
+ for (;;) {
34
+ const match = /\r\n|\r|\n/.exec(buffer);
35
+ if (!match)
36
+ break;
37
+ // A CR at a chunk boundary may be the first half of CRLF.
38
+ if (match[0] === "\r" &&
39
+ match.index === buffer.length - 1 &&
40
+ !chunk.done)
41
+ break;
42
+ const line = buffer.slice(0, match.index);
43
+ buffer = buffer.slice(match.index + match[0].length);
44
+ if (line === "") {
45
+ const event = data.length
46
+ ? parseSseEvent(name, data.join("\n"))
47
+ : null;
48
+ name = "";
49
+ data = [];
50
+ if (!event)
51
+ continue;
52
+ if (signal.aborted)
53
+ throw new AgentClientError("cancelled");
54
+ onEvent?.(event);
55
+ if (signal.aborted)
56
+ throw new AgentClientError("cancelled");
57
+ if (event.event === "done")
58
+ return event.data;
59
+ if (event.event === "error")
60
+ throw new AgentClientError(event.data.code || "stream_error");
61
+ }
62
+ else if (!line.startsWith(":")) {
63
+ const colon = line.indexOf(":");
64
+ const field = colon < 0 ? line : line.slice(0, colon);
65
+ const value = colon < 0 ? "" : line.slice(colon + 1).replace(/^ /, "");
66
+ if (field === "event")
67
+ name = value;
68
+ if (field === "data")
69
+ data.push(value);
70
+ }
71
+ }
72
+ if (chunk.done)
73
+ throw new AgentClientError("incomplete_stream");
74
+ }
75
+ }
76
+ finally {
77
+ signal.removeEventListener("abort", abort);
78
+ await reader.cancel().catch(() => undefined);
79
+ reader.releaseLock();
80
+ }
81
+ }
82
+ export function createAgentClient(config) {
83
+ const fetcher = config.fetch ?? globalThis.fetch.bind(globalThis);
84
+ const endpoint = `${config.baseUrl.replace(/\/$/, "")}${config.apiPrefix ?? "/api"}/agent`;
85
+ async function request(path, token, init = {}) {
86
+ const response = await fetcher(`${endpoint}${path}`, {
87
+ ...init,
88
+ credentials: "omit",
89
+ headers: {
90
+ ...(init.body ? { "Content-Type": "application/json" } : {}),
91
+ ...(token ? { Authorization: `Bearer ${token}` } : {}),
92
+ },
93
+ });
94
+ if (!response.ok) {
95
+ let code = "http_error";
96
+ try {
97
+ const body = await response.json();
98
+ if (body &&
99
+ typeof body === "object" &&
100
+ "error" in body &&
101
+ typeof body.error === "string")
102
+ code = body.error;
103
+ }
104
+ catch {
105
+ /* Non-JSON error responses retain their HTTP status. */
106
+ }
107
+ throw new AgentClientError(code, response.status);
108
+ }
109
+ return response;
110
+ }
111
+ async function session(options) {
112
+ if (!options)
113
+ return (await request("/session", undefined, { method: "POST", body: "{}" })).json();
114
+ const query = new URLSearchParams({ sessionId: options.sessionId });
115
+ if (options.agentId)
116
+ query.set("agentId", options.agentId);
117
+ return (await request(`/session?${query}`, options.token)).json();
118
+ }
119
+ async function cancel(credentials, requestId) {
120
+ return (await request("/cancel", credentials.token, {
121
+ method: "POST",
122
+ body: JSON.stringify({ sessionId: credentials.sessionId, requestId }),
123
+ signal: new AbortController().signal,
124
+ })).json();
125
+ }
126
+ function chat(credentials, input, options = {}) {
127
+ const requestId = input.requestId ?? globalThis.crypto.randomUUID();
128
+ const controller = new AbortController();
129
+ let cancellation;
130
+ const result = (async () => {
131
+ try {
132
+ const response = await request("/chat", credentials.token, {
133
+ method: "POST",
134
+ body: JSON.stringify({
135
+ ...input,
136
+ sessionId: credentials.sessionId,
137
+ requestId,
138
+ }),
139
+ signal: controller.signal,
140
+ });
141
+ if (controller.signal.aborted) {
142
+ await response.body?.cancel().catch(() => undefined);
143
+ throw new AgentClientError("cancelled");
144
+ }
145
+ return await readEvents(response, controller.signal, options.onEvent);
146
+ }
147
+ catch (error) {
148
+ if (controller.signal.aborted)
149
+ throw new AgentClientError("cancelled");
150
+ throw error;
151
+ }
152
+ })();
153
+ return {
154
+ requestId,
155
+ result,
156
+ cancel() {
157
+ controller.abort();
158
+ cancellation ??= cancel(credentials, requestId);
159
+ return cancellation;
160
+ },
161
+ };
162
+ }
163
+ async function history(options) {
164
+ return (await session(options)).messages;
165
+ }
166
+ return { session, chat, history, cancel };
167
+ }
168
+ //# sourceMappingURL=create-agent-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-agent-client.js","sourceRoot":"","sources":["../../src/agent/create-agent-client.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,8 @@ import type { StrapiCollectionResponse } from '../types/strapi.js';
3
3
  import type { CategoryDocument } from '../types/content-types/category.js';
4
4
  export interface CategoryListOptions {
5
5
  locale?: string;
6
+ /** Include the reverse FAQ relation; omitted by default. */
7
+ populateFaqs?: boolean;
6
8
  page?: number;
7
9
  pageSize?: number;
8
10
  sort?: string | string[];
@@ -1 +1 @@
1
- {"version":3,"file":"categories.d.ts","sourceRoot":"","sources":["../../src/api/categories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,mBAAmB,uDAiB9B"}
1
+ {"version":3,"file":"categories.d.ts","sourceRoot":"","sources":["../../src/api/categories.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAG3E,MAAM,WAAW,mBAAmB;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;CAC1B;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,mBAAmB,uDAkB9B"}
@@ -1,3 +1,4 @@
1
+ import { getCategoryPopulate } from '../populate/builders.js';
1
2
  /**
2
3
  * List all categories.
3
4
  */
@@ -5,6 +6,7 @@ export function listCategories(client, options) {
5
6
  return client
6
7
  .get('/api/builder/categories', {
7
8
  params: {
9
+ ...(options?.populateFaqs ? { populate: getCategoryPopulate() } : {}),
8
10
  sort: options?.sort ?? 'sortOrder:asc',
9
11
  locale: options?.locale,
10
12
  pagination: options?.page != null || options?.pageSize != null
@@ -1 +1 @@
1
- {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/api/categories.ts"],"names":[],"mappings":"AAWA;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAqB,EACrB,OAA6B;IAE7B,OAAO,MAAM;SACV,GAAG,CACF,yBAAyB,EACzB;QACE,MAAM,EAAE;YACN,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,eAAe;YACtC,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,UAAU,EACR,OAAO,EAAE,IAAI,IAAI,IAAI,IAAI,OAAO,EAAE,QAAQ,IAAI,IAAI;gBAChD,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;gBACzD,CAAC,CAAC,SAAS;SAChB;KACF,CACF;SACA,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/api/categories.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAW9D;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAqB,EACrB,OAA6B;IAE7B,OAAO,MAAM;SACV,GAAG,CACF,yBAAyB,EACzB;QACE,MAAM,EAAE;YACN,GAAG,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,mBAAmB,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACrE,IAAI,EAAE,OAAO,EAAE,IAAI,IAAI,eAAe;YACtC,MAAM,EAAE,OAAO,EAAE,MAAM;YACvB,UAAU,EACR,OAAO,EAAE,IAAI,IAAI,IAAI,IAAI,OAAO,EAAE,QAAQ,IAAI,IAAI;gBAChD,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;gBACzD,CAAC,CAAC,SAAS;SAChB;KACF,CACF;SACA,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC"}
@@ -1,7 +1,7 @@
1
1
  import type { AxiosInstance } from 'axios';
2
- import type { InquiryDocument, InquiryFormData } from '../types/content-types/inquiry.js';
2
+ import type { InquiryReceipt, InquiryFormData } from '../types/content-types/inquiry.js';
3
3
  /**
4
4
  * Submit an inquiry form (POST).
5
5
  */
6
- export declare function postInquiry(client: AxiosInstance, data: InquiryFormData): Promise<InquiryDocument>;
6
+ export declare function postInquiry<Data extends InquiryFormData>(client: AxiosInstance, data: Data): Promise<InquiryReceipt>;
7
7
  //# sourceMappingURL=inquiry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inquiry.d.ts","sourceRoot":"","sources":["../../src/api/inquiry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAE1F;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,eAAe,4BAIvE"}
1
+ {"version":3,"file":"inquiry.d.ts","sourceRoot":"","sources":["../../src/api/inquiry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EAChB,MAAM,mCAAmC,CAAC;AAE3C;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,SAAS,eAAe,EACtD,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE,IAAI,2BAKX"}
@@ -1 +1 @@
1
- {"version":3,"file":"inquiry.js","sourceRoot":"","sources":["../../src/api/inquiry.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,MAAqB,EAAE,IAAqB;IACtE,OAAO,MAAM;SACV,IAAI,CAAkC,wBAAwB,EAAE,EAAE,IAAI,EAAE,CAAC;SACzE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"inquiry.js","sourceRoot":"","sources":["../../src/api/inquiry.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,UAAU,WAAW,CACzB,MAAqB,EACrB,IAAU;IAEV,OAAO,MAAM;SACV,IAAI,CAAiC,wBAAwB,EAAE,EAAE,IAAI,EAAE,CAAC;SACxE,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  export type { StrapiDocument, StrapiI18nDocument, StrapiComponent, StrapiResponse, StrapiCollectionResponse, StrapiPagination, StrapiError, StrapiMedia, StrapiMediaFormat, BlocksContent, BlockNode, BlockParagraph, BlockHeading, BlockList, BlockListItem, BlockQuote, BlockCode, BlockImage, BlockInlineNode, BlockTextChild, BlockLinkChild, Link, NavigationGroup, Seo, FeatureItem, HighlightItem, SliderItem, BentoItem, TestimonialItem, LogoItem, StatItem, PricingTier, TeamMember, AnalyticsSetting, ChatbotSetting, SiteVerification, BrandColors, Section, Footer, HeroBlock, FeaturesBlock, CtaBlock, SliderBlock, InquiryFormBlock, FaqBlock, HighlightsBlock, BentoGridBlock, TestimonialsBlock, LogoCloudBlock, StatsBlock, PricingBlock, ContentBlock, TeamBlock, Page, PageDocument, PageBlocks, Article, ArticleDocument, Faq, FaqDocument, Inquiry, InquiryDocument, InquiryFormData, Category, CategoryDocument, Tag, TagDocument, Author, AuthorDocument, Series, SeriesDocument, Navigation, NavigationDocument, Global, GlobalDocument, SiteWideBlocks, SiteSettings, SiteSettingsDocument, } from "./types/index.js";
2
2
  export { createStrapiClient, getErrorCode, getErrorStatus, isStrapiError, } from "./client/index.js";
3
3
  export type { StrapiClientConfig } from "./client/index.js";
4
- export { coreBlockPopulates, seoPopulate, footerPopulate, getPagePopulate, getPageListPopulate, getGlobalPopulate, getArticlePopulate, getArticleListPopulate, getNavigationPopulate, getSiteSettingsPopulate, getFaqPopulate, } from "./populate/index.js";
4
+ export { coreBlockPopulates, seoPopulate, footerPopulate, getPagePopulate, getPageListPopulate, getGlobalPopulate, getArticlePopulate, getArticleListPopulate, getNavigationPopulate, getSiteSettingsPopulate, getFaqPopulate, getCategoryPopulate, } from "./populate/index.js";
5
5
  export { getPage, getPageBySlug, listPages, listPagesRest, getArticle, getArticleBySlug, listArticles, getGlobal, getGlobalRest, getNavigation, getSiteSettings, listFaqs, listCategories, listTags, listAuthors, getAuthorBySlug, listSeries, getSeriesBySlug, postInquiry, } from "./api/index.js";
6
6
  export type { PageQueryOptions, PageListOptions, ArticleQueryOptions, ArticleListOptions, GlobalQueryOptions, NavigationQueryOptions, FaqListOptions, CategoryListOptions, TagListOptions, AuthorListOptions, SeriesListOptions, } from "./api/index.js";
7
7
  export { getMediaUrl, getAssetUrl } from "./utils/index.js";
8
+ export { createAgentClient, AgentClientError, } from "./agent/create-agent-client.js";
9
+ export type { AgentClientConfig, AgentSessionCredentials, AgentRestoreOptions, AgentChatOptions, AgentTurn, } from "./agent/create-agent-client.js";
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,cAAc,EACd,YAAY,EACZ,SAAS,EACT,aAAa,EACb,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,IAAI,EACJ,eAAe,EACf,GAAG,EACH,WAAW,EACX,aAAa,EACb,UAAU,EACV,SAAS,EACT,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,aAAa,EACb,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,OAAO,EACP,eAAe,EACf,GAAG,EACH,WAAW,EACX,OAAO,EACP,eAAe,EACf,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,GAAG,EACH,WAAW,EACX,MAAM,EACN,cAAc,EACd,MAAM,EACN,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,MAAM,EACN,cAAc,EACd,cAAc,EACd,YAAY,EACZ,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,OAAO,EACP,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,EACb,eAAe,EACf,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,WAAW,EACX,eAAe,EACf,UAAU,EACV,eAAe,EACf,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,cAAc,EACd,YAAY,EACZ,SAAS,EACT,aAAa,EACb,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,cAAc,EACd,cAAc,EACd,IAAI,EACJ,eAAe,EACf,GAAG,EACH,WAAW,EACX,aAAa,EACb,UAAU,EACV,SAAS,EACT,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,aAAa,EACb,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,OAAO,EACP,eAAe,EACf,GAAG,EACH,WAAW,EACX,OAAO,EACP,eAAe,EACf,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,GAAG,EACH,WAAW,EACX,MAAM,EACN,cAAc,EACd,MAAM,EACN,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,MAAM,EACN,cAAc,EACd,cAAc,EACd,YAAY,EACZ,oBAAoB,GACrB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,OAAO,EACP,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,EACb,eAAe,EACf,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,WAAW,EACX,eAAe,EACf,UAAU,EACV,eAAe,EACf,WAAW,GACZ,MAAM,gBAAgB,CAAC;AACxB,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,gCAAgC,CAAC;AACxC,YAAY,EACV,iBAAiB,EACjB,uBAAuB,EACvB,mBAAmB,EACnB,gBAAgB,EAChB,SAAS,GACV,MAAM,gCAAgC,CAAC"}
package/dist/index.js CHANGED
@@ -2,9 +2,10 @@
2
2
  // Client
3
3
  export { createStrapiClient, getErrorCode, getErrorStatus, isStrapiError, } from "./client/index.js";
4
4
  // Populate
5
- export { coreBlockPopulates, seoPopulate, footerPopulate, getPagePopulate, getPageListPopulate, getGlobalPopulate, getArticlePopulate, getArticleListPopulate, getNavigationPopulate, getSiteSettingsPopulate, getFaqPopulate, } from "./populate/index.js";
5
+ export { coreBlockPopulates, seoPopulate, footerPopulate, getPagePopulate, getPageListPopulate, getGlobalPopulate, getArticlePopulate, getArticleListPopulate, getNavigationPopulate, getSiteSettingsPopulate, getFaqPopulate, getCategoryPopulate, } from "./populate/index.js";
6
6
  // API
7
7
  export { getPage, getPageBySlug, listPages, listPagesRest, getArticle, getArticleBySlug, listArticles, getGlobal, getGlobalRest, getNavigation, getSiteSettings, listFaqs, listCategories, listTags, listAuthors, getAuthorBySlug, listSeries, getSeriesBySlug, postInquiry, } from "./api/index.js";
8
8
  // Utils
9
9
  export { getMediaUrl, getAssetUrl } from "./utils/index.js";
10
+ export { createAgentClient, AgentClientError, } from "./agent/create-agent-client.js";
10
11
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAoF1D,SAAS;AACT,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,mBAAmB,CAAC;AAG3B,WAAW;AACX,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,GACf,MAAM,qBAAqB,CAAC;AAE7B,MAAM;AACN,OAAO,EACL,OAAO,EACP,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,EACb,eAAe,EACf,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,WAAW,EACX,eAAe,EACf,UAAU,EACV,eAAe,EACf,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAexB,QAAQ;AACR,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,0DAA0D;AAoF1D,SAAS;AACT,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,mBAAmB,CAAC;AAG3B,WAAW;AACX,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAE7B,MAAM;AACN,OAAO,EACL,OAAO,EACP,aAAa,EACb,SAAS,EACT,aAAa,EACb,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,SAAS,EACT,aAAa,EACb,aAAa,EACb,eAAe,EACf,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,WAAW,EACX,eAAe,EACf,UAAU,EACV,eAAe,EACf,WAAW,GACZ,MAAM,gBAAgB,CAAC;AAexB,QAAQ;AACR,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE5D,OAAO,EACL,iBAAiB,EACjB,gBAAgB,GACjB,MAAM,gCAAgC,CAAC"}
@@ -134,4 +134,12 @@ export declare function getSiteSettingsPopulate(): {
134
134
  export declare function getFaqPopulate(): {
135
135
  category: boolean;
136
136
  };
137
+ /** Populate reverse FAQs and their single category without recursive FAQs. */
138
+ export declare function getCategoryPopulate(): {
139
+ faqs: {
140
+ populate: {
141
+ category: boolean;
142
+ };
143
+ };
144
+ };
137
145
  //# sourceMappingURL=builders.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/populate/builders.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;YATA,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;EAe1F;AAED;;GAEG;AACH,wBAAgB,mBAAmB;;;;;;;;;EAKlC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;EA+BtE;AAED;;GAEG;AACH,wBAAgB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBjC;AAED;;GAEG;AACH,wBAAgB,sBAAsB;;;;;;;;;;;;EAYrC;AAED;;GAEG;AACH,wBAAgB,qBAAqB;;;;;;;;;;EAYpC;AAED;;GAEG;AACH,wBAAgB,uBAAuB;;;;;EAOtC;AAED;;GAEG;AACH,wBAAgB,cAAc;;EAI7B"}
1
+ {"version":3,"file":"builders.d.ts","sourceRoot":"","sources":["../../src/populate/builders.ts"],"names":[],"mappings":"AAiBA;;;GAGG;AACH,wBAAgB,eAAe,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;YATA,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;EAe1F;AAED;;GAEG;AACH,wBAAgB,mBAAmB;;;;;;;;;EAKlC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;;;;;;;;;;;;;;;;;;;;;;;EA+BtE;AAED;;GAEG;AACH,wBAAgB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAyBjC;AAED;;GAEG;AACH,wBAAgB,sBAAsB;;;;;;;;;;;;EAYrC;AAED;;GAEG;AACH,wBAAgB,qBAAqB;;;;;;;;;;EAYpC;AAED;;GAEG;AACH,wBAAgB,uBAAuB;;;;;EAOtC;AAED;;GAEG;AACH,wBAAgB,cAAc;;EAI7B;AAED,8EAA8E;AAC9E,wBAAgB,mBAAmB;;;;;;EAElC"}
@@ -146,4 +146,8 @@ export function getFaqPopulate() {
146
146
  category: true,
147
147
  };
148
148
  }
149
+ /** Populate reverse FAQs and their single category without recursive FAQs. */
150
+ export function getCategoryPopulate() {
151
+ return { faqs: { populate: getFaqPopulate() } };
152
+ }
149
153
  //# sourceMappingURL=builders.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"builders.js","sourceRoot":"","sources":["../../src/populate/builders.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"builders.js","sourceRoot":"","sources":["../../src/populate/builders.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  export { coreBlockPopulates, seoPopulate, footerPopulate } from './core-blocks.js';
2
- export { getPagePopulate, getPageListPopulate, getGlobalPopulate, getArticlePopulate, getArticleListPopulate, getNavigationPopulate, getSiteSettingsPopulate, getFaqPopulate, } from './builders.js';
2
+ export { getPagePopulate, getPageListPopulate, getGlobalPopulate, getArticlePopulate, getArticleListPopulate, getNavigationPopulate, getSiteSettingsPopulate, getFaqPopulate, getCategoryPopulate, } from './builders.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/populate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,GACf,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/populate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,GACpB,MAAM,eAAe,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export { coreBlockPopulates, seoPopulate, footerPopulate } from './core-blocks.js';
2
- export { getPagePopulate, getPageListPopulate, getGlobalPopulate, getArticlePopulate, getArticleListPopulate, getNavigationPopulate, getSiteSettingsPopulate, getFaqPopulate, } from './builders.js';
2
+ export { getPagePopulate, getPageListPopulate, getGlobalPopulate, getArticlePopulate, getArticleListPopulate, getNavigationPopulate, getSiteSettingsPopulate, getFaqPopulate, getCategoryPopulate, } from './builders.js';
3
3
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/populate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,GACf,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/populate/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACnF,OAAO,EACL,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,GACpB,MAAM,eAAe,CAAC"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PREVIEW_TTL_SECONDS = void 0;
4
+ exports.isSafePreviewPath = isSafePreviewPath;
5
+ exports.verifyPreviewToken = verifyPreviewToken;
6
+ const node_crypto_1 = require("node:crypto");
7
+ exports.PREVIEW_TTL_SECONDS = 300;
8
+ function isSafePreviewPath(path) {
9
+ return (path.startsWith("/") &&
10
+ !path.startsWith("//") &&
11
+ !/[\\#]/.test(path) &&
12
+ !Array.from(path).some((character) => character.charCodeAt(0) <= 32) &&
13
+ !/%(?:2f|5c|0[0-9a-f]|1[0-9a-f]|20)/i.test(path));
14
+ }
15
+ /** Verify the server-only shared key and bind both redirect and draft status. */
16
+ function verifyPreviewToken(token, path, status, secret = process.env.PREVIEW_SECRET, now = Date.now()) {
17
+ if (!secret ||
18
+ !token ||
19
+ !path ||
20
+ !["draft", "published"].includes(status ?? ""))
21
+ return false;
22
+ if (!isSafePreviewPath(path))
23
+ return false;
24
+ const parts = token.split(".");
25
+ const payload = parts[0];
26
+ const signature = parts[1];
27
+ if (parts.length !== 2 ||
28
+ !payload ||
29
+ !signature ||
30
+ !/^[A-Za-z0-9_-]+$/.test(payload) ||
31
+ !/^[A-Za-z0-9_-]{43}$/.test(signature))
32
+ return false;
33
+ const expected = (0, node_crypto_1.createHmac)("sha256", secret).update(payload).digest();
34
+ const provided = Buffer.from(signature, "base64url");
35
+ if (provided.length !== expected.length ||
36
+ !(0, node_crypto_1.timingSafeEqual)(provided, expected))
37
+ return false;
38
+ try {
39
+ const claims = JSON.parse(Buffer.from(payload, "base64url").toString("utf8"));
40
+ if (typeof claims !== "object" || claims === null)
41
+ return false;
42
+ const value = claims;
43
+ const seconds = Math.floor(now / 1000);
44
+ return (value.path === path &&
45
+ value.status === status &&
46
+ typeof value.exp === "number" &&
47
+ Number.isInteger(value.exp) &&
48
+ value.exp > seconds &&
49
+ value.exp <= seconds + exports.PREVIEW_TTL_SECONDS);
50
+ }
51
+ catch {
52
+ return false;
53
+ }
54
+ }
55
+ //# sourceMappingURL=preview.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.cjs","sourceRoot":"","sources":["../src/preview.cts"],"names":[],"mappings":";;;AAIA,8CAQC;AAGD,gDAmDC;AAlED,6CAA0D;AAE7C,QAAA,mBAAmB,GAAG,GAAG,CAAC;AAEvC,SAAgB,iBAAiB,CAAC,IAAY;IAC5C,OAAO,CACL,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACpB,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QACtB,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QACnB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACpE,CAAC,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,CACjD,CAAC;AACJ,CAAC;AAED,iFAAiF;AACjF,SAAgB,kBAAkB,CAChC,KAAoB,EACpB,IAAmB,EACnB,MAAqB,EACrB,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,EACnC,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;IAEhB,IACE,CAAC,MAAM;QACP,CAAC,KAAK;QACN,CAAC,IAAI;QACL,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC;QAE9C,OAAO,KAAK,CAAC;IACf,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAC3C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,CAAC,OAAO;QACR,CAAC,SAAS;QACV,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;QACjC,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC;QAEtC,OAAO,KAAK,CAAC;IACf,MAAM,QAAQ,GAAG,IAAA,wBAAU,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;IACvE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IACrD,IACE,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;QACnC,CAAC,IAAA,6BAAe,EAAC,QAAQ,EAAE,QAAQ,CAAC;QAEpC,OAAO,KAAK,CAAC;IACf,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAChC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CACnD,CAAC;QACF,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAChE,MAAM,KAAK,GAAG,MAAiC,CAAC;QAChD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;QACvC,OAAO,CACL,KAAK,CAAC,IAAI,KAAK,IAAI;YACnB,KAAK,CAAC,MAAM,KAAK,MAAM;YACvB,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ;YAC7B,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;YAC3B,KAAK,CAAC,GAAG,GAAG,OAAO;YACnB,KAAK,CAAC,GAAG,IAAI,OAAO,GAAG,2BAAmB,CAC3C,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC"}
@@ -0,0 +1,5 @@
1
+ export declare const PREVIEW_TTL_SECONDS = 300;
2
+ export declare function isSafePreviewPath(path: string): boolean;
3
+ /** Verify the server-only shared key and bind both redirect and draft status. */
4
+ export declare function verifyPreviewToken(token: string | null, path: string | null, status: string | null, secret?: string | undefined, now?: number): boolean;
5
+ //# sourceMappingURL=preview.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preview.d.cts","sourceRoot":"","sources":["../src/preview.cts"],"names":[],"mappings":"AAEA,eAAO,MAAM,mBAAmB,MAAM,CAAC;AAEvC,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAQvD;AAED,iFAAiF;AACjF,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,IAAI,EAAE,MAAM,GAAG,IAAI,EACnB,MAAM,EAAE,MAAM,GAAG,IAAI,EACrB,MAAM,qBAA6B,EACnC,GAAG,SAAa,GACf,OAAO,CA6CT"}
@@ -32,6 +32,8 @@ export interface SliderBlock extends StrapiComponent<'blocks.slider'> {
32
32
  items: SliderItem[];
33
33
  }
34
34
  export interface InquiryFormBlock extends StrapiComponent<'blocks.inquiry-form'> {
35
+ consentLabel?: string | null;
36
+ consentVersion?: string | null;
35
37
  section: Section | null;
36
38
  successMessage: string | null;
37
39
  errorMessage: string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../src/types/components/blocks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blocks.d.ts","sourceRoot":"","sources":["../../../src/types/components/blocks.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,12 @@
1
1
  import type { StrapiI18nDocument } from '../strapi.js';
2
+ import type { FaqDocument } from './faq.js';
2
3
  export interface Category {
3
4
  name: string;
4
5
  slug: string;
5
6
  description: string | null;
6
7
  sortOrder: number | null;
8
+ /** Present only when the reverse FAQ relation is populated. */
9
+ faqs?: FaqDocument[];
7
10
  }
8
11
  export type CategoryDocument = StrapiI18nDocument & Category;
9
12
  //# sourceMappingURL=category.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"category.d.ts","sourceRoot":"","sources":["../../../src/types/content-types/category.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAEvD,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,QAAQ,CAAC"}
1
+ {"version":3,"file":"category.d.ts","sourceRoot":"","sources":["../../../src/types/content-types/category.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAE5C,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG,QAAQ,CAAC"}
@@ -1,7 +1,7 @@
1
1
  export type { Page, PageDocument, PageBlocks } from './page.js';
2
2
  export type { Article, ArticleDocument } from './article.js';
3
3
  export type { Faq, FaqDocument } from './faq.js';
4
- export type { Inquiry, InquiryDocument, InquiryFormData } from './inquiry.js';
4
+ export type { Inquiry, InquiryDocument, InquiryFormData, InquiryReceipt, } from './inquiry.js';
5
5
  export type { Category, CategoryDocument } from './category.js';
6
6
  export type { Tag, TagDocument } from './tag.js';
7
7
  export type { Author, AuthorDocument } from './author.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/content-types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAChE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC7D,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACjD,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC9E,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACjD,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACtE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1E,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/content-types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,IAAI,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAChE,YAAY,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC7D,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACjD,YAAY,EACV,OAAO,EACP,eAAe,EACf,eAAe,EACf,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EAAE,GAAG,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACjD,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1D,YAAY,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACtE,YAAY,EAAE,MAAM,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC1E,YAAY,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -5,14 +5,27 @@ export interface Inquiry {
5
5
  phone: string | null;
6
6
  subject: string | null;
7
7
  message: string | null;
8
+ /** Nullable for submissions stored before consent auditing was introduced. */
9
+ consent: boolean | null;
10
+ consentAt: string | null;
11
+ consentVersion: string | null;
12
+ processingStatus: 'received' | 'reviewing' | 'responded' | 'closed' | null;
8
13
  }
9
14
  export type InquiryDocument = StrapiDocument & Inquiry;
10
15
  /** POST body for creating an inquiry via API */
11
16
  export interface InquiryFormData {
12
17
  name: string;
18
+ consent: true;
19
+ consentVersion: string;
20
+ /** Stable per submission intent; omit only for integrations without retries. */
21
+ idempotencyKey?: string;
13
22
  email?: string;
14
23
  phone?: string;
15
24
  subject?: string;
16
25
  message?: string;
17
26
  }
27
+ /** Public receipt contains no submission data or document identifiers. */
28
+ export interface InquiryReceipt {
29
+ accepted: true;
30
+ }
18
31
  //# sourceMappingURL=inquiry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"inquiry.d.ts","sourceRoot":"","sources":["../../../src/types/content-types/inquiry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,OAAO,CAAC;AAEvD,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB"}
1
+ {"version":3,"file":"inquiry.d.ts","sourceRoot":"","sources":["../../../src/types/content-types/inquiry.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAEnD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,8EAA8E;IAC9E,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,EAAE,UAAU,GAAG,WAAW,GAAG,WAAW,GAAG,QAAQ,GAAG,IAAI,CAAC;CAC5E;AAED,MAAM,MAAM,eAAe,GAAG,cAAc,GAAG,OAAO,CAAC;AAEvD,gDAAgD;AAChD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,IAAI,CAAC;IACd,cAAc,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,0EAA0E;AAC1E,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,IAAI,CAAC;CAChB"}
@@ -1,4 +1,4 @@
1
1
  export type { StrapiDocument, StrapiI18nDocument, LocalizationRef, StrapiComponent, StrapiResponse, StrapiCollectionResponse, StrapiPagination, StrapiError, StrapiMedia, StrapiMediaFormat, BlocksContent, BlockNode, BlockParagraph, BlockHeading, BlockList, BlockListItem, BlockQuote, BlockCode, BlockImage, BlockInlineNode, BlockTextChild, BlockLinkChild, } from './strapi.js';
2
2
  export type { Link, NavigationGroup, Image, Seo, FeatureItem, HighlightItem, SliderItem, BentoItem, TestimonialItem, LogoItem, StatItem, PricingTier, TeamMember, AnalyticsSetting, ChatbotSetting, SiteVerification, BrandColors, Section, Footer, HeroBlock, FeaturesBlock, CtaBlock, SliderBlock, InquiryFormBlock, FaqBlock, HighlightsBlock, BentoGridBlock, TestimonialsBlock, LogoCloudBlock, StatsBlock, PricingBlock, ContentBlock, TeamBlock, } from './components/index.js';
3
- export type { Page, PageDocument, PageBlocks, Article, ArticleDocument, Faq, FaqDocument, Inquiry, InquiryDocument, InquiryFormData, Category, CategoryDocument, Tag, TagDocument, Author, AuthorDocument, Series, SeriesDocument, Navigation, NavigationDocument, Global, GlobalDocument, SiteWideBlocks, SiteSettings, SiteSettingsDocument, } from './content-types/index.js';
3
+ export type { Page, PageDocument, PageBlocks, Article, ArticleDocument, Faq, FaqDocument, Inquiry, InquiryDocument, InquiryFormData, InquiryReceipt, Category, CategoryDocument, Tag, TagDocument, Author, AuthorDocument, Series, SeriesDocument, Navigation, NavigationDocument, Global, GlobalDocument, SiteWideBlocks, SiteSettings, SiteSettingsDocument, } from './content-types/index.js';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,cAAc,EACd,YAAY,EACZ,SAAS,EACT,aAAa,EACb,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,IAAI,EACJ,eAAe,EACf,KAAK,EACL,GAAG,EACH,WAAW,EACX,aAAa,EACb,UAAU,EACV,SAAS,EACT,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,aAAa,EACb,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,OAAO,EACP,eAAe,EACf,GAAG,EACH,WAAW,EACX,OAAO,EACP,eAAe,EACf,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,GAAG,EACH,WAAW,EACX,MAAM,EACN,cAAc,EACd,MAAM,EACN,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,MAAM,EACN,cAAc,EACd,cAAc,EACd,YAAY,EACZ,oBAAoB,GACrB,MAAM,0BAA0B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,eAAe,EACf,cAAc,EACd,wBAAwB,EACxB,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,SAAS,EACT,cAAc,EACd,YAAY,EACZ,SAAS,EACT,aAAa,EACb,UAAU,EACV,SAAS,EACT,UAAU,EACV,eAAe,EACf,cAAc,EACd,cAAc,GACf,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,IAAI,EACJ,eAAe,EACf,KAAK,EACL,GAAG,EACH,WAAW,EACX,aAAa,EACb,UAAU,EACV,SAAS,EACT,eAAe,EACf,QAAQ,EACR,QAAQ,EACR,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,aAAa,EACb,QAAQ,EACR,WAAW,EACX,gBAAgB,EAChB,QAAQ,EACR,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,cAAc,EACd,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,MAAM,uBAAuB,CAAC;AAE/B,YAAY,EACV,IAAI,EACJ,YAAY,EACZ,UAAU,EACV,OAAO,EACP,eAAe,EACf,GAAG,EACH,WAAW,EACX,OAAO,EACP,eAAe,EACf,eAAe,EACf,cAAc,EACd,QAAQ,EACR,gBAAgB,EAChB,GAAG,EACH,WAAW,EACX,MAAM,EACN,cAAc,EACd,MAAM,EACN,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,MAAM,EACN,cAAc,EACd,cAAc,EACd,YAAY,EACZ,oBAAoB,GACrB,MAAM,0BAA0B,CAAC"}
package/docs/api-guide.md CHANGED
@@ -40,7 +40,7 @@ const client = createStrapiClient({
40
40
  | `getAuthorBySlug(client, slug)` | GET | `/api/builder/authors` | `AuthorDocument \| null` | Filter by slug |
41
41
  | `listSeries(client, opts?)` | GET | `/api/builder/all-series` | `{ data, meta }` | Note: `/all-series` not `/series`; pagination: `page`, `pageSize` |
42
42
  | `getSeriesBySlug(client, slug, locale?)` | GET | `/api/builder/all-series` | `SeriesDocument \| null` | Filter by slug |
43
- | `postInquiry(client, data)` | POST | `/api/builder/inquiries` | `InquiryDocument` | Body: `InquiryFormData` |
43
+ | `postInquiry(client, data)` | POST | `/api/builder/inquiries` | `InquiryReceipt` | Body: `InquiryFormData` |
44
44
 
45
45
  ## Smart vs REST
46
46
 
@@ -71,7 +71,8 @@ Populate builders construct the nested `populate` parameter for REST queries:
71
71
  | `getArticleListPopulate()` | Article list with cover, categories, tags, author |
72
72
  | `getNavigationPopulate()` | Navigation with logos and nav groups |
73
73
  | `getSiteSettingsPopulate()` | SiteSettings with analytics, chatbot, verifications |
74
- | `getFaqPopulate()` | FAQ with category |
74
+ | `getFaqPopulate()` | FAQ with one nullable category |
75
+ | `getCategoryPopulate()` | Category with its FAQ collection and each FAQ's single category |
75
76
 
76
77
  **Extending with custom blocks:**
77
78
 
@@ -123,14 +124,32 @@ const global = await getGlobal(client, { locale: 'ko' });
123
124
  ### Submit inquiry
124
125
 
125
126
  ```ts
126
- const inquiry = await postInquiry(client, {
127
- name: 'John Doe',
128
- email: 'john@example.com',
129
- subject: 'General inquiry',
130
- message: 'Hello...',
127
+ const receipt = await postInquiry(client, {
128
+ name: "John Doe",
129
+ consent: true,
130
+ consentVersion: "1",
131
+ idempotencyKey: crypto.randomUUID(),
132
+ email: "john@example.com",
133
+ subject: "General inquiry",
134
+ message: "Hello...",
131
135
  });
132
136
  ```
133
137
 
138
+ The response is only `{ accepted: true }`, including on replay; it contains no
139
+ submission fields, IDs, or keys. `InquiryDocument` describes internal/admin
140
+ records, whose audit fields may be null for legacy submissions. Public Inquiry
141
+ read, update, and delete routes are unavailable.
142
+
143
+ Consent must be literal `true`, with a nonempty printable ASCII version identifier
144
+ (up to 120 characters) identifying the notice shown to the submitter. Keep the
145
+ same idempotency key across retries of unchanged input. Keys are trimmed, case
146
+ sensitive, at most 128 characters, and use letters, digits, `.`, `_`, `:`, or `-`
147
+ (starting with a letter or digit). A changed payload using an existing key gets
148
+ the original acceptance receipt without overwriting the record. Generate a new
149
+ key for a new submission. Keys are optional for older integrations, but omitted
150
+ keys are stored as SQL NULL and every such request creates an independent row.
151
+ See [consumer configuration and migration](../../../docs/guides/extending-builder.md#inquiry-validation-and-additive-fields).
152
+
134
153
  ## Media URL Resolution
135
154
 
136
155
  ```ts
@@ -221,3 +240,9 @@ export const fetchPage = (docId: string, locale?: string) =>
221
240
  export const fetchGlobal = (locale?: string) =>
222
241
  getGlobal(strapi, { locale });
223
242
  ```
243
+
244
+ ## FAQ categories
245
+
246
+ Many FAQs can share one category. `FaqDocument.category` remains a single category or `null`. Category lists omit the reverse relation by default; request it with `listCategories(client, { populateFaqs: true, locale: 'en' })`. When populated, `CategoryDocument.faqs` is an array, including `[]` for a category with no visible FAQs. `getCategoryPopulate()` returns `{ faqs: { populate: { category: true } } }` for custom REST queries; nested categories omit their own FAQs, so population stays finite. Normal Strapi publication, locale, and authorization rules apply to populated FAQs.
247
+
248
+ Upgrading the builder plugin preserves existing links during schema synchronization on SQLite and PostgreSQL. Take a database backup before upgrading and confirm FAQ categories after the first boot. Once categories have multiple FAQs, a downgrade to the previous one-to-one schema is unsafe; restore the backup or first reduce each category to one FAQ document, checking draft/published and locale records.
@@ -124,6 +124,8 @@ lives inside the nested `section` component, not at the block root.
124
124
  | `section` | component `elements.section` | — | — | — |
125
125
  | `successMessage` | text | — | — | — |
126
126
  | `errorMessage` | text | — | — | — |
127
+ | `consentLabel` | text | — | — | — |
128
+ | `consentVersion` | string | — | — | maxLength 120 |
127
129
 
128
130
  ## Logo Cloud
129
131
 
@@ -81,6 +81,7 @@ Unified category for articles and FAQs
81
81
  | `description` | text | — | — | — |
82
82
  | `sortOrder` | integer | — | — | — |
83
83
  | `articles` | relation `manyToMany` → `plugin::builder.article` | — | — | — |
84
+ | `faqs` | relation `oneToMany` → `plugin::builder.faq` | — | — | — |
84
85
 
85
86
  ## FAQ
86
87
 
@@ -91,7 +92,7 @@ Frequently asked question entry
91
92
  | `question` | string | — | — | maxLength 255 |
92
93
  | `answer` | blocks | — | — | — |
93
94
  | `sortOrder` | integer | — | — | — |
94
- | `category` | relation `oneToOne` → `plugin::builder.category` | — | — | — |
95
+ | `category` | relation `manyToOne` → `plugin::builder.category` | — | — | — |
95
96
 
96
97
  ## Global
97
98
 
@@ -121,6 +122,11 @@ Contact form submission data
121
122
  | `phone` | string | — | — | maxLength 40 |
122
123
  | `subject` | string | — | — | maxLength 200 |
123
124
  | `message` | text | — | — | maxLength 5000 |
125
+ | `consent` | boolean | — | — | — |
126
+ | `consentAt` | datetime | — | — | — |
127
+ | `consentVersion` | string | — | — | maxLength 120 |
128
+ | `processingStatus` | enumeration | — | — | `received`, `reviewing`, `responded`, `closed` |
129
+ | `idempotencyKey` | string | — | — | maxLength 128 |
124
130
 
125
131
  ## Legal Document
126
132
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dani-builder/strapi-client",
3
- "version": "0.10.0",
3
+ "version": "0.12.0",
4
4
  "description": "TypeScript client for Daniworks Builder CMS (Strapi v5)",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -28,6 +28,18 @@
28
28
  "./utils": {
29
29
  "types": "./dist/utils/index.d.ts",
30
30
  "import": "./dist/utils/index.js"
31
+ },
32
+ "./preview": {
33
+ "types": "./dist/preview.d.cts",
34
+ "import": "./dist/preview.cjs",
35
+ "require": "./dist/preview.cjs"
36
+ }
37
+ },
38
+ "typesVersions": {
39
+ "*": {
40
+ "preview": [
41
+ "dist/preview.d.cts"
42
+ ]
31
43
  }
32
44
  },
33
45
  "files": [
@@ -47,12 +59,14 @@
47
59
  },
48
60
  "dependencies": {
49
61
  "axios": "^1.19.0",
50
- "qs": "^6.15.3"
62
+ "qs": "^6.15.3",
63
+ "@dani-builder/agent-contract": "0.5.0"
51
64
  },
52
65
  "devDependencies": {
53
66
  "@types/qs": "^6.15.1",
54
67
  "eslint": "^10.8.1",
55
68
  "typescript": "^6.0.3",
69
+ "@types/node": "^26",
56
70
  "@repo/eslint-config": "0.0.0",
57
71
  "@repo/typescript-config": "0.0.0"
58
72
  },