@fonderie/react-courier-admin 0.4.1 → 0.5.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/dist/index.cjs +128 -37
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +29 -3
- package/dist/index.d.ts +29 -3
- package/dist/index.js +124 -36
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -20,32 +20,36 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var index_exports = {};
|
|
22
22
|
__export(index_exports, {
|
|
23
|
-
CourierAdminClient: () =>
|
|
24
|
-
FonderieApiError: () =>
|
|
23
|
+
CourierAdminClient: () => import_client8.CourierAdminClient,
|
|
24
|
+
FonderieApiError: () => import_client8.FonderieApiError,
|
|
25
|
+
useBuiltInTemplate: () => useBuiltInTemplate,
|
|
25
26
|
useTemplate: () => useTemplate,
|
|
27
|
+
useTemplateCatalog: () => useTemplateCatalog,
|
|
26
28
|
useTemplatePreview: () => useTemplatePreview,
|
|
29
|
+
useTemplateResolution: () => useTemplateResolution,
|
|
27
30
|
useTemplateRevisions: () => useTemplateRevisions,
|
|
28
31
|
useTemplates: () => useTemplates
|
|
29
32
|
});
|
|
30
33
|
module.exports = __toCommonJS(index_exports);
|
|
31
|
-
var
|
|
34
|
+
var import_client8 = require("@fonderie/client");
|
|
32
35
|
|
|
33
|
-
// src/hooks/
|
|
36
|
+
// src/hooks/useBuiltInTemplate.ts
|
|
34
37
|
var import_client = require("@fonderie/client");
|
|
35
38
|
var import_react = require("react");
|
|
36
|
-
function
|
|
37
|
-
const [
|
|
39
|
+
function useBuiltInTemplate(client, type, locale) {
|
|
40
|
+
const [builtIn, setBuiltIn] = (0, import_react.useState)(null);
|
|
38
41
|
const [isLoading, setIsLoading] = (0, import_react.useState)(true);
|
|
39
42
|
const [error, setError] = (0, import_react.useState)(null);
|
|
40
43
|
const refresh = (0, import_react.useCallback)(async () => {
|
|
41
44
|
setIsLoading(true);
|
|
42
45
|
setError(null);
|
|
43
46
|
try {
|
|
44
|
-
const { result } = await client.
|
|
45
|
-
|
|
47
|
+
const { result } = await client.getBuiltInTemplate(type, locale);
|
|
48
|
+
setBuiltIn(result);
|
|
46
49
|
} catch (err) {
|
|
47
50
|
const apiError = err instanceof import_client.FonderieApiError ? err : new import_client.FonderieApiError("unknown", String(err), 0);
|
|
48
|
-
|
|
51
|
+
if (apiError.status === 404) setBuiltIn(null);
|
|
52
|
+
else setError(apiError);
|
|
49
53
|
} finally {
|
|
50
54
|
setIsLoading(false);
|
|
51
55
|
}
|
|
@@ -53,30 +57,114 @@ function useTemplate(client, type, locale) {
|
|
|
53
57
|
(0, import_react.useEffect)(() => {
|
|
54
58
|
void refresh();
|
|
55
59
|
}, [refresh]);
|
|
56
|
-
return {
|
|
60
|
+
return { builtIn, isLoading, error, refresh };
|
|
57
61
|
}
|
|
58
62
|
|
|
59
|
-
// src/hooks/
|
|
63
|
+
// src/hooks/useTemplateCatalog.ts
|
|
60
64
|
var import_client2 = require("@fonderie/client");
|
|
61
65
|
var import_react2 = require("react");
|
|
62
|
-
function
|
|
63
|
-
const [
|
|
66
|
+
function useTemplateCatalog(client) {
|
|
67
|
+
const [catalog, setCatalog] = (0, import_react2.useState)(null);
|
|
64
68
|
const [isLoading, setIsLoading] = (0, import_react2.useState)(true);
|
|
65
69
|
const [error, setError] = (0, import_react2.useState)(null);
|
|
66
70
|
const refresh = (0, import_react2.useCallback)(async () => {
|
|
71
|
+
setIsLoading(true);
|
|
72
|
+
setError(null);
|
|
73
|
+
try {
|
|
74
|
+
const { result } = await client.getTemplateCatalog();
|
|
75
|
+
setCatalog(result);
|
|
76
|
+
} catch (err) {
|
|
77
|
+
setError(
|
|
78
|
+
err instanceof import_client2.FonderieApiError ? err : new import_client2.FonderieApiError("unknown", String(err), 0)
|
|
79
|
+
);
|
|
80
|
+
} finally {
|
|
81
|
+
setIsLoading(false);
|
|
82
|
+
}
|
|
83
|
+
}, [client]);
|
|
84
|
+
(0, import_react2.useEffect)(() => {
|
|
85
|
+
void refresh();
|
|
86
|
+
}, [refresh]);
|
|
87
|
+
return { catalog, isLoading, error, refresh };
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
// src/hooks/useTemplateResolution.ts
|
|
91
|
+
var import_client3 = require("@fonderie/client");
|
|
92
|
+
var import_react3 = require("react");
|
|
93
|
+
function useTemplateResolution(client) {
|
|
94
|
+
const [resolution, setResolution] = (0, import_react3.useState)(null);
|
|
95
|
+
const [isResolving, setIsResolving] = (0, import_react3.useState)(false);
|
|
96
|
+
const [error, setError] = (0, import_react3.useState)(null);
|
|
97
|
+
const resolve = (0, import_react3.useCallback)(
|
|
98
|
+
async (type, locale) => {
|
|
99
|
+
setIsResolving(true);
|
|
100
|
+
setError(null);
|
|
101
|
+
try {
|
|
102
|
+
const { result } = await client.resolveTemplate(type, locale);
|
|
103
|
+
setResolution(result);
|
|
104
|
+
return result;
|
|
105
|
+
} catch (err) {
|
|
106
|
+
setError(
|
|
107
|
+
err instanceof import_client3.FonderieApiError ? err : new import_client3.FonderieApiError("unknown", String(err), 0)
|
|
108
|
+
);
|
|
109
|
+
setResolution(null);
|
|
110
|
+
return null;
|
|
111
|
+
} finally {
|
|
112
|
+
setIsResolving(false);
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
[client]
|
|
116
|
+
);
|
|
117
|
+
return { resolution, isResolving, error, resolve };
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// src/hooks/useTemplate.ts
|
|
121
|
+
var import_client4 = require("@fonderie/client");
|
|
122
|
+
var import_react4 = require("react");
|
|
123
|
+
function useTemplate(client, type, locale) {
|
|
124
|
+
const [template, setTemplate] = (0, import_react4.useState)(null);
|
|
125
|
+
const [isLoading, setIsLoading] = (0, import_react4.useState)(true);
|
|
126
|
+
const [error, setError] = (0, import_react4.useState)(null);
|
|
127
|
+
const refresh = (0, import_react4.useCallback)(async () => {
|
|
128
|
+
setIsLoading(true);
|
|
129
|
+
setError(null);
|
|
130
|
+
try {
|
|
131
|
+
const { result } = await client.getTemplate(type, locale);
|
|
132
|
+
setTemplate(result);
|
|
133
|
+
} catch (err) {
|
|
134
|
+
const apiError = err instanceof import_client4.FonderieApiError ? err : new import_client4.FonderieApiError("unknown", String(err), 0);
|
|
135
|
+
if (apiError.status === 404) setTemplate(null);
|
|
136
|
+
setError(apiError);
|
|
137
|
+
} finally {
|
|
138
|
+
setIsLoading(false);
|
|
139
|
+
}
|
|
140
|
+
}, [client, type, locale]);
|
|
141
|
+
(0, import_react4.useEffect)(() => {
|
|
142
|
+
void refresh();
|
|
143
|
+
}, [refresh]);
|
|
144
|
+
return { template, isLoading, error, refresh };
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// src/hooks/useTemplateRevisions.ts
|
|
148
|
+
var import_client5 = require("@fonderie/client");
|
|
149
|
+
var import_react5 = require("react");
|
|
150
|
+
function useTemplateRevisions(client, type, locale) {
|
|
151
|
+
const [revisions, setRevisions] = (0, import_react5.useState)([]);
|
|
152
|
+
const [isLoading, setIsLoading] = (0, import_react5.useState)(true);
|
|
153
|
+
const [error, setError] = (0, import_react5.useState)(null);
|
|
154
|
+
const refresh = (0, import_react5.useCallback)(async () => {
|
|
67
155
|
setIsLoading(true);
|
|
68
156
|
setError(null);
|
|
69
157
|
try {
|
|
70
158
|
const { result } = await client.listRevisions(type, locale);
|
|
71
159
|
setRevisions(result);
|
|
72
160
|
} catch (err) {
|
|
73
|
-
const apiError = err instanceof
|
|
161
|
+
const apiError = err instanceof import_client5.FonderieApiError ? err : new import_client5.FonderieApiError("unknown", String(err), 0);
|
|
74
162
|
setError(apiError);
|
|
75
163
|
} finally {
|
|
76
164
|
setIsLoading(false);
|
|
77
165
|
}
|
|
78
166
|
}, [client, type, locale]);
|
|
79
|
-
const rollback = (0,
|
|
167
|
+
const rollback = (0, import_react5.useCallback)(
|
|
80
168
|
async (toVersion) => {
|
|
81
169
|
setError(null);
|
|
82
170
|
try {
|
|
@@ -84,40 +172,40 @@ function useTemplateRevisions(client, type, locale) {
|
|
|
84
172
|
await refresh();
|
|
85
173
|
return result;
|
|
86
174
|
} catch (err) {
|
|
87
|
-
const apiError = err instanceof
|
|
175
|
+
const apiError = err instanceof import_client5.FonderieApiError ? err : new import_client5.FonderieApiError("unknown", String(err), 0);
|
|
88
176
|
setError(apiError);
|
|
89
177
|
throw apiError;
|
|
90
178
|
}
|
|
91
179
|
},
|
|
92
180
|
[client, type, locale, refresh]
|
|
93
181
|
);
|
|
94
|
-
(0,
|
|
182
|
+
(0, import_react5.useEffect)(() => {
|
|
95
183
|
void refresh();
|
|
96
184
|
}, [refresh]);
|
|
97
185
|
return { revisions, isLoading, error, refresh, rollback };
|
|
98
186
|
}
|
|
99
187
|
|
|
100
188
|
// src/hooks/useTemplates.ts
|
|
101
|
-
var
|
|
102
|
-
var
|
|
189
|
+
var import_client6 = require("@fonderie/client");
|
|
190
|
+
var import_react6 = require("react");
|
|
103
191
|
function useTemplates(client) {
|
|
104
|
-
const [templates, setTemplates] = (0,
|
|
105
|
-
const [isLoading, setIsLoading] = (0,
|
|
106
|
-
const [error, setError] = (0,
|
|
107
|
-
const refresh = (0,
|
|
192
|
+
const [templates, setTemplates] = (0, import_react6.useState)([]);
|
|
193
|
+
const [isLoading, setIsLoading] = (0, import_react6.useState)(true);
|
|
194
|
+
const [error, setError] = (0, import_react6.useState)(null);
|
|
195
|
+
const refresh = (0, import_react6.useCallback)(async () => {
|
|
108
196
|
setIsLoading(true);
|
|
109
197
|
setError(null);
|
|
110
198
|
try {
|
|
111
199
|
const { result } = await client.listTemplates();
|
|
112
200
|
setTemplates(result);
|
|
113
201
|
} catch (err) {
|
|
114
|
-
const apiError = err instanceof
|
|
202
|
+
const apiError = err instanceof import_client6.FonderieApiError ? err : new import_client6.FonderieApiError("unknown", String(err), 0);
|
|
115
203
|
setError(apiError);
|
|
116
204
|
} finally {
|
|
117
205
|
setIsLoading(false);
|
|
118
206
|
}
|
|
119
207
|
}, [client]);
|
|
120
|
-
const saveTemplate = (0,
|
|
208
|
+
const saveTemplate = (0, import_react6.useCallback)(
|
|
121
209
|
async (type, input, locale) => {
|
|
122
210
|
setError(null);
|
|
123
211
|
try {
|
|
@@ -125,41 +213,41 @@ function useTemplates(client) {
|
|
|
125
213
|
await refresh();
|
|
126
214
|
return result;
|
|
127
215
|
} catch (err) {
|
|
128
|
-
const apiError = err instanceof
|
|
216
|
+
const apiError = err instanceof import_client6.FonderieApiError ? err : new import_client6.FonderieApiError("unknown", String(err), 0);
|
|
129
217
|
setError(apiError);
|
|
130
218
|
throw apiError;
|
|
131
219
|
}
|
|
132
220
|
},
|
|
133
221
|
[client, refresh]
|
|
134
222
|
);
|
|
135
|
-
const removeTemplate = (0,
|
|
223
|
+
const removeTemplate = (0, import_react6.useCallback)(
|
|
136
224
|
async (type, locale) => {
|
|
137
225
|
setError(null);
|
|
138
226
|
try {
|
|
139
227
|
await client.deleteTemplate(type, locale);
|
|
140
228
|
await refresh();
|
|
141
229
|
} catch (err) {
|
|
142
|
-
const apiError = err instanceof
|
|
230
|
+
const apiError = err instanceof import_client6.FonderieApiError ? err : new import_client6.FonderieApiError("unknown", String(err), 0);
|
|
143
231
|
setError(apiError);
|
|
144
232
|
throw apiError;
|
|
145
233
|
}
|
|
146
234
|
},
|
|
147
235
|
[client, refresh]
|
|
148
236
|
);
|
|
149
|
-
(0,
|
|
237
|
+
(0, import_react6.useEffect)(() => {
|
|
150
238
|
void refresh();
|
|
151
239
|
}, [refresh]);
|
|
152
240
|
return { templates, isLoading, error, refresh, saveTemplate, removeTemplate };
|
|
153
241
|
}
|
|
154
242
|
|
|
155
243
|
// src/hooks/useTemplatePreview.ts
|
|
156
|
-
var
|
|
157
|
-
var
|
|
244
|
+
var import_client7 = require("@fonderie/client");
|
|
245
|
+
var import_react7 = require("react");
|
|
158
246
|
function useTemplatePreview(client) {
|
|
159
|
-
const [preview, setPreview] = (0,
|
|
160
|
-
const [isPreviewing, setIsPreviewing] = (0,
|
|
161
|
-
const [error, setError] = (0,
|
|
162
|
-
const renderPreview = (0,
|
|
247
|
+
const [preview, setPreview] = (0, import_react7.useState)(null);
|
|
248
|
+
const [isPreviewing, setIsPreviewing] = (0, import_react7.useState)(false);
|
|
249
|
+
const [error, setError] = (0, import_react7.useState)(null);
|
|
250
|
+
const renderPreview = (0, import_react7.useCallback)(
|
|
163
251
|
async (type, input, locale) => {
|
|
164
252
|
setIsPreviewing(true);
|
|
165
253
|
setError(null);
|
|
@@ -168,7 +256,7 @@ function useTemplatePreview(client) {
|
|
|
168
256
|
setPreview(result);
|
|
169
257
|
return result;
|
|
170
258
|
} catch (err) {
|
|
171
|
-
const apiError = err instanceof
|
|
259
|
+
const apiError = err instanceof import_client7.FonderieApiError ? err : new import_client7.FonderieApiError("unknown", String(err), 0);
|
|
172
260
|
setError(apiError);
|
|
173
261
|
throw apiError;
|
|
174
262
|
} finally {
|
|
@@ -177,15 +265,18 @@ function useTemplatePreview(client) {
|
|
|
177
265
|
},
|
|
178
266
|
[client]
|
|
179
267
|
);
|
|
180
|
-
const clearPreview = (0,
|
|
268
|
+
const clearPreview = (0, import_react7.useCallback)(() => setPreview(null), []);
|
|
181
269
|
return { preview, isPreviewing, error, renderPreview, clearPreview };
|
|
182
270
|
}
|
|
183
271
|
// Annotate the CommonJS export names for ESM import in node:
|
|
184
272
|
0 && (module.exports = {
|
|
185
273
|
CourierAdminClient,
|
|
186
274
|
FonderieApiError,
|
|
275
|
+
useBuiltInTemplate,
|
|
187
276
|
useTemplate,
|
|
277
|
+
useTemplateCatalog,
|
|
188
278
|
useTemplatePreview,
|
|
279
|
+
useTemplateResolution,
|
|
189
280
|
useTemplateRevisions,
|
|
190
281
|
useTemplates
|
|
191
282
|
});
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/hooks/useTemplate.ts","../src/hooks/useTemplateRevisions.ts","../src/hooks/useTemplates.ts","../src/hooks/useTemplatePreview.ts"],"sourcesContent":["export type {\n\tICourierAdminClientOptions,\n\tIPreviewTemplateInput,\n\tIRenderedTemplateResult,\n\tIRollbackTemplateInput,\n\tISetTemplateInput,\n\tITemplateEntry,\n\tITemplateRevision,\n} from '@fonderie/client';\nexport { CourierAdminClient, FonderieApiError } from '@fonderie/client';\nexport type {\n\tIUseTemplatePreviewReturn,\n\tIUseTemplateReturn,\n\tIUseTemplateRevisionsReturn,\n\tIUseTemplatesReturn,\n} from './hooks';\nexport {\n\tuseTemplate,\n\tuseTemplatePreview,\n\tuseTemplateRevisions,\n\tuseTemplates,\n} from './hooks';\n","import type { CourierAdminClient, ITemplateEntry } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface IUseTemplateReturn {\n\ttemplate: ITemplateEntry | null;\n\tisLoading: boolean;\n\terror: FonderieApiError | null;\n\trefresh: () => Promise<void>;\n}\n\nexport function useTemplate(\n\tclient: CourierAdminClient,\n\ttype: string,\n\tlocale?: string | null,\n): IUseTemplateReturn {\n\tconst [template, setTemplate] = useState<ITemplateEntry | null>(null);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\t\ttry {\n\t\t\tconst { result } = await client.getTemplate(type, locale);\n\t\t\tsetTemplate(result);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\tsetError(apiError);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client, type, locale]);\n\n\tuseEffect(() => {\n\t\tvoid refresh();\n\t}, [refresh]);\n\n\treturn { template, isLoading, error, refresh };\n}\n","import type { CourierAdminClient, ITemplateEntry, ITemplateRevision } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface IUseTemplateRevisionsReturn {\n\trevisions: ITemplateRevision[];\n\tisLoading: boolean;\n\terror: FonderieApiError | null;\n\trefresh: () => Promise<void>;\n\trollback: (toVersion: number) => Promise<ITemplateEntry>;\n}\n\nexport function useTemplateRevisions(\n\tclient: CourierAdminClient,\n\ttype: string,\n\tlocale?: string | null,\n): IUseTemplateRevisionsReturn {\n\tconst [revisions, setRevisions] = useState<ITemplateRevision[]>([]);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\t\ttry {\n\t\t\tconst { result } = await client.listRevisions(type, locale);\n\t\t\tsetRevisions(result);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\tsetError(apiError);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client, type, locale]);\n\n\tconst rollback = useCallback(\n\t\tasync (toVersion: number) => {\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tconst { result } = await client.rollback(type, { toVersion }, locale);\n\t\t\t\tawait refresh();\n\t\t\t\treturn result;\n\t\t\t} catch (err) {\n\t\t\t\tconst apiError =\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t\tsetError(apiError);\n\t\t\t\tthrow apiError;\n\t\t\t}\n\t\t},\n\t\t[client, type, locale, refresh],\n\t);\n\n\tuseEffect(() => {\n\t\tvoid refresh();\n\t}, [refresh]);\n\n\treturn { revisions, isLoading, error, refresh, rollback };\n}\n","import type { CourierAdminClient, ISetTemplateInput, ITemplateEntry } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface IUseTemplatesReturn {\n\ttemplates: ITemplateEntry[];\n\tisLoading: boolean;\n\terror: FonderieApiError | null;\n\trefresh: () => Promise<void>;\n\tsaveTemplate: (\n\t\ttype: string,\n\t\tinput: ISetTemplateInput,\n\t\tlocale?: string | null,\n\t) => Promise<ITemplateEntry>;\n\tremoveTemplate: (type: string, locale?: string | null) => Promise<void>;\n}\n\nexport function useTemplates(client: CourierAdminClient): IUseTemplatesReturn {\n\tconst [templates, setTemplates] = useState<ITemplateEntry[]>([]);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\t\ttry {\n\t\t\tconst { result } = await client.listTemplates();\n\t\t\tsetTemplates(result);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\tsetError(apiError);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client]);\n\n\tconst saveTemplate = useCallback(\n\t\tasync (type: string, input: ISetTemplateInput, locale?: string | null) => {\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tconst { result } = await client.setTemplate(type, input, locale);\n\t\t\t\tawait refresh();\n\t\t\t\treturn result;\n\t\t\t} catch (err) {\n\t\t\t\tconst apiError =\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t\tsetError(apiError);\n\t\t\t\tthrow apiError;\n\t\t\t}\n\t\t},\n\t\t[client, refresh],\n\t);\n\n\tconst removeTemplate = useCallback(\n\t\tasync (type: string, locale?: string | null) => {\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tawait client.deleteTemplate(type, locale);\n\t\t\t\tawait refresh();\n\t\t\t} catch (err) {\n\t\t\t\tconst apiError =\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t\tsetError(apiError);\n\t\t\t\tthrow apiError;\n\t\t\t}\n\t\t},\n\t\t[client, refresh],\n\t);\n\n\tuseEffect(() => {\n\t\tvoid refresh();\n\t}, [refresh]);\n\n\treturn { templates, isLoading, error, refresh, saveTemplate, removeTemplate };\n}\n","import type {\n\tCourierAdminClient,\n\tIPreviewTemplateInput,\n\tIRenderedTemplateResult,\n} from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useState } from 'react';\n\nexport interface IUseTemplatePreviewReturn {\n\tpreview: IRenderedTemplateResult | null;\n\tisPreviewing: boolean;\n\terror: FonderieApiError | null;\n\trenderPreview: (\n\t\ttype: string,\n\t\tinput: IPreviewTemplateInput,\n\t\tlocale?: string | null,\n\t) => Promise<IRenderedTemplateResult>;\n\tclearPreview: () => void;\n}\n\n// On demand, not on mount: the caller decides when the editor's content is\n// worth rendering. Server-side, so what comes back is what the resolver\n// produces — the layout shell and the variable substitution included.\nexport function useTemplatePreview(client: CourierAdminClient): IUseTemplatePreviewReturn {\n\tconst [preview, setPreview] = useState<IRenderedTemplateResult | null>(null);\n\tconst [isPreviewing, setIsPreviewing] = useState(false);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst renderPreview = useCallback(\n\t\tasync (type: string, input: IPreviewTemplateInput, locale?: string | null) => {\n\t\t\tsetIsPreviewing(true);\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tconst { result } = await client.previewTemplate(type, input, locale);\n\t\t\t\tsetPreview(result);\n\t\t\t\treturn result;\n\t\t\t} catch (err) {\n\t\t\t\tconst apiError =\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t\tsetError(apiError);\n\t\t\t\tthrow apiError;\n\t\t\t} finally {\n\t\t\t\tsetIsPreviewing(false);\n\t\t\t}\n\t\t},\n\t\t[client],\n\t);\n\n\tconst clearPreview = useCallback(() => setPreview(null), []);\n\n\treturn { preview, isPreviewing, error, renderPreview, clearPreview };\n}\n"],"mappings":"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","names":["import_client","import_client","import_react","import_client","import_react","import_client","import_react"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/hooks/useBuiltInTemplate.ts","../src/hooks/useTemplateCatalog.ts","../src/hooks/useTemplateResolution.ts","../src/hooks/useTemplate.ts","../src/hooks/useTemplateRevisions.ts","../src/hooks/useTemplates.ts","../src/hooks/useTemplatePreview.ts"],"sourcesContent":["export type {\n\tIBuiltInTemplate,\n\tICourierAdminClientOptions,\n\tIPreviewTemplateInput,\n\tIRenderedTemplateResult,\n\tIRollbackTemplateInput,\n\tISetTemplateInput,\n\tITemplateCatalog,\n\tITemplateCatalogEntry,\n\tITemplateEntry,\n\tITemplateResolution,\n\tITemplateRevision,\n} from '@fonderie/client';\nexport { CourierAdminClient, FonderieApiError } from '@fonderie/client';\nexport type {\n\tIUseBuiltInTemplateReturn,\n\tIUseTemplateCatalogReturn,\n\tIUseTemplateResolutionReturn,\n\tIUseTemplatePreviewReturn,\n\tIUseTemplateReturn,\n\tIUseTemplateRevisionsReturn,\n\tIUseTemplatesReturn,\n} from './hooks';\nexport {\n\tuseBuiltInTemplate,\n\tuseTemplate,\n\tuseTemplateCatalog,\n\tuseTemplateResolution,\n\tuseTemplatePreview,\n\tuseTemplateRevisions,\n\tuseTemplates,\n} from './hooks';\n","import type { CourierAdminClient, IBuiltInTemplate } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface IUseBuiltInTemplateReturn {\n\t/** Null while loading, and when none ships in that language (404 is not an error here). */\n\tbuiltIn: IBuiltInTemplate | null;\n\tisLoading: boolean;\n\terror: FonderieApiError | null;\n\trefresh: () => Promise<void>;\n}\n\n// Fonderie's own copy of an email in a language — to open a language nobody has\n// saved yet, or to compare a saved version with what ships.\nexport function useBuiltInTemplate(\n\tclient: CourierAdminClient,\n\ttype: string,\n\tlocale?: string | null,\n): IUseBuiltInTemplateReturn {\n\tconst [builtIn, setBuiltIn] = useState<IBuiltInTemplate | null>(null);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\t\ttry {\n\t\t\tconst { result } = await client.getBuiltInTemplate(type, locale);\n\t\t\tsetBuiltIn(result);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t// Nothing ships in that language: an answer, not a failure.\n\t\t\tif (apiError.status === 404) setBuiltIn(null);\n\t\t\telse setError(apiError);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client, type, locale]);\n\n\tuseEffect(() => {\n\t\tvoid refresh();\n\t}, [refresh]);\n\n\treturn { builtIn, isLoading, error, refresh };\n}\n","import type { CourierAdminClient, ITemplateCatalog } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface IUseTemplateCatalogReturn {\n\tcatalog: ITemplateCatalog | null;\n\tisLoading: boolean;\n\terror: FonderieApiError | null;\n\trefresh: () => Promise<void>;\n}\n\n// Every email — saved or built-in only — with its languages and the app's\n// locales, for a template list that shows what actually exists.\nexport function useTemplateCatalog(client: CourierAdminClient): IUseTemplateCatalogReturn {\n\tconst [catalog, setCatalog] = useState<ITemplateCatalog | null>(null);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\t\ttry {\n\t\t\tconst { result } = await client.getTemplateCatalog();\n\t\t\tsetCatalog(result);\n\t\t} catch (err) {\n\t\t\tsetError(\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0),\n\t\t\t);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client]);\n\n\tuseEffect(() => {\n\t\tvoid refresh();\n\t}, [refresh]);\n\n\treturn { catalog, isLoading, error, refresh };\n}\n","import type { CourierAdminClient, ITemplateResolution } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useState } from 'react';\n\nexport interface IUseTemplateResolutionReturn {\n\tresolution: ITemplateResolution | null;\n\tisResolving: boolean;\n\terror: FonderieApiError | null;\n\t/** Which version a send in `locale` would use. */\n\tresolve: (type: string, locale?: string | null) => Promise<ITemplateResolution | null>;\n}\n\n// Who receives what — asked of the server, which decides with the same function\n// a real send runs.\nexport function useTemplateResolution(client: CourierAdminClient): IUseTemplateResolutionReturn {\n\tconst [resolution, setResolution] = useState<ITemplateResolution | null>(null);\n\tconst [isResolving, setIsResolving] = useState(false);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst resolve = useCallback(\n\t\tasync (type: string, locale?: string | null) => {\n\t\t\tsetIsResolving(true);\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tconst { result } = await client.resolveTemplate(type, locale);\n\t\t\t\tsetResolution(result);\n\t\t\t\treturn result;\n\t\t\t} catch (err) {\n\t\t\t\tsetError(\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0),\n\t\t\t\t);\n\t\t\t\tsetResolution(null);\n\t\t\t\treturn null;\n\t\t\t} finally {\n\t\t\t\tsetIsResolving(false);\n\t\t\t}\n\t\t},\n\t\t[client],\n\t);\n\n\treturn { resolution, isResolving, error, resolve };\n}\n","import type { CourierAdminClient, ITemplateEntry } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface IUseTemplateReturn {\n\ttemplate: ITemplateEntry | null;\n\tisLoading: boolean;\n\terror: FonderieApiError | null;\n\trefresh: () => Promise<void>;\n}\n\nexport function useTemplate(\n\tclient: CourierAdminClient,\n\ttype: string,\n\tlocale?: string | null,\n): IUseTemplateReturn {\n\tconst [template, setTemplate] = useState<ITemplateEntry | null>(null);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\t\ttry {\n\t\t\tconst { result } = await client.getTemplate(type, locale);\n\t\t\tsetTemplate(result);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t// Gone (deleted, or never saved): drop what was shown, or a screen keeps\n\t\t\t// rendering a version that no longer exists.\n\t\t\tif (apiError.status === 404) setTemplate(null);\n\t\t\tsetError(apiError);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client, type, locale]);\n\n\tuseEffect(() => {\n\t\tvoid refresh();\n\t}, [refresh]);\n\n\treturn { template, isLoading, error, refresh };\n}\n","import type { CourierAdminClient, ITemplateEntry, ITemplateRevision } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface IUseTemplateRevisionsReturn {\n\trevisions: ITemplateRevision[];\n\tisLoading: boolean;\n\terror: FonderieApiError | null;\n\trefresh: () => Promise<void>;\n\trollback: (toVersion: number) => Promise<ITemplateEntry>;\n}\n\nexport function useTemplateRevisions(\n\tclient: CourierAdminClient,\n\ttype: string,\n\tlocale?: string | null,\n): IUseTemplateRevisionsReturn {\n\tconst [revisions, setRevisions] = useState<ITemplateRevision[]>([]);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\t\ttry {\n\t\t\tconst { result } = await client.listRevisions(type, locale);\n\t\t\tsetRevisions(result);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\tsetError(apiError);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client, type, locale]);\n\n\tconst rollback = useCallback(\n\t\tasync (toVersion: number) => {\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tconst { result } = await client.rollback(type, { toVersion }, locale);\n\t\t\t\tawait refresh();\n\t\t\t\treturn result;\n\t\t\t} catch (err) {\n\t\t\t\tconst apiError =\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t\tsetError(apiError);\n\t\t\t\tthrow apiError;\n\t\t\t}\n\t\t},\n\t\t[client, type, locale, refresh],\n\t);\n\n\tuseEffect(() => {\n\t\tvoid refresh();\n\t}, [refresh]);\n\n\treturn { revisions, isLoading, error, refresh, rollback };\n}\n","import type { CourierAdminClient, ISetTemplateInput, ITemplateEntry } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface IUseTemplatesReturn {\n\ttemplates: ITemplateEntry[];\n\tisLoading: boolean;\n\terror: FonderieApiError | null;\n\trefresh: () => Promise<void>;\n\tsaveTemplate: (\n\t\ttype: string,\n\t\tinput: ISetTemplateInput,\n\t\tlocale?: string | null,\n\t) => Promise<ITemplateEntry>;\n\tremoveTemplate: (type: string, locale?: string | null) => Promise<void>;\n}\n\nexport function useTemplates(client: CourierAdminClient): IUseTemplatesReturn {\n\tconst [templates, setTemplates] = useState<ITemplateEntry[]>([]);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\t\ttry {\n\t\t\tconst { result } = await client.listTemplates();\n\t\t\tsetTemplates(result);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\tsetError(apiError);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client]);\n\n\tconst saveTemplate = useCallback(\n\t\tasync (type: string, input: ISetTemplateInput, locale?: string | null) => {\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tconst { result } = await client.setTemplate(type, input, locale);\n\t\t\t\tawait refresh();\n\t\t\t\treturn result;\n\t\t\t} catch (err) {\n\t\t\t\tconst apiError =\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t\tsetError(apiError);\n\t\t\t\tthrow apiError;\n\t\t\t}\n\t\t},\n\t\t[client, refresh],\n\t);\n\n\tconst removeTemplate = useCallback(\n\t\tasync (type: string, locale?: string | null) => {\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tawait client.deleteTemplate(type, locale);\n\t\t\t\tawait refresh();\n\t\t\t} catch (err) {\n\t\t\t\tconst apiError =\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t\tsetError(apiError);\n\t\t\t\tthrow apiError;\n\t\t\t}\n\t\t},\n\t\t[client, refresh],\n\t);\n\n\tuseEffect(() => {\n\t\tvoid refresh();\n\t}, [refresh]);\n\n\treturn { templates, isLoading, error, refresh, saveTemplate, removeTemplate };\n}\n","import type {\n\tCourierAdminClient,\n\tIPreviewTemplateInput,\n\tIRenderedTemplateResult,\n} from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useState } from 'react';\n\nexport interface IUseTemplatePreviewReturn {\n\tpreview: IRenderedTemplateResult | null;\n\tisPreviewing: boolean;\n\terror: FonderieApiError | null;\n\trenderPreview: (\n\t\ttype: string,\n\t\tinput: IPreviewTemplateInput,\n\t\tlocale?: string | null,\n\t) => Promise<IRenderedTemplateResult>;\n\tclearPreview: () => void;\n}\n\n// On demand, not on mount: the caller decides when the editor's content is\n// worth rendering. Server-side, so what comes back is what the resolver\n// produces — the layout shell and the variable substitution included.\nexport function useTemplatePreview(client: CourierAdminClient): IUseTemplatePreviewReturn {\n\tconst [preview, setPreview] = useState<IRenderedTemplateResult | null>(null);\n\tconst [isPreviewing, setIsPreviewing] = useState(false);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst renderPreview = useCallback(\n\t\tasync (type: string, input: IPreviewTemplateInput, locale?: string | null) => {\n\t\t\tsetIsPreviewing(true);\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tconst { result } = await client.previewTemplate(type, input, locale);\n\t\t\t\tsetPreview(result);\n\t\t\t\treturn result;\n\t\t\t} catch (err) {\n\t\t\t\tconst apiError =\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t\tsetError(apiError);\n\t\t\t\tthrow apiError;\n\t\t\t} finally {\n\t\t\t\tsetIsPreviewing(false);\n\t\t\t}\n\t\t},\n\t\t[client],\n\t);\n\n\tconst clearPreview = useCallback(() => setPreview(null), []);\n\n\treturn { preview, isPreviewing, error, renderPreview, clearPreview };\n}\n"],"mappings":"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","names":["import_client","import_client","import_react","import_client","import_react","import_client","import_react","import_client","import_react","import_client","import_react","import_client","import_react"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { CourierAdminClient, FonderieApiError, ICourierAdminClientOptions, IPreviewTemplateInput, IRenderedTemplateResult, IRollbackTemplateInput, ISetTemplateInput, ITemplateEntry, ITemplateRevision } from '@fonderie/client';
|
|
1
|
+
import { IBuiltInTemplate, FonderieApiError, CourierAdminClient, ITemplateCatalog, ITemplateResolution, ITemplateEntry, ITemplateRevision, ISetTemplateInput, IRenderedTemplateResult, IPreviewTemplateInput } from '@fonderie/client';
|
|
2
|
+
export { CourierAdminClient, FonderieApiError, IBuiltInTemplate, ICourierAdminClientOptions, IPreviewTemplateInput, IRenderedTemplateResult, IRollbackTemplateInput, ISetTemplateInput, ITemplateCatalog, ITemplateCatalogEntry, ITemplateEntry, ITemplateResolution, ITemplateRevision } from '@fonderie/client';
|
|
3
|
+
|
|
4
|
+
interface IUseBuiltInTemplateReturn {
|
|
5
|
+
/** Null while loading, and when none ships in that language (404 is not an error here). */
|
|
6
|
+
builtIn: IBuiltInTemplate | null;
|
|
7
|
+
isLoading: boolean;
|
|
8
|
+
error: FonderieApiError | null;
|
|
9
|
+
refresh: () => Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
declare function useBuiltInTemplate(client: CourierAdminClient, type: string, locale?: string | null): IUseBuiltInTemplateReturn;
|
|
12
|
+
|
|
13
|
+
interface IUseTemplateCatalogReturn {
|
|
14
|
+
catalog: ITemplateCatalog | null;
|
|
15
|
+
isLoading: boolean;
|
|
16
|
+
error: FonderieApiError | null;
|
|
17
|
+
refresh: () => Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
declare function useTemplateCatalog(client: CourierAdminClient): IUseTemplateCatalogReturn;
|
|
20
|
+
|
|
21
|
+
interface IUseTemplateResolutionReturn {
|
|
22
|
+
resolution: ITemplateResolution | null;
|
|
23
|
+
isResolving: boolean;
|
|
24
|
+
error: FonderieApiError | null;
|
|
25
|
+
/** Which version a send in `locale` would use. */
|
|
26
|
+
resolve: (type: string, locale?: string | null) => Promise<ITemplateResolution | null>;
|
|
27
|
+
}
|
|
28
|
+
declare function useTemplateResolution(client: CourierAdminClient): IUseTemplateResolutionReturn;
|
|
3
29
|
|
|
4
30
|
interface IUseTemplateReturn {
|
|
5
31
|
template: ITemplateEntry | null;
|
|
@@ -37,4 +63,4 @@ interface IUseTemplatePreviewReturn {
|
|
|
37
63
|
}
|
|
38
64
|
declare function useTemplatePreview(client: CourierAdminClient): IUseTemplatePreviewReturn;
|
|
39
65
|
|
|
40
|
-
export { type IUseTemplatePreviewReturn, type IUseTemplateReturn, type IUseTemplateRevisionsReturn, type IUseTemplatesReturn, useTemplate, useTemplatePreview, useTemplateRevisions, useTemplates };
|
|
66
|
+
export { type IUseBuiltInTemplateReturn, type IUseTemplateCatalogReturn, type IUseTemplatePreviewReturn, type IUseTemplateResolutionReturn, type IUseTemplateReturn, type IUseTemplateRevisionsReturn, type IUseTemplatesReturn, useBuiltInTemplate, useTemplate, useTemplateCatalog, useTemplatePreview, useTemplateResolution, useTemplateRevisions, useTemplates };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,31 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export { CourierAdminClient, FonderieApiError, ICourierAdminClientOptions, IPreviewTemplateInput, IRenderedTemplateResult, IRollbackTemplateInput, ISetTemplateInput, ITemplateEntry, ITemplateRevision } from '@fonderie/client';
|
|
1
|
+
import { IBuiltInTemplate, FonderieApiError, CourierAdminClient, ITemplateCatalog, ITemplateResolution, ITemplateEntry, ITemplateRevision, ISetTemplateInput, IRenderedTemplateResult, IPreviewTemplateInput } from '@fonderie/client';
|
|
2
|
+
export { CourierAdminClient, FonderieApiError, IBuiltInTemplate, ICourierAdminClientOptions, IPreviewTemplateInput, IRenderedTemplateResult, IRollbackTemplateInput, ISetTemplateInput, ITemplateCatalog, ITemplateCatalogEntry, ITemplateEntry, ITemplateResolution, ITemplateRevision } from '@fonderie/client';
|
|
3
|
+
|
|
4
|
+
interface IUseBuiltInTemplateReturn {
|
|
5
|
+
/** Null while loading, and when none ships in that language (404 is not an error here). */
|
|
6
|
+
builtIn: IBuiltInTemplate | null;
|
|
7
|
+
isLoading: boolean;
|
|
8
|
+
error: FonderieApiError | null;
|
|
9
|
+
refresh: () => Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
declare function useBuiltInTemplate(client: CourierAdminClient, type: string, locale?: string | null): IUseBuiltInTemplateReturn;
|
|
12
|
+
|
|
13
|
+
interface IUseTemplateCatalogReturn {
|
|
14
|
+
catalog: ITemplateCatalog | null;
|
|
15
|
+
isLoading: boolean;
|
|
16
|
+
error: FonderieApiError | null;
|
|
17
|
+
refresh: () => Promise<void>;
|
|
18
|
+
}
|
|
19
|
+
declare function useTemplateCatalog(client: CourierAdminClient): IUseTemplateCatalogReturn;
|
|
20
|
+
|
|
21
|
+
interface IUseTemplateResolutionReturn {
|
|
22
|
+
resolution: ITemplateResolution | null;
|
|
23
|
+
isResolving: boolean;
|
|
24
|
+
error: FonderieApiError | null;
|
|
25
|
+
/** Which version a send in `locale` would use. */
|
|
26
|
+
resolve: (type: string, locale?: string | null) => Promise<ITemplateResolution | null>;
|
|
27
|
+
}
|
|
28
|
+
declare function useTemplateResolution(client: CourierAdminClient): IUseTemplateResolutionReturn;
|
|
3
29
|
|
|
4
30
|
interface IUseTemplateReturn {
|
|
5
31
|
template: ITemplateEntry | null;
|
|
@@ -37,4 +63,4 @@ interface IUseTemplatePreviewReturn {
|
|
|
37
63
|
}
|
|
38
64
|
declare function useTemplatePreview(client: CourierAdminClient): IUseTemplatePreviewReturn;
|
|
39
65
|
|
|
40
|
-
export { type IUseTemplatePreviewReturn, type IUseTemplateReturn, type IUseTemplateRevisionsReturn, type IUseTemplatesReturn, useTemplate, useTemplatePreview, useTemplateRevisions, useTemplates };
|
|
66
|
+
export { type IUseBuiltInTemplateReturn, type IUseTemplateCatalogReturn, type IUseTemplatePreviewReturn, type IUseTemplateResolutionReturn, type IUseTemplateReturn, type IUseTemplateRevisionsReturn, type IUseTemplatesReturn, useBuiltInTemplate, useTemplate, useTemplateCatalog, useTemplatePreview, useTemplateResolution, useTemplateRevisions, useTemplates };
|
package/dist/index.js
CHANGED
|
@@ -1,22 +1,23 @@
|
|
|
1
1
|
// src/index.ts
|
|
2
|
-
import { CourierAdminClient, FonderieApiError as
|
|
2
|
+
import { CourierAdminClient, FonderieApiError as FonderieApiError8 } from "@fonderie/client";
|
|
3
3
|
|
|
4
|
-
// src/hooks/
|
|
4
|
+
// src/hooks/useBuiltInTemplate.ts
|
|
5
5
|
import { FonderieApiError } from "@fonderie/client";
|
|
6
6
|
import { useCallback, useEffect, useState } from "react";
|
|
7
|
-
function
|
|
8
|
-
const [
|
|
7
|
+
function useBuiltInTemplate(client, type, locale) {
|
|
8
|
+
const [builtIn, setBuiltIn] = useState(null);
|
|
9
9
|
const [isLoading, setIsLoading] = useState(true);
|
|
10
10
|
const [error, setError] = useState(null);
|
|
11
11
|
const refresh = useCallback(async () => {
|
|
12
12
|
setIsLoading(true);
|
|
13
13
|
setError(null);
|
|
14
14
|
try {
|
|
15
|
-
const { result } = await client.
|
|
16
|
-
|
|
15
|
+
const { result } = await client.getBuiltInTemplate(type, locale);
|
|
16
|
+
setBuiltIn(result);
|
|
17
17
|
} catch (err) {
|
|
18
18
|
const apiError = err instanceof FonderieApiError ? err : new FonderieApiError("unknown", String(err), 0);
|
|
19
|
-
|
|
19
|
+
if (apiError.status === 404) setBuiltIn(null);
|
|
20
|
+
else setError(apiError);
|
|
20
21
|
} finally {
|
|
21
22
|
setIsLoading(false);
|
|
22
23
|
}
|
|
@@ -24,30 +25,114 @@ function useTemplate(client, type, locale) {
|
|
|
24
25
|
useEffect(() => {
|
|
25
26
|
void refresh();
|
|
26
27
|
}, [refresh]);
|
|
27
|
-
return {
|
|
28
|
+
return { builtIn, isLoading, error, refresh };
|
|
28
29
|
}
|
|
29
30
|
|
|
30
|
-
// src/hooks/
|
|
31
|
+
// src/hooks/useTemplateCatalog.ts
|
|
31
32
|
import { FonderieApiError as FonderieApiError2 } from "@fonderie/client";
|
|
32
33
|
import { useCallback as useCallback2, useEffect as useEffect2, useState as useState2 } from "react";
|
|
33
|
-
function
|
|
34
|
-
const [
|
|
34
|
+
function useTemplateCatalog(client) {
|
|
35
|
+
const [catalog, setCatalog] = useState2(null);
|
|
35
36
|
const [isLoading, setIsLoading] = useState2(true);
|
|
36
37
|
const [error, setError] = useState2(null);
|
|
37
38
|
const refresh = useCallback2(async () => {
|
|
39
|
+
setIsLoading(true);
|
|
40
|
+
setError(null);
|
|
41
|
+
try {
|
|
42
|
+
const { result } = await client.getTemplateCatalog();
|
|
43
|
+
setCatalog(result);
|
|
44
|
+
} catch (err) {
|
|
45
|
+
setError(
|
|
46
|
+
err instanceof FonderieApiError2 ? err : new FonderieApiError2("unknown", String(err), 0)
|
|
47
|
+
);
|
|
48
|
+
} finally {
|
|
49
|
+
setIsLoading(false);
|
|
50
|
+
}
|
|
51
|
+
}, [client]);
|
|
52
|
+
useEffect2(() => {
|
|
53
|
+
void refresh();
|
|
54
|
+
}, [refresh]);
|
|
55
|
+
return { catalog, isLoading, error, refresh };
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
// src/hooks/useTemplateResolution.ts
|
|
59
|
+
import { FonderieApiError as FonderieApiError3 } from "@fonderie/client";
|
|
60
|
+
import { useCallback as useCallback3, useState as useState3 } from "react";
|
|
61
|
+
function useTemplateResolution(client) {
|
|
62
|
+
const [resolution, setResolution] = useState3(null);
|
|
63
|
+
const [isResolving, setIsResolving] = useState3(false);
|
|
64
|
+
const [error, setError] = useState3(null);
|
|
65
|
+
const resolve = useCallback3(
|
|
66
|
+
async (type, locale) => {
|
|
67
|
+
setIsResolving(true);
|
|
68
|
+
setError(null);
|
|
69
|
+
try {
|
|
70
|
+
const { result } = await client.resolveTemplate(type, locale);
|
|
71
|
+
setResolution(result);
|
|
72
|
+
return result;
|
|
73
|
+
} catch (err) {
|
|
74
|
+
setError(
|
|
75
|
+
err instanceof FonderieApiError3 ? err : new FonderieApiError3("unknown", String(err), 0)
|
|
76
|
+
);
|
|
77
|
+
setResolution(null);
|
|
78
|
+
return null;
|
|
79
|
+
} finally {
|
|
80
|
+
setIsResolving(false);
|
|
81
|
+
}
|
|
82
|
+
},
|
|
83
|
+
[client]
|
|
84
|
+
);
|
|
85
|
+
return { resolution, isResolving, error, resolve };
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// src/hooks/useTemplate.ts
|
|
89
|
+
import { FonderieApiError as FonderieApiError4 } from "@fonderie/client";
|
|
90
|
+
import { useCallback as useCallback4, useEffect as useEffect3, useState as useState4 } from "react";
|
|
91
|
+
function useTemplate(client, type, locale) {
|
|
92
|
+
const [template, setTemplate] = useState4(null);
|
|
93
|
+
const [isLoading, setIsLoading] = useState4(true);
|
|
94
|
+
const [error, setError] = useState4(null);
|
|
95
|
+
const refresh = useCallback4(async () => {
|
|
96
|
+
setIsLoading(true);
|
|
97
|
+
setError(null);
|
|
98
|
+
try {
|
|
99
|
+
const { result } = await client.getTemplate(type, locale);
|
|
100
|
+
setTemplate(result);
|
|
101
|
+
} catch (err) {
|
|
102
|
+
const apiError = err instanceof FonderieApiError4 ? err : new FonderieApiError4("unknown", String(err), 0);
|
|
103
|
+
if (apiError.status === 404) setTemplate(null);
|
|
104
|
+
setError(apiError);
|
|
105
|
+
} finally {
|
|
106
|
+
setIsLoading(false);
|
|
107
|
+
}
|
|
108
|
+
}, [client, type, locale]);
|
|
109
|
+
useEffect3(() => {
|
|
110
|
+
void refresh();
|
|
111
|
+
}, [refresh]);
|
|
112
|
+
return { template, isLoading, error, refresh };
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// src/hooks/useTemplateRevisions.ts
|
|
116
|
+
import { FonderieApiError as FonderieApiError5 } from "@fonderie/client";
|
|
117
|
+
import { useCallback as useCallback5, useEffect as useEffect4, useState as useState5 } from "react";
|
|
118
|
+
function useTemplateRevisions(client, type, locale) {
|
|
119
|
+
const [revisions, setRevisions] = useState5([]);
|
|
120
|
+
const [isLoading, setIsLoading] = useState5(true);
|
|
121
|
+
const [error, setError] = useState5(null);
|
|
122
|
+
const refresh = useCallback5(async () => {
|
|
38
123
|
setIsLoading(true);
|
|
39
124
|
setError(null);
|
|
40
125
|
try {
|
|
41
126
|
const { result } = await client.listRevisions(type, locale);
|
|
42
127
|
setRevisions(result);
|
|
43
128
|
} catch (err) {
|
|
44
|
-
const apiError = err instanceof
|
|
129
|
+
const apiError = err instanceof FonderieApiError5 ? err : new FonderieApiError5("unknown", String(err), 0);
|
|
45
130
|
setError(apiError);
|
|
46
131
|
} finally {
|
|
47
132
|
setIsLoading(false);
|
|
48
133
|
}
|
|
49
134
|
}, [client, type, locale]);
|
|
50
|
-
const rollback =
|
|
135
|
+
const rollback = useCallback5(
|
|
51
136
|
async (toVersion) => {
|
|
52
137
|
setError(null);
|
|
53
138
|
try {
|
|
@@ -55,40 +140,40 @@ function useTemplateRevisions(client, type, locale) {
|
|
|
55
140
|
await refresh();
|
|
56
141
|
return result;
|
|
57
142
|
} catch (err) {
|
|
58
|
-
const apiError = err instanceof
|
|
143
|
+
const apiError = err instanceof FonderieApiError5 ? err : new FonderieApiError5("unknown", String(err), 0);
|
|
59
144
|
setError(apiError);
|
|
60
145
|
throw apiError;
|
|
61
146
|
}
|
|
62
147
|
},
|
|
63
148
|
[client, type, locale, refresh]
|
|
64
149
|
);
|
|
65
|
-
|
|
150
|
+
useEffect4(() => {
|
|
66
151
|
void refresh();
|
|
67
152
|
}, [refresh]);
|
|
68
153
|
return { revisions, isLoading, error, refresh, rollback };
|
|
69
154
|
}
|
|
70
155
|
|
|
71
156
|
// src/hooks/useTemplates.ts
|
|
72
|
-
import { FonderieApiError as
|
|
73
|
-
import { useCallback as
|
|
157
|
+
import { FonderieApiError as FonderieApiError6 } from "@fonderie/client";
|
|
158
|
+
import { useCallback as useCallback6, useEffect as useEffect5, useState as useState6 } from "react";
|
|
74
159
|
function useTemplates(client) {
|
|
75
|
-
const [templates, setTemplates] =
|
|
76
|
-
const [isLoading, setIsLoading] =
|
|
77
|
-
const [error, setError] =
|
|
78
|
-
const refresh =
|
|
160
|
+
const [templates, setTemplates] = useState6([]);
|
|
161
|
+
const [isLoading, setIsLoading] = useState6(true);
|
|
162
|
+
const [error, setError] = useState6(null);
|
|
163
|
+
const refresh = useCallback6(async () => {
|
|
79
164
|
setIsLoading(true);
|
|
80
165
|
setError(null);
|
|
81
166
|
try {
|
|
82
167
|
const { result } = await client.listTemplates();
|
|
83
168
|
setTemplates(result);
|
|
84
169
|
} catch (err) {
|
|
85
|
-
const apiError = err instanceof
|
|
170
|
+
const apiError = err instanceof FonderieApiError6 ? err : new FonderieApiError6("unknown", String(err), 0);
|
|
86
171
|
setError(apiError);
|
|
87
172
|
} finally {
|
|
88
173
|
setIsLoading(false);
|
|
89
174
|
}
|
|
90
175
|
}, [client]);
|
|
91
|
-
const saveTemplate =
|
|
176
|
+
const saveTemplate = useCallback6(
|
|
92
177
|
async (type, input, locale) => {
|
|
93
178
|
setError(null);
|
|
94
179
|
try {
|
|
@@ -96,41 +181,41 @@ function useTemplates(client) {
|
|
|
96
181
|
await refresh();
|
|
97
182
|
return result;
|
|
98
183
|
} catch (err) {
|
|
99
|
-
const apiError = err instanceof
|
|
184
|
+
const apiError = err instanceof FonderieApiError6 ? err : new FonderieApiError6("unknown", String(err), 0);
|
|
100
185
|
setError(apiError);
|
|
101
186
|
throw apiError;
|
|
102
187
|
}
|
|
103
188
|
},
|
|
104
189
|
[client, refresh]
|
|
105
190
|
);
|
|
106
|
-
const removeTemplate =
|
|
191
|
+
const removeTemplate = useCallback6(
|
|
107
192
|
async (type, locale) => {
|
|
108
193
|
setError(null);
|
|
109
194
|
try {
|
|
110
195
|
await client.deleteTemplate(type, locale);
|
|
111
196
|
await refresh();
|
|
112
197
|
} catch (err) {
|
|
113
|
-
const apiError = err instanceof
|
|
198
|
+
const apiError = err instanceof FonderieApiError6 ? err : new FonderieApiError6("unknown", String(err), 0);
|
|
114
199
|
setError(apiError);
|
|
115
200
|
throw apiError;
|
|
116
201
|
}
|
|
117
202
|
},
|
|
118
203
|
[client, refresh]
|
|
119
204
|
);
|
|
120
|
-
|
|
205
|
+
useEffect5(() => {
|
|
121
206
|
void refresh();
|
|
122
207
|
}, [refresh]);
|
|
123
208
|
return { templates, isLoading, error, refresh, saveTemplate, removeTemplate };
|
|
124
209
|
}
|
|
125
210
|
|
|
126
211
|
// src/hooks/useTemplatePreview.ts
|
|
127
|
-
import { FonderieApiError as
|
|
128
|
-
import { useCallback as
|
|
212
|
+
import { FonderieApiError as FonderieApiError7 } from "@fonderie/client";
|
|
213
|
+
import { useCallback as useCallback7, useState as useState7 } from "react";
|
|
129
214
|
function useTemplatePreview(client) {
|
|
130
|
-
const [preview, setPreview] =
|
|
131
|
-
const [isPreviewing, setIsPreviewing] =
|
|
132
|
-
const [error, setError] =
|
|
133
|
-
const renderPreview =
|
|
215
|
+
const [preview, setPreview] = useState7(null);
|
|
216
|
+
const [isPreviewing, setIsPreviewing] = useState7(false);
|
|
217
|
+
const [error, setError] = useState7(null);
|
|
218
|
+
const renderPreview = useCallback7(
|
|
134
219
|
async (type, input, locale) => {
|
|
135
220
|
setIsPreviewing(true);
|
|
136
221
|
setError(null);
|
|
@@ -139,7 +224,7 @@ function useTemplatePreview(client) {
|
|
|
139
224
|
setPreview(result);
|
|
140
225
|
return result;
|
|
141
226
|
} catch (err) {
|
|
142
|
-
const apiError = err instanceof
|
|
227
|
+
const apiError = err instanceof FonderieApiError7 ? err : new FonderieApiError7("unknown", String(err), 0);
|
|
143
228
|
setError(apiError);
|
|
144
229
|
throw apiError;
|
|
145
230
|
} finally {
|
|
@@ -148,14 +233,17 @@ function useTemplatePreview(client) {
|
|
|
148
233
|
},
|
|
149
234
|
[client]
|
|
150
235
|
);
|
|
151
|
-
const clearPreview =
|
|
236
|
+
const clearPreview = useCallback7(() => setPreview(null), []);
|
|
152
237
|
return { preview, isPreviewing, error, renderPreview, clearPreview };
|
|
153
238
|
}
|
|
154
239
|
export {
|
|
155
240
|
CourierAdminClient,
|
|
156
|
-
|
|
241
|
+
FonderieApiError8 as FonderieApiError,
|
|
242
|
+
useBuiltInTemplate,
|
|
157
243
|
useTemplate,
|
|
244
|
+
useTemplateCatalog,
|
|
158
245
|
useTemplatePreview,
|
|
246
|
+
useTemplateResolution,
|
|
159
247
|
useTemplateRevisions,
|
|
160
248
|
useTemplates
|
|
161
249
|
};
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/hooks/useTemplate.ts","../src/hooks/useTemplateRevisions.ts","../src/hooks/useTemplates.ts","../src/hooks/useTemplatePreview.ts"],"sourcesContent":["export type {\n\tICourierAdminClientOptions,\n\tIPreviewTemplateInput,\n\tIRenderedTemplateResult,\n\tIRollbackTemplateInput,\n\tISetTemplateInput,\n\tITemplateEntry,\n\tITemplateRevision,\n} from '@fonderie/client';\nexport { CourierAdminClient, FonderieApiError } from '@fonderie/client';\nexport type {\n\tIUseTemplatePreviewReturn,\n\tIUseTemplateReturn,\n\tIUseTemplateRevisionsReturn,\n\tIUseTemplatesReturn,\n} from './hooks';\nexport {\n\tuseTemplate,\n\tuseTemplatePreview,\n\tuseTemplateRevisions,\n\tuseTemplates,\n} from './hooks';\n","import type { CourierAdminClient, ITemplateEntry } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface IUseTemplateReturn {\n\ttemplate: ITemplateEntry | null;\n\tisLoading: boolean;\n\terror: FonderieApiError | null;\n\trefresh: () => Promise<void>;\n}\n\nexport function useTemplate(\n\tclient: CourierAdminClient,\n\ttype: string,\n\tlocale?: string | null,\n): IUseTemplateReturn {\n\tconst [template, setTemplate] = useState<ITemplateEntry | null>(null);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\t\ttry {\n\t\t\tconst { result } = await client.getTemplate(type, locale);\n\t\t\tsetTemplate(result);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\tsetError(apiError);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client, type, locale]);\n\n\tuseEffect(() => {\n\t\tvoid refresh();\n\t}, [refresh]);\n\n\treturn { template, isLoading, error, refresh };\n}\n","import type { CourierAdminClient, ITemplateEntry, ITemplateRevision } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface IUseTemplateRevisionsReturn {\n\trevisions: ITemplateRevision[];\n\tisLoading: boolean;\n\terror: FonderieApiError | null;\n\trefresh: () => Promise<void>;\n\trollback: (toVersion: number) => Promise<ITemplateEntry>;\n}\n\nexport function useTemplateRevisions(\n\tclient: CourierAdminClient,\n\ttype: string,\n\tlocale?: string | null,\n): IUseTemplateRevisionsReturn {\n\tconst [revisions, setRevisions] = useState<ITemplateRevision[]>([]);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\t\ttry {\n\t\t\tconst { result } = await client.listRevisions(type, locale);\n\t\t\tsetRevisions(result);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\tsetError(apiError);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client, type, locale]);\n\n\tconst rollback = useCallback(\n\t\tasync (toVersion: number) => {\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tconst { result } = await client.rollback(type, { toVersion }, locale);\n\t\t\t\tawait refresh();\n\t\t\t\treturn result;\n\t\t\t} catch (err) {\n\t\t\t\tconst apiError =\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t\tsetError(apiError);\n\t\t\t\tthrow apiError;\n\t\t\t}\n\t\t},\n\t\t[client, type, locale, refresh],\n\t);\n\n\tuseEffect(() => {\n\t\tvoid refresh();\n\t}, [refresh]);\n\n\treturn { revisions, isLoading, error, refresh, rollback };\n}\n","import type { CourierAdminClient, ISetTemplateInput, ITemplateEntry } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface IUseTemplatesReturn {\n\ttemplates: ITemplateEntry[];\n\tisLoading: boolean;\n\terror: FonderieApiError | null;\n\trefresh: () => Promise<void>;\n\tsaveTemplate: (\n\t\ttype: string,\n\t\tinput: ISetTemplateInput,\n\t\tlocale?: string | null,\n\t) => Promise<ITemplateEntry>;\n\tremoveTemplate: (type: string, locale?: string | null) => Promise<void>;\n}\n\nexport function useTemplates(client: CourierAdminClient): IUseTemplatesReturn {\n\tconst [templates, setTemplates] = useState<ITemplateEntry[]>([]);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\t\ttry {\n\t\t\tconst { result } = await client.listTemplates();\n\t\t\tsetTemplates(result);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\tsetError(apiError);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client]);\n\n\tconst saveTemplate = useCallback(\n\t\tasync (type: string, input: ISetTemplateInput, locale?: string | null) => {\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tconst { result } = await client.setTemplate(type, input, locale);\n\t\t\t\tawait refresh();\n\t\t\t\treturn result;\n\t\t\t} catch (err) {\n\t\t\t\tconst apiError =\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t\tsetError(apiError);\n\t\t\t\tthrow apiError;\n\t\t\t}\n\t\t},\n\t\t[client, refresh],\n\t);\n\n\tconst removeTemplate = useCallback(\n\t\tasync (type: string, locale?: string | null) => {\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tawait client.deleteTemplate(type, locale);\n\t\t\t\tawait refresh();\n\t\t\t} catch (err) {\n\t\t\t\tconst apiError =\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t\tsetError(apiError);\n\t\t\t\tthrow apiError;\n\t\t\t}\n\t\t},\n\t\t[client, refresh],\n\t);\n\n\tuseEffect(() => {\n\t\tvoid refresh();\n\t}, [refresh]);\n\n\treturn { templates, isLoading, error, refresh, saveTemplate, removeTemplate };\n}\n","import type {\n\tCourierAdminClient,\n\tIPreviewTemplateInput,\n\tIRenderedTemplateResult,\n} from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useState } from 'react';\n\nexport interface IUseTemplatePreviewReturn {\n\tpreview: IRenderedTemplateResult | null;\n\tisPreviewing: boolean;\n\terror: FonderieApiError | null;\n\trenderPreview: (\n\t\ttype: string,\n\t\tinput: IPreviewTemplateInput,\n\t\tlocale?: string | null,\n\t) => Promise<IRenderedTemplateResult>;\n\tclearPreview: () => void;\n}\n\n// On demand, not on mount: the caller decides when the editor's content is\n// worth rendering. Server-side, so what comes back is what the resolver\n// produces — the layout shell and the variable substitution included.\nexport function useTemplatePreview(client: CourierAdminClient): IUseTemplatePreviewReturn {\n\tconst [preview, setPreview] = useState<IRenderedTemplateResult | null>(null);\n\tconst [isPreviewing, setIsPreviewing] = useState(false);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst renderPreview = useCallback(\n\t\tasync (type: string, input: IPreviewTemplateInput, locale?: string | null) => {\n\t\t\tsetIsPreviewing(true);\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tconst { result } = await client.previewTemplate(type, input, locale);\n\t\t\t\tsetPreview(result);\n\t\t\t\treturn result;\n\t\t\t} catch (err) {\n\t\t\t\tconst apiError =\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t\tsetError(apiError);\n\t\t\t\tthrow apiError;\n\t\t\t} finally {\n\t\t\t\tsetIsPreviewing(false);\n\t\t\t}\n\t\t},\n\t\t[client],\n\t);\n\n\tconst clearPreview = useCallback(() => setPreview(null), []);\n\n\treturn { preview, isPreviewing, error, renderPreview, clearPreview };\n}\n"],"mappings":"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","names":["FonderieApiError","FonderieApiError","useCallback","useEffect","useState","FonderieApiError","useCallback","useEffect","useState","FonderieApiError","useCallback","useState"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/hooks/useBuiltInTemplate.ts","../src/hooks/useTemplateCatalog.ts","../src/hooks/useTemplateResolution.ts","../src/hooks/useTemplate.ts","../src/hooks/useTemplateRevisions.ts","../src/hooks/useTemplates.ts","../src/hooks/useTemplatePreview.ts"],"sourcesContent":["export type {\n\tIBuiltInTemplate,\n\tICourierAdminClientOptions,\n\tIPreviewTemplateInput,\n\tIRenderedTemplateResult,\n\tIRollbackTemplateInput,\n\tISetTemplateInput,\n\tITemplateCatalog,\n\tITemplateCatalogEntry,\n\tITemplateEntry,\n\tITemplateResolution,\n\tITemplateRevision,\n} from '@fonderie/client';\nexport { CourierAdminClient, FonderieApiError } from '@fonderie/client';\nexport type {\n\tIUseBuiltInTemplateReturn,\n\tIUseTemplateCatalogReturn,\n\tIUseTemplateResolutionReturn,\n\tIUseTemplatePreviewReturn,\n\tIUseTemplateReturn,\n\tIUseTemplateRevisionsReturn,\n\tIUseTemplatesReturn,\n} from './hooks';\nexport {\n\tuseBuiltInTemplate,\n\tuseTemplate,\n\tuseTemplateCatalog,\n\tuseTemplateResolution,\n\tuseTemplatePreview,\n\tuseTemplateRevisions,\n\tuseTemplates,\n} from './hooks';\n","import type { CourierAdminClient, IBuiltInTemplate } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface IUseBuiltInTemplateReturn {\n\t/** Null while loading, and when none ships in that language (404 is not an error here). */\n\tbuiltIn: IBuiltInTemplate | null;\n\tisLoading: boolean;\n\terror: FonderieApiError | null;\n\trefresh: () => Promise<void>;\n}\n\n// Fonderie's own copy of an email in a language — to open a language nobody has\n// saved yet, or to compare a saved version with what ships.\nexport function useBuiltInTemplate(\n\tclient: CourierAdminClient,\n\ttype: string,\n\tlocale?: string | null,\n): IUseBuiltInTemplateReturn {\n\tconst [builtIn, setBuiltIn] = useState<IBuiltInTemplate | null>(null);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\t\ttry {\n\t\t\tconst { result } = await client.getBuiltInTemplate(type, locale);\n\t\t\tsetBuiltIn(result);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t// Nothing ships in that language: an answer, not a failure.\n\t\t\tif (apiError.status === 404) setBuiltIn(null);\n\t\t\telse setError(apiError);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client, type, locale]);\n\n\tuseEffect(() => {\n\t\tvoid refresh();\n\t}, [refresh]);\n\n\treturn { builtIn, isLoading, error, refresh };\n}\n","import type { CourierAdminClient, ITemplateCatalog } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface IUseTemplateCatalogReturn {\n\tcatalog: ITemplateCatalog | null;\n\tisLoading: boolean;\n\terror: FonderieApiError | null;\n\trefresh: () => Promise<void>;\n}\n\n// Every email — saved or built-in only — with its languages and the app's\n// locales, for a template list that shows what actually exists.\nexport function useTemplateCatalog(client: CourierAdminClient): IUseTemplateCatalogReturn {\n\tconst [catalog, setCatalog] = useState<ITemplateCatalog | null>(null);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\t\ttry {\n\t\t\tconst { result } = await client.getTemplateCatalog();\n\t\t\tsetCatalog(result);\n\t\t} catch (err) {\n\t\t\tsetError(\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0),\n\t\t\t);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client]);\n\n\tuseEffect(() => {\n\t\tvoid refresh();\n\t}, [refresh]);\n\n\treturn { catalog, isLoading, error, refresh };\n}\n","import type { CourierAdminClient, ITemplateResolution } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useState } from 'react';\n\nexport interface IUseTemplateResolutionReturn {\n\tresolution: ITemplateResolution | null;\n\tisResolving: boolean;\n\terror: FonderieApiError | null;\n\t/** Which version a send in `locale` would use. */\n\tresolve: (type: string, locale?: string | null) => Promise<ITemplateResolution | null>;\n}\n\n// Who receives what — asked of the server, which decides with the same function\n// a real send runs.\nexport function useTemplateResolution(client: CourierAdminClient): IUseTemplateResolutionReturn {\n\tconst [resolution, setResolution] = useState<ITemplateResolution | null>(null);\n\tconst [isResolving, setIsResolving] = useState(false);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst resolve = useCallback(\n\t\tasync (type: string, locale?: string | null) => {\n\t\t\tsetIsResolving(true);\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tconst { result } = await client.resolveTemplate(type, locale);\n\t\t\t\tsetResolution(result);\n\t\t\t\treturn result;\n\t\t\t} catch (err) {\n\t\t\t\tsetError(\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0),\n\t\t\t\t);\n\t\t\t\tsetResolution(null);\n\t\t\t\treturn null;\n\t\t\t} finally {\n\t\t\t\tsetIsResolving(false);\n\t\t\t}\n\t\t},\n\t\t[client],\n\t);\n\n\treturn { resolution, isResolving, error, resolve };\n}\n","import type { CourierAdminClient, ITemplateEntry } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface IUseTemplateReturn {\n\ttemplate: ITemplateEntry | null;\n\tisLoading: boolean;\n\terror: FonderieApiError | null;\n\trefresh: () => Promise<void>;\n}\n\nexport function useTemplate(\n\tclient: CourierAdminClient,\n\ttype: string,\n\tlocale?: string | null,\n): IUseTemplateReturn {\n\tconst [template, setTemplate] = useState<ITemplateEntry | null>(null);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\t\ttry {\n\t\t\tconst { result } = await client.getTemplate(type, locale);\n\t\t\tsetTemplate(result);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t// Gone (deleted, or never saved): drop what was shown, or a screen keeps\n\t\t\t// rendering a version that no longer exists.\n\t\t\tif (apiError.status === 404) setTemplate(null);\n\t\t\tsetError(apiError);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client, type, locale]);\n\n\tuseEffect(() => {\n\t\tvoid refresh();\n\t}, [refresh]);\n\n\treturn { template, isLoading, error, refresh };\n}\n","import type { CourierAdminClient, ITemplateEntry, ITemplateRevision } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface IUseTemplateRevisionsReturn {\n\trevisions: ITemplateRevision[];\n\tisLoading: boolean;\n\terror: FonderieApiError | null;\n\trefresh: () => Promise<void>;\n\trollback: (toVersion: number) => Promise<ITemplateEntry>;\n}\n\nexport function useTemplateRevisions(\n\tclient: CourierAdminClient,\n\ttype: string,\n\tlocale?: string | null,\n): IUseTemplateRevisionsReturn {\n\tconst [revisions, setRevisions] = useState<ITemplateRevision[]>([]);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\t\ttry {\n\t\t\tconst { result } = await client.listRevisions(type, locale);\n\t\t\tsetRevisions(result);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\tsetError(apiError);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client, type, locale]);\n\n\tconst rollback = useCallback(\n\t\tasync (toVersion: number) => {\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tconst { result } = await client.rollback(type, { toVersion }, locale);\n\t\t\t\tawait refresh();\n\t\t\t\treturn result;\n\t\t\t} catch (err) {\n\t\t\t\tconst apiError =\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t\tsetError(apiError);\n\t\t\t\tthrow apiError;\n\t\t\t}\n\t\t},\n\t\t[client, type, locale, refresh],\n\t);\n\n\tuseEffect(() => {\n\t\tvoid refresh();\n\t}, [refresh]);\n\n\treturn { revisions, isLoading, error, refresh, rollback };\n}\n","import type { CourierAdminClient, ISetTemplateInput, ITemplateEntry } from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport interface IUseTemplatesReturn {\n\ttemplates: ITemplateEntry[];\n\tisLoading: boolean;\n\terror: FonderieApiError | null;\n\trefresh: () => Promise<void>;\n\tsaveTemplate: (\n\t\ttype: string,\n\t\tinput: ISetTemplateInput,\n\t\tlocale?: string | null,\n\t) => Promise<ITemplateEntry>;\n\tremoveTemplate: (type: string, locale?: string | null) => Promise<void>;\n}\n\nexport function useTemplates(client: CourierAdminClient): IUseTemplatesReturn {\n\tconst [templates, setTemplates] = useState<ITemplateEntry[]>([]);\n\tconst [isLoading, setIsLoading] = useState(true);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst refresh = useCallback(async () => {\n\t\tsetIsLoading(true);\n\t\tsetError(null);\n\t\ttry {\n\t\t\tconst { result } = await client.listTemplates();\n\t\t\tsetTemplates(result);\n\t\t} catch (err) {\n\t\t\tconst apiError =\n\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\tsetError(apiError);\n\t\t} finally {\n\t\t\tsetIsLoading(false);\n\t\t}\n\t}, [client]);\n\n\tconst saveTemplate = useCallback(\n\t\tasync (type: string, input: ISetTemplateInput, locale?: string | null) => {\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tconst { result } = await client.setTemplate(type, input, locale);\n\t\t\t\tawait refresh();\n\t\t\t\treturn result;\n\t\t\t} catch (err) {\n\t\t\t\tconst apiError =\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t\tsetError(apiError);\n\t\t\t\tthrow apiError;\n\t\t\t}\n\t\t},\n\t\t[client, refresh],\n\t);\n\n\tconst removeTemplate = useCallback(\n\t\tasync (type: string, locale?: string | null) => {\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tawait client.deleteTemplate(type, locale);\n\t\t\t\tawait refresh();\n\t\t\t} catch (err) {\n\t\t\t\tconst apiError =\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t\tsetError(apiError);\n\t\t\t\tthrow apiError;\n\t\t\t}\n\t\t},\n\t\t[client, refresh],\n\t);\n\n\tuseEffect(() => {\n\t\tvoid refresh();\n\t}, [refresh]);\n\n\treturn { templates, isLoading, error, refresh, saveTemplate, removeTemplate };\n}\n","import type {\n\tCourierAdminClient,\n\tIPreviewTemplateInput,\n\tIRenderedTemplateResult,\n} from '@fonderie/client';\nimport { FonderieApiError } from '@fonderie/client';\nimport { useCallback, useState } from 'react';\n\nexport interface IUseTemplatePreviewReturn {\n\tpreview: IRenderedTemplateResult | null;\n\tisPreviewing: boolean;\n\terror: FonderieApiError | null;\n\trenderPreview: (\n\t\ttype: string,\n\t\tinput: IPreviewTemplateInput,\n\t\tlocale?: string | null,\n\t) => Promise<IRenderedTemplateResult>;\n\tclearPreview: () => void;\n}\n\n// On demand, not on mount: the caller decides when the editor's content is\n// worth rendering. Server-side, so what comes back is what the resolver\n// produces — the layout shell and the variable substitution included.\nexport function useTemplatePreview(client: CourierAdminClient): IUseTemplatePreviewReturn {\n\tconst [preview, setPreview] = useState<IRenderedTemplateResult | null>(null);\n\tconst [isPreviewing, setIsPreviewing] = useState(false);\n\tconst [error, setError] = useState<FonderieApiError | null>(null);\n\n\tconst renderPreview = useCallback(\n\t\tasync (type: string, input: IPreviewTemplateInput, locale?: string | null) => {\n\t\t\tsetIsPreviewing(true);\n\t\t\tsetError(null);\n\t\t\ttry {\n\t\t\t\tconst { result } = await client.previewTemplate(type, input, locale);\n\t\t\t\tsetPreview(result);\n\t\t\t\treturn result;\n\t\t\t} catch (err) {\n\t\t\t\tconst apiError =\n\t\t\t\t\terr instanceof FonderieApiError ? err : new FonderieApiError('unknown', String(err), 0);\n\t\t\t\tsetError(apiError);\n\t\t\t\tthrow apiError;\n\t\t\t} finally {\n\t\t\t\tsetIsPreviewing(false);\n\t\t\t}\n\t\t},\n\t\t[client],\n\t);\n\n\tconst clearPreview = useCallback(() => setPreview(null), []);\n\n\treturn { preview, isPreviewing, error, renderPreview, clearPreview };\n}\n"],"mappings":"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","names":["FonderieApiError","FonderieApiError","useCallback","useEffect","useState","FonderieApiError","useCallback","useState","FonderieApiError","useCallback","useEffect","useState","FonderieApiError","useCallback","useEffect","useState","FonderieApiError","useCallback","useEffect","useState","FonderieApiError","useCallback","useState"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fonderie/react-courier-admin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "React hooks for the Fonderie courier admin API (email/SMS/push template management) — thin bindings over @fonderie/client's CourierAdminClient.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"fonderiejs",
|