@no-mess/client 0.2.0 → 0.4.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 (46) hide show
  1. package/README.md +108 -125
  2. package/dist/client.d.ts +12 -2
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +250 -41
  5. package/dist/client.js.map +1 -1
  6. package/dist/error-utils.d.ts +20 -0
  7. package/dist/error-utils.d.ts.map +1 -0
  8. package/dist/error-utils.js +67 -0
  9. package/dist/error-utils.js.map +1 -0
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +152 -22
  13. package/dist/index.js.map +1 -1
  14. package/dist/live-edit.d.ts.map +1 -1
  15. package/dist/live-edit.js +263 -102
  16. package/dist/live-edit.js.map +1 -1
  17. package/dist/logging.d.ts +6 -0
  18. package/dist/logging.d.ts.map +1 -0
  19. package/dist/logging.js +58 -0
  20. package/dist/logging.js.map +1 -0
  21. package/dist/react/index.d.ts +3 -1
  22. package/dist/react/index.d.ts.map +1 -1
  23. package/dist/react/index.js +2 -0
  24. package/dist/react/index.js.map +1 -1
  25. package/dist/react/no-mess-field.d.ts +10 -0
  26. package/dist/react/no-mess-field.d.ts.map +1 -0
  27. package/dist/react/no-mess-field.js +7 -0
  28. package/dist/react/no-mess-field.js.map +1 -0
  29. package/dist/react/no-mess-preview.d.ts +2 -6
  30. package/dist/react/no-mess-preview.d.ts.map +1 -1
  31. package/dist/react/no-mess-preview.js.map +1 -1
  32. package/dist/react/no-mess-provider.d.ts +21 -0
  33. package/dist/react/no-mess-provider.d.ts.map +1 -0
  34. package/dist/react/no-mess-provider.js +286 -0
  35. package/dist/react/no-mess-provider.js.map +1 -0
  36. package/dist/react/use-no-mess-live-edit.d.ts.map +1 -1
  37. package/dist/react/use-no-mess-live-edit.js +32 -2
  38. package/dist/react/use-no-mess-live-edit.js.map +1 -1
  39. package/dist/react/use-no-mess-preview.d.ts.map +1 -1
  40. package/dist/react/use-no-mess-preview.js +29 -6
  41. package/dist/react/use-no-mess-preview.js.map +1 -1
  42. package/dist/types.d.ts +78 -2
  43. package/dist/types.d.ts.map +1 -1
  44. package/dist/types.js +23 -4
  45. package/dist/types.js.map +1 -1
  46. package/package.json +1 -1
package/dist/client.js CHANGED
@@ -1,54 +1,172 @@
1
- import { DEFAULT_API_URL, NoMessError } from "./types.js";
1
+ import { createNoMessCryptoError, createNoMessHttpError, createNoMessResponseError, extractRequestId, normalizeNoMessError, safeParseJsonText, } from "./error-utils.js";
2
+ import { createSdkLogger, warnOnce } from "./logging.js";
3
+ import { DEFAULT_API_URL } from "./types.js";
2
4
  export class NoMessClient {
3
5
  constructor(config) {
4
6
  this.apiUrl = (config.apiUrl ?? DEFAULT_API_URL).replace(/\/$/, "");
5
7
  this.apiKey = config.apiKey;
8
+ this.logger = createSdkLogger(config.logger);
6
9
  if (typeof window !== "undefined" &&
7
10
  config.apiKey.startsWith("nm_") &&
8
11
  !config.apiKey.startsWith("nm_pub_")) {
9
- console.warn("[no-mess] You are using a secret API key (nm_) in a browser environment. " +
10
- "This exposes your secret key to end users. " +
11
- "Use a publishable key (nm_pub_) for client-side code instead.");
12
+ warnOnce(this.logger, "secret-key-in-browser", {
13
+ level: "warn",
14
+ code: "secret_key_in_browser",
15
+ message: "You are using a secret API key (nm_) in a browser environment. This exposes your secret key to end users. Use a publishable key (nm_pub_) for client-side code instead.",
16
+ scope: "client",
17
+ operation: "constructor",
18
+ timestamp: new Date().toISOString(),
19
+ context: {
20
+ apiUrl: this.apiUrl,
21
+ },
22
+ });
12
23
  }
13
24
  }
14
- async fetch(path, params) {
25
+ emitErrorLog(error, scope, operation, level = "error", extraContext) {
26
+ this.logger({
27
+ level,
28
+ code: error.code,
29
+ message: error.message,
30
+ scope,
31
+ operation,
32
+ error,
33
+ timestamp: new Date().toISOString(),
34
+ context: {
35
+ status: error.status,
36
+ retryable: error.retryable,
37
+ requestId: error.requestId,
38
+ ...error.details,
39
+ ...extraContext,
40
+ },
41
+ });
42
+ }
43
+ async readResponseText(response, operation, method, url) {
44
+ try {
45
+ if (typeof response.text === "function") {
46
+ return await response.text();
47
+ }
48
+ if (typeof response.json === "function") {
49
+ return JSON.stringify(await response.json());
50
+ }
51
+ }
52
+ catch (error) {
53
+ throw createNoMessResponseError("Failed to read response body", {
54
+ kind: "response",
55
+ code: "invalid_success_response",
56
+ operation,
57
+ method,
58
+ url,
59
+ requestId: extractRequestId(response),
60
+ cause: error,
61
+ });
62
+ }
63
+ return "";
64
+ }
65
+ async request({ method, path, params, body, operation, }) {
15
66
  const url = new URL(`${this.apiUrl}${path}`);
16
67
  if (params) {
17
68
  for (const [key, value] of Object.entries(params)) {
18
69
  url.searchParams.set(key, value);
19
70
  }
20
71
  }
21
- const response = await fetch(url.toString(), {
72
+ const requestUrl = url.toString();
73
+ const init = {
74
+ method,
22
75
  headers: {
23
76
  Authorization: `Bearer ${this.apiKey}`,
24
77
  "Content-Type": "application/json",
25
78
  },
26
- });
79
+ };
80
+ if (typeof body !== "undefined") {
81
+ init.body = JSON.stringify(body);
82
+ }
83
+ let response;
84
+ try {
85
+ response = await fetch(requestUrl, init);
86
+ }
87
+ catch (error) {
88
+ const normalized = normalizeNoMessError(error, {
89
+ kind: "network",
90
+ code: "request_failed",
91
+ operation,
92
+ method,
93
+ url: requestUrl,
94
+ retryable: true,
95
+ });
96
+ this.emitErrorLog(normalized, "client", operation);
97
+ throw normalized;
98
+ }
99
+ const requestId = extractRequestId(response);
100
+ const text = await this.readResponseText(response, operation, method, requestUrl);
27
101
  if (!response.ok) {
28
- const body = await response
29
- .json()
30
- .catch(() => ({ error: "Unknown error" }));
31
- throw new NoMessError(body.error ?? `HTTP ${response.status}`, response.status);
102
+ const parsed = text.trim() ? safeParseJsonText(text) : null;
103
+ const parsedBody = parsed?.ok && parsed.value && typeof parsed.value === "object"
104
+ ? parsed.value
105
+ : null;
106
+ const message = typeof parsedBody?.error === "string" && parsedBody.error.trim()
107
+ ? parsedBody.error
108
+ : text.trim() || `HTTP ${response.status}`;
109
+ const error = createNoMessHttpError(message, {
110
+ kind: "http",
111
+ code: "http_error",
112
+ status: response.status,
113
+ operation,
114
+ method,
115
+ url: requestUrl,
116
+ requestId,
117
+ retryable: response.status >= 500,
118
+ });
119
+ this.emitErrorLog(error, "client", operation);
120
+ throw error;
121
+ }
122
+ const parsed = safeParseJsonText(text);
123
+ if (!parsed.ok) {
124
+ const error = createNoMessResponseError("Received invalid JSON response", {
125
+ kind: "response",
126
+ code: "invalid_success_response",
127
+ operation,
128
+ method,
129
+ url: requestUrl,
130
+ requestId,
131
+ details: {
132
+ responseText: text.slice(0, 200),
133
+ },
134
+ cause: parsed.error,
135
+ });
136
+ this.emitErrorLog(error, "client", operation);
137
+ throw error;
32
138
  }
33
- return response.json();
139
+ return parsed.value;
34
140
  }
35
141
  /**
36
142
  * List all content type schemas with fields, TypeScript interfaces, and entry counts.
37
143
  */
38
144
  async getSchemas() {
39
- return this.fetch("/api/schema");
145
+ return this.request({
146
+ method: "GET",
147
+ path: "/api/schema",
148
+ operation: "getSchemas",
149
+ });
40
150
  }
41
151
  /**
42
152
  * Get a single content type schema by slug.
43
153
  */
44
154
  async getSchema(typeSlug) {
45
- return this.fetch(`/api/schema/${typeSlug}`);
155
+ return this.request({
156
+ method: "GET",
157
+ path: `/api/schema/${typeSlug}`,
158
+ operation: "getSchema",
159
+ });
46
160
  }
47
161
  /**
48
162
  * Get all published entries of a content type.
49
163
  */
50
164
  async getEntries(contentType) {
51
- return this.fetch(`/api/content/${contentType}`);
165
+ return this.request({
166
+ method: "GET",
167
+ path: `/api/content/${contentType}`,
168
+ operation: "getEntries",
169
+ });
52
170
  }
53
171
  /**
54
172
  * Get a single entry by content type and slug.
@@ -62,31 +180,52 @@ export class NoMessClient {
62
180
  params.secret = options.previewSecret;
63
181
  }
64
182
  }
65
- return this.fetch(`/api/content/${contentType}/${slug}`, params);
183
+ return this.request({
184
+ method: "GET",
185
+ path: `/api/content/${contentType}/${slug}`,
186
+ params,
187
+ operation: "getEntry",
188
+ });
66
189
  }
67
190
  /**
68
191
  * Get all synced Shopify products.
69
192
  */
70
193
  async getProducts() {
71
- return this.fetch("/api/shopify/products");
194
+ return this.request({
195
+ method: "GET",
196
+ path: "/api/shopify/products",
197
+ operation: "getProducts",
198
+ });
72
199
  }
73
200
  /**
74
201
  * Get a single Shopify product by handle.
75
202
  */
76
203
  async getProduct(handle) {
77
- return this.fetch(`/api/shopify/products/${handle}`);
204
+ return this.request({
205
+ method: "GET",
206
+ path: `/api/shopify/products/${handle}`,
207
+ operation: "getProduct",
208
+ });
78
209
  }
79
210
  /**
80
211
  * Get all synced Shopify collections.
81
212
  */
82
213
  async getCollections() {
83
- return this.fetch("/api/shopify/collections");
214
+ return this.request({
215
+ method: "GET",
216
+ path: "/api/shopify/collections",
217
+ operation: "getCollections",
218
+ });
84
219
  }
85
220
  /**
86
221
  * Get a single Shopify collection by handle.
87
222
  */
88
223
  async getCollection(handle) {
89
- return this.fetch(`/api/shopify/collections/${handle}`);
224
+ return this.request({
225
+ method: "GET",
226
+ path: `/api/shopify/collections/${handle}`,
227
+ operation: "getCollection",
228
+ });
90
229
  }
91
230
  /**
92
231
  * Exchange a preview session for draft content.
@@ -95,40 +234,110 @@ export class NoMessClient {
95
234
  async exchangePreviewSession(session) {
96
235
  const timestamp = Math.floor(Date.now() / 1000).toString();
97
236
  const proof = await this.computeProof(session.sessionSecret, session.sessionId, timestamp);
98
- const response = await fetch(`${this.apiUrl}/api/preview/exchange`, {
237
+ return this.request({
99
238
  method: "POST",
100
- headers: {
101
- Authorization: `Bearer ${this.apiKey}`,
102
- "Content-Type": "application/json",
103
- },
104
- body: JSON.stringify({
239
+ path: "/api/preview/exchange",
240
+ operation: "exchangePreviewSession",
241
+ body: {
105
242
  sessionId: session.sessionId,
106
243
  timestamp,
107
244
  proof,
108
- }),
245
+ },
246
+ });
247
+ }
248
+ /**
249
+ * Report that an entry is rendered on the current site URL for route-aware live edit.
250
+ */
251
+ async reportLiveEditRoute(options) {
252
+ return this.request({
253
+ method: "POST",
254
+ path: "/api/live-edit/routes/report",
255
+ operation: "reportLiveEditRoute",
256
+ body: options,
109
257
  });
110
- if (!response.ok) {
111
- const body = await response
112
- .json()
113
- .catch(() => ({ error: "Unknown error" }));
114
- throw new NoMessError(body.error ?? `HTTP ${response.status}`, response.status);
115
- }
116
- return response.json();
117
258
  }
118
259
  /**
119
260
  * Compute HMAC-SHA256 proof for preview session authentication.
120
261
  * Uses Web Crypto API (works in browsers, Node.js 18+, Deno, Bun, edge runtimes).
121
262
  */
122
263
  async computeProof(sessionSecret, sessionId, timestamp) {
264
+ if (!sessionSecret ||
265
+ sessionSecret.length % 2 !== 0 ||
266
+ !/^[0-9a-fA-F]+$/.test(sessionSecret)) {
267
+ const error = createNoMessCryptoError("Preview session secret must be a valid hex string", {
268
+ kind: "crypto",
269
+ code: "invalid_session_secret",
270
+ operation: "computeProof",
271
+ details: {
272
+ sessionId,
273
+ },
274
+ });
275
+ this.emitErrorLog(error, "client", "computeProof");
276
+ throw error;
277
+ }
278
+ if (typeof crypto === "undefined" || !crypto.subtle) {
279
+ const error = createNoMessCryptoError("Web Crypto API is not available in this runtime", {
280
+ kind: "crypto",
281
+ code: "crypto_unavailable",
282
+ operation: "computeProof",
283
+ details: {
284
+ sessionId,
285
+ },
286
+ });
287
+ this.emitErrorLog(error, "client", "computeProof");
288
+ throw error;
289
+ }
123
290
  const secretBytes = new Uint8Array((sessionSecret.match(/.{2}/g) ?? []).map((byte) => parseInt(byte, 16)));
124
- const buf = new ArrayBuffer(secretBytes.byteLength);
125
- new Uint8Array(buf).set(secretBytes);
126
- const key = await crypto.subtle.importKey("raw", buf, { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
291
+ let key;
292
+ try {
293
+ key = await crypto.subtle.importKey("raw", secretBytes, { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
294
+ }
295
+ catch (error) {
296
+ const normalized = createNoMessCryptoError("Failed to initialize preview proof signing key", {
297
+ kind: "crypto",
298
+ code: "invalid_session_secret",
299
+ operation: "computeProof",
300
+ details: {
301
+ sessionId,
302
+ },
303
+ cause: error,
304
+ });
305
+ this.emitErrorLog(normalized, "client", "computeProof");
306
+ throw normalized;
307
+ }
127
308
  const message = new TextEncoder().encode(`${sessionId}.${timestamp}`);
128
- const msgBuf = new ArrayBuffer(message.byteLength);
129
- new Uint8Array(msgBuf).set(message);
130
- const signature = await crypto.subtle.sign("HMAC", key, msgBuf);
131
- return btoa(String.fromCharCode(...new Uint8Array(signature)));
309
+ try {
310
+ const signature = await crypto.subtle.sign("HMAC", key, message);
311
+ return this.toBase64(new Uint8Array(signature));
312
+ }
313
+ catch (error) {
314
+ const normalized = createNoMessCryptoError("Failed to sign preview proof", {
315
+ kind: "crypto",
316
+ code: "crypto_unavailable",
317
+ operation: "computeProof",
318
+ details: {
319
+ sessionId,
320
+ },
321
+ cause: error,
322
+ });
323
+ this.emitErrorLog(normalized, "client", "computeProof");
324
+ throw normalized;
325
+ }
326
+ }
327
+ toBase64(bytes) {
328
+ const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
329
+ let output = "";
330
+ for (let index = 0; index < bytes.length; index += 3) {
331
+ const a = bytes[index] ?? 0;
332
+ const b = bytes[index + 1] ?? 0;
333
+ const c = bytes[index + 2] ?? 0;
334
+ const chunk = (a << 16) | (b << 8) | c;
335
+ output += alphabet[(chunk >> 18) & 0x3f];
336
+ output += alphabet[(chunk >> 12) & 0x3f];
337
+ output += index + 1 < bytes.length ? alphabet[(chunk >> 6) & 0x3f] : "=";
338
+ output += index + 2 < bytes.length ? alphabet[chunk & 0x3f] : "=";
339
+ }
340
+ return output;
132
341
  }
133
342
  }
134
343
  //# sourceMappingURL=client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { NoMessError, type NoMessErrorCode, type NoMessErrorKind, type NoMessErrorOptions } from "./types.js";
2
+ interface ErrorMetadata extends NoMessErrorOptions {
3
+ kind: NoMessErrorKind;
4
+ code: NoMessErrorCode;
5
+ }
6
+ export declare function safeParseJsonText(text: string): {
7
+ ok: true;
8
+ value: unknown;
9
+ } | {
10
+ ok: false;
11
+ error: Error;
12
+ };
13
+ export declare function extractRequestId(response: Response): string | undefined;
14
+ export declare function normalizeNoMessError(input: unknown, metadata: ErrorMetadata): NoMessError;
15
+ export declare function createNoMessHttpError(message: string, metadata: ErrorMetadata): NoMessError;
16
+ export declare function createNoMessResponseError(message: string, metadata: ErrorMetadata): NoMessError;
17
+ export declare function createNoMessProtocolError(message: string, metadata: ErrorMetadata): NoMessError;
18
+ export declare function createNoMessCryptoError(message: string, metadata: ErrorMetadata): NoMessError;
19
+ export {};
20
+ //# sourceMappingURL=error-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-utils.d.ts","sourceRoot":"","sources":["../src/error-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AAEpB,UAAU,aAAc,SAAQ,kBAAkB;IAChD,IAAI,EAAE,eAAe,CAAC;IACtB,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAC1C;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAC5B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,KAAK,CAAA;CAAE,CAS9B;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAWvE;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,QAAQ,EAAE,aAAa,GACtB,WAAW,CAuBb;AAED,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,GACtB,WAAW,CAMb;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,GACtB,WAAW,CAKb;AAED,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,GACtB,WAAW,CAKb;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,GACtB,WAAW,CAKb"}
@@ -0,0 +1,67 @@
1
+ import { NoMessError, } from "./types.js";
2
+ export function safeParseJsonText(text) {
3
+ try {
4
+ return { ok: true, value: JSON.parse(text) };
5
+ }
6
+ catch (error) {
7
+ return {
8
+ ok: false,
9
+ error: error instanceof Error ? error : new Error(String(error)),
10
+ };
11
+ }
12
+ }
13
+ export function extractRequestId(response) {
14
+ try {
15
+ return (response.headers.get("x-request-id") ??
16
+ response.headers.get("cf-ray") ??
17
+ response.headers.get("traceparent") ??
18
+ undefined);
19
+ }
20
+ catch {
21
+ return undefined;
22
+ }
23
+ }
24
+ export function normalizeNoMessError(input, metadata) {
25
+ if (input instanceof NoMessError) {
26
+ return input;
27
+ }
28
+ if (input instanceof Error) {
29
+ return new NoMessError(input.message, {
30
+ ...metadata,
31
+ retryable: metadata.retryable ?? false,
32
+ details: { ...metadata.details, originalName: input.name },
33
+ cause: input,
34
+ });
35
+ }
36
+ return new NoMessError(typeof input === "string" ? input : "Unexpected error", {
37
+ ...metadata,
38
+ retryable: metadata.retryable ?? false,
39
+ details: { ...metadata.details, originalValue: input },
40
+ cause: input,
41
+ });
42
+ }
43
+ export function createNoMessHttpError(message, metadata) {
44
+ return new NoMessError(message, {
45
+ ...metadata,
46
+ retryable: metadata.retryable ?? (typeof metadata.status === "number" && metadata.status >= 500),
47
+ });
48
+ }
49
+ export function createNoMessResponseError(message, metadata) {
50
+ return new NoMessError(message, {
51
+ ...metadata,
52
+ retryable: metadata.retryable ?? false,
53
+ });
54
+ }
55
+ export function createNoMessProtocolError(message, metadata) {
56
+ return new NoMessError(message, {
57
+ ...metadata,
58
+ retryable: metadata.retryable ?? false,
59
+ });
60
+ }
61
+ export function createNoMessCryptoError(message, metadata) {
62
+ return new NoMessError(message, {
63
+ ...metadata,
64
+ retryable: metadata.retryable ?? false,
65
+ });
66
+ }
67
+ //# sourceMappingURL=error-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"error-utils.js","sourceRoot":"","sources":["../src/error-utils.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  export { NoMessClient } from "./client.js";
2
2
  export { createLiveEditHandler } from "./live-edit.js";
3
- export type { ContentTypeSchema, GetEntryOptions, LiveEditConfig, LiveEditHandle, NoMessClientConfig, NoMessEntry, PreviewExchangeResult, PreviewHandlerConfig, PreviewSessionAuth, SchemaGetResponse, SchemaListResponse, ShopifyCollection, ShopifyProduct, UseNoMessLiveEditConfig, UseNoMessLiveEditResult, UseNoMessPreviewConfig, UseNoMessPreviewResult, } from "./types.js";
3
+ export type { ContentTypeSchema, GetEntryOptions, LiveEditConfig, LiveEditHandle, NoMessClientConfig, NoMessEntry, NoMessErrorCode, NoMessErrorKind, NoMessErrorOptions, NoMessLiveRouteProviderProps, NoMessLogEvent, NoMessLogger, NoMessLogLevel, NoMessProviderProps, PreviewExchangeResult, PreviewHandlerConfig, PreviewSessionAuth, ReportLiveEditRouteOptions, SchemaGetResponse, SchemaListResponse, ShopifyCollection, ShopifyProduct, UseNoMessEditableEntryOptions, UseNoMessLiveEditConfig, UseNoMessLiveEditResult, UseNoMessPreviewConfig, UseNoMessPreviewResult, UseNoMessPreviewStatus, } from "./types.js";
4
4
  export { DEFAULT_ADMIN_ORIGIN, DEFAULT_API_URL, isPublishableKey, isSecretKey, NoMessError, } from "./types.js";
5
5
  import { NoMessClient } from "./client.js";
6
6
  import type { NoMessClientConfig, PreviewHandlerConfig } from "./types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,KAAK,EACV,kBAAkB,EAElB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAE3E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG;IAClE,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CA2DA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,eAAe,EACf,kBAAkB,EAClB,4BAA4B,EAC5B,cAAc,EACd,YAAY,EACZ,cAAc,EACd,mBAAmB,EACnB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,EAClB,0BAA0B,EAC1B,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,cAAc,EACd,6BAA6B,EAC7B,uBAAuB,EACvB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,WAAW,EACX,WAAW,GACZ,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAM3C,OAAO,KAAK,EACV,kBAAkB,EAGlB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAE3E;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG;IAClE,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAwQA"}