@einblick/sdk 0.6.4 → 0.7.2
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/AGENTS.md +1 -1
- package/README.md +61 -13
- package/dist/cli.js +1 -7
- package/dist/cli.js.map +1 -1
- package/dist/client.js +2 -2
- package/dist/client.js.map +1 -1
- package/dist/codegen.d.ts.map +1 -1
- package/dist/codegen.js +63 -11
- package/dist/codegen.js.map +1 -1
- package/dist/next/edit-boot.d.ts +10 -19
- package/dist/next/edit-boot.d.ts.map +1 -1
- package/dist/next/edit-boot.js +14 -28
- package/dist/next/edit-boot.js.map +1 -1
- package/dist/next/revalidate.d.ts +4 -2
- package/dist/next/revalidate.d.ts.map +1 -1
- package/dist/next/revalidate.js +46 -12
- package/dist/next/revalidate.js.map +1 -1
- package/dist/react/markers.d.ts +5 -1
- package/dist/react/markers.d.ts.map +1 -1
- package/dist/react/markers.js +23 -6
- package/dist/react/markers.js.map +1 -1
- package/dist/react/provider.d.ts +1 -1
- package/dist/react/provider.d.ts.map +1 -1
- package/dist/react/provider.js +17 -3
- package/dist/react/provider.js.map +1 -1
- package/dist/react/runtime.d.ts +5 -0
- package/dist/react/runtime.d.ts.map +1 -1
- package/dist/react/runtime.js +396 -147
- package/dist/react/runtime.js.map +1 -1
- package/dist/react/shared.d.ts.map +1 -1
- package/dist/react/shared.js +10 -12
- package/dist/react/shared.js.map +1 -1
- package/dist/react/types.d.ts +3 -1
- package/dist/react/types.d.ts.map +1 -1
- package/dist/react/types.js.map +1 -1
- package/package.json +9 -12
- package/dist/client.test.d.ts +0 -2
- package/dist/client.test.d.ts.map +0 -1
- package/dist/client.test.js +0 -342
- package/dist/client.test.js.map +0 -1
- package/dist/codegen.test.d.ts +0 -2
- package/dist/codegen.test.d.ts.map +0 -1
- package/dist/codegen.test.js +0 -219
- package/dist/codegen.test.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../src/client.test.ts"],"names":[],"mappings":""}
|
package/dist/client.test.js
DELETED
|
@@ -1,342 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import { describe, test } from 'node:test';
|
|
3
|
-
import { createEinblickClient, getEinblickAssetUrl } from './client.js';
|
|
4
|
-
describe('einblick-sdk/client', () => {
|
|
5
|
-
test('serializes sort/include params and normalizes included records', async () => {
|
|
6
|
-
const requests = [];
|
|
7
|
-
const client = createEinblickClient({
|
|
8
|
-
apiKey: 'test-key',
|
|
9
|
-
baseUrl: 'https://example.com',
|
|
10
|
-
fetch: async (input) => {
|
|
11
|
-
requests.push(String(input));
|
|
12
|
-
return new Response(JSON.stringify({
|
|
13
|
-
jsonapi: { version: '1.1' },
|
|
14
|
-
meta: {
|
|
15
|
-
resource: { name: 'Posts', slug: 'posts', mode: 'collection' },
|
|
16
|
-
fields: [
|
|
17
|
-
{
|
|
18
|
-
key: 'title',
|
|
19
|
-
label: 'Title',
|
|
20
|
-
type: 'string',
|
|
21
|
-
required: true,
|
|
22
|
-
sortable: true,
|
|
23
|
-
expandable: false,
|
|
24
|
-
},
|
|
25
|
-
{
|
|
26
|
-
key: 'sections',
|
|
27
|
-
label: 'Sections',
|
|
28
|
-
type: 'relations',
|
|
29
|
-
required: false,
|
|
30
|
-
sortable: false,
|
|
31
|
-
expandable: true,
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
key: 'thumbnail',
|
|
35
|
-
label: 'Thumbnail',
|
|
36
|
-
type: 'image',
|
|
37
|
-
required: false,
|
|
38
|
-
sortable: false,
|
|
39
|
-
expandable: false,
|
|
40
|
-
},
|
|
41
|
-
],
|
|
42
|
-
page: { nextCursor: null },
|
|
43
|
-
},
|
|
44
|
-
data: [
|
|
45
|
-
{
|
|
46
|
-
type: 'posts',
|
|
47
|
-
id: 'post-1',
|
|
48
|
-
attributes: {
|
|
49
|
-
title: 'Hello',
|
|
50
|
-
thumbnail: {
|
|
51
|
-
id: 'asset-1',
|
|
52
|
-
url: 'https://example.com/image.jpg',
|
|
53
|
-
width: 1200,
|
|
54
|
-
height: 800,
|
|
55
|
-
title: 'Hero image',
|
|
56
|
-
copyright: 'Example Studio',
|
|
57
|
-
description: 'Homepage hero',
|
|
58
|
-
tags: ['hero', 'homepage'],
|
|
59
|
-
location: 'Vienna',
|
|
60
|
-
focalPointX: 600,
|
|
61
|
-
focalPointY: 320,
|
|
62
|
-
transforms: { default: { width: 800, format: 'auto' } },
|
|
63
|
-
},
|
|
64
|
-
},
|
|
65
|
-
meta: { slug: 'hello', sort: 3, createdAt: 1 },
|
|
66
|
-
},
|
|
67
|
-
],
|
|
68
|
-
included: [
|
|
69
|
-
{
|
|
70
|
-
type: 'sections',
|
|
71
|
-
id: 'section-1',
|
|
72
|
-
attributes: { body: 'World' },
|
|
73
|
-
meta: { slug: 'section-1', createdAt: 2 },
|
|
74
|
-
},
|
|
75
|
-
],
|
|
76
|
-
}), {
|
|
77
|
-
status: 200,
|
|
78
|
-
headers: { 'Content-Type': 'application/vnd.api+json' },
|
|
79
|
-
});
|
|
80
|
-
},
|
|
81
|
-
});
|
|
82
|
-
const response = await client.getResource('posts', {
|
|
83
|
-
sort: ['-publishedAt', 'title'],
|
|
84
|
-
include: 'sections',
|
|
85
|
-
});
|
|
86
|
-
assert.match(requests[0] ?? '', /\/api\/v1\/posts\?sort=-publishedAt%2Ctitle&include=sections$/);
|
|
87
|
-
assert.equal(response.included.length, 1);
|
|
88
|
-
assert.equal(response.included[0]?.resource, 'sections');
|
|
89
|
-
assert.equal(response.fields[0]?.sortable, true);
|
|
90
|
-
assert.equal(response.fields[1]?.expandable, true);
|
|
91
|
-
assert.equal(response.records[0]?.sort, 3);
|
|
92
|
-
assert.equal(response.records[0]?.fields.thumbnail?.width, 1200);
|
|
93
|
-
assert.equal(response.records[0]?.fields.thumbnail?.height, 800);
|
|
94
|
-
assert.equal(response.records[0]?.fields.thumbnail?.title, 'Hero image');
|
|
95
|
-
assert.equal(response.records[0]?.fields.thumbnail?.copyright, 'Example Studio');
|
|
96
|
-
assert.equal(response.records[0]?.fields.thumbnail?.description, 'Homepage hero');
|
|
97
|
-
assert.deepEqual(response.records[0]?.fields.thumbnail?.tags, [
|
|
98
|
-
'hero',
|
|
99
|
-
'homepage',
|
|
100
|
-
]);
|
|
101
|
-
assert.equal(response.records[0]?.fields.thumbnail?.location, 'Vienna');
|
|
102
|
-
assert.equal(response.records[0]?.fields.thumbnail?.focalPointX, 600);
|
|
103
|
-
assert.equal(response.records[0]?.fields.thumbnail?.focalPointY, 320);
|
|
104
|
-
assert.equal(getEinblickAssetUrl(response.records[0]?.fields.thumbnail), 'https://example.com/image.jpg');
|
|
105
|
-
assert.equal(getEinblickAssetUrl(response.records[0]?.fields.thumbnail, 'default'), 'https://example.com/image.jpg?w=800&fmt=auto');
|
|
106
|
-
});
|
|
107
|
-
test('supports locale-aware jobs reads', async () => {
|
|
108
|
-
const requests = [];
|
|
109
|
-
const client = createEinblickClient({
|
|
110
|
-
apiKey: 'server-key',
|
|
111
|
-
baseUrl: 'https://example.com',
|
|
112
|
-
fetch: async (input) => {
|
|
113
|
-
requests.push(String(input));
|
|
114
|
-
if (String(input).includes('/api/v1/jobs/senior-engineer')) {
|
|
115
|
-
return new Response(JSON.stringify({
|
|
116
|
-
meta: {
|
|
117
|
-
resource: { name: 'Jobs', slug: 'jobs', mode: 'collection' },
|
|
118
|
-
fields: [
|
|
119
|
-
{
|
|
120
|
-
key: 'title',
|
|
121
|
-
label: 'Title',
|
|
122
|
-
type: 'string',
|
|
123
|
-
required: true,
|
|
124
|
-
sortable: true,
|
|
125
|
-
expandable: false,
|
|
126
|
-
},
|
|
127
|
-
{
|
|
128
|
-
key: 'questions',
|
|
129
|
-
label: 'Questions',
|
|
130
|
-
type: 'json',
|
|
131
|
-
required: false,
|
|
132
|
-
sortable: false,
|
|
133
|
-
expandable: false,
|
|
134
|
-
},
|
|
135
|
-
],
|
|
136
|
-
},
|
|
137
|
-
data: {
|
|
138
|
-
type: 'jobs',
|
|
139
|
-
id: 'job-1',
|
|
140
|
-
attributes: {
|
|
141
|
-
title: 'Senior Engineer',
|
|
142
|
-
questions: [
|
|
143
|
-
{
|
|
144
|
-
id: 'q-1',
|
|
145
|
-
key: 'resume',
|
|
146
|
-
type: 'short_text',
|
|
147
|
-
required: true,
|
|
148
|
-
label: 'Resume',
|
|
149
|
-
},
|
|
150
|
-
{
|
|
151
|
-
id: 'q-2',
|
|
152
|
-
key: 'start_date',
|
|
153
|
-
type: 'date',
|
|
154
|
-
required: false,
|
|
155
|
-
label: 'Start Date',
|
|
156
|
-
},
|
|
157
|
-
],
|
|
158
|
-
},
|
|
159
|
-
meta: {
|
|
160
|
-
slug: 'senior-engineer',
|
|
161
|
-
createdAt: 10,
|
|
162
|
-
publishedAt: 20,
|
|
163
|
-
},
|
|
164
|
-
},
|
|
165
|
-
}), {
|
|
166
|
-
status: 200,
|
|
167
|
-
headers: { 'Content-Type': 'application/vnd.api+json' },
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
return new Response(JSON.stringify({
|
|
171
|
-
meta: {
|
|
172
|
-
resource: { name: 'Jobs', slug: 'jobs', mode: 'collection' },
|
|
173
|
-
fields: [
|
|
174
|
-
{
|
|
175
|
-
key: 'title',
|
|
176
|
-
label: 'Title',
|
|
177
|
-
type: 'string',
|
|
178
|
-
required: true,
|
|
179
|
-
sortable: true,
|
|
180
|
-
expandable: false,
|
|
181
|
-
},
|
|
182
|
-
],
|
|
183
|
-
page: { nextCursor: null },
|
|
184
|
-
},
|
|
185
|
-
data: [
|
|
186
|
-
{
|
|
187
|
-
type: 'jobs',
|
|
188
|
-
id: 'job-1',
|
|
189
|
-
attributes: { title: 'Senior Engineer' },
|
|
190
|
-
meta: { slug: 'senior-engineer', createdAt: 10 },
|
|
191
|
-
},
|
|
192
|
-
],
|
|
193
|
-
}), {
|
|
194
|
-
status: 200,
|
|
195
|
-
headers: { 'Content-Type': 'application/vnd.api+json' },
|
|
196
|
-
});
|
|
197
|
-
},
|
|
198
|
-
});
|
|
199
|
-
const listResponse = await client.jobs.list({ locale: 'de', sort: 'title' });
|
|
200
|
-
const singleResponse = await client.jobs.get('senior-engineer', {
|
|
201
|
-
locale: 'de-AT',
|
|
202
|
-
});
|
|
203
|
-
assert.match(requests[0] ?? '', /\/api\/v1\/jobs\?sort=title&locale=de$/);
|
|
204
|
-
assert.match(requests[1] ?? '', /\/api\/v1\/jobs\/senior-engineer\?locale=de-AT$/);
|
|
205
|
-
assert.equal(listResponse.records[0]?.slug, 'senior-engineer');
|
|
206
|
-
assert.equal(singleResponse.record.fields.title, 'Senior Engineer');
|
|
207
|
-
assert.deepEqual(singleResponse.record.fields.questions?.map((question) => question.key), ['resume', 'start_date']);
|
|
208
|
-
});
|
|
209
|
-
test('supports command schema discovery and idempotent commands', async () => {
|
|
210
|
-
const requests = [];
|
|
211
|
-
const client = createEinblickClient({
|
|
212
|
-
token: 'site_test_123',
|
|
213
|
-
baseUrl: 'https://example.com',
|
|
214
|
-
fetch: async (input, init) => {
|
|
215
|
-
requests.push({ url: String(input), init });
|
|
216
|
-
if (String(input).endsWith('/api/v1/commands/schema')) {
|
|
217
|
-
return new Response(JSON.stringify({
|
|
218
|
-
generatedAt: 123,
|
|
219
|
-
commands: [
|
|
220
|
-
{
|
|
221
|
-
name: 'jobs.submitApplication',
|
|
222
|
-
description: 'Submit a job application',
|
|
223
|
-
authModes: ['api_key', 'external_site'],
|
|
224
|
-
input: { type: 'object' },
|
|
225
|
-
output: { type: 'object' },
|
|
226
|
-
},
|
|
227
|
-
],
|
|
228
|
-
}), { status: 200, headers: { 'Content-Type': 'application/json' } });
|
|
229
|
-
}
|
|
230
|
-
if (String(input).endsWith('/api/v1/commands/newsletters.signup')) {
|
|
231
|
-
return new Response(JSON.stringify({
|
|
232
|
-
contactId: 'contact-1',
|
|
233
|
-
subscriptionId: 'subscription-1',
|
|
234
|
-
status: 'subscribed',
|
|
235
|
-
contactGroups: ['animals'],
|
|
236
|
-
}), { status: 200, headers: { 'Content-Type': 'application/json' } });
|
|
237
|
-
}
|
|
238
|
-
return new Response(JSON.stringify({
|
|
239
|
-
applicationId: 'app-1',
|
|
240
|
-
submissionState: 'submitted',
|
|
241
|
-
withdrawToken: 'withdraw-1',
|
|
242
|
-
}), { status: 200, headers: { 'Content-Type': 'application/json' } });
|
|
243
|
-
},
|
|
244
|
-
});
|
|
245
|
-
const schema = await client.getCommandSchema();
|
|
246
|
-
const response = await client.jobs.submitApplication({
|
|
247
|
-
jobSlug: 'senior-engineer',
|
|
248
|
-
applicant: { name: 'Ada Lovelace', email: 'ada@example.com' },
|
|
249
|
-
privacyAccepted: true,
|
|
250
|
-
}, { idempotencyKey: 'submit-1' });
|
|
251
|
-
const signupResponse = await client.newsletter.signup({ email: 'ada@example.com', contactGroups: ['animals'] }, { idempotencyKey: 'newsletter-1' });
|
|
252
|
-
assert.equal(schema.generatedAt, 123);
|
|
253
|
-
assert.equal(schema.commands[0]?.name, 'jobs.submitApplication');
|
|
254
|
-
assert.equal(requests[1]?.url, 'https://example.com/api/v1/commands/jobs.submitApplication');
|
|
255
|
-
assert.equal(requests[1]?.init?.method, 'POST');
|
|
256
|
-
const headers = new Headers(requests[1]?.init?.headers);
|
|
257
|
-
assert.equal(headers.get('authorization'), 'Bearer site_test_123');
|
|
258
|
-
assert.equal(headers.get('idempotency-key'), 'submit-1');
|
|
259
|
-
assert.equal(headers.get('content-type'), 'application/json');
|
|
260
|
-
assert.deepEqual(JSON.parse(String(requests[1]?.init?.body)), {
|
|
261
|
-
jobSlug: 'senior-engineer',
|
|
262
|
-
applicant: { name: 'Ada Lovelace', email: 'ada@example.com' },
|
|
263
|
-
privacyAccepted: true,
|
|
264
|
-
});
|
|
265
|
-
assert.equal(response.applicationId, 'app-1');
|
|
266
|
-
assert.equal(response.submissionState, 'submitted');
|
|
267
|
-
assert.equal(requests[2]?.url, 'https://example.com/api/v1/commands/newsletters.signup');
|
|
268
|
-
assert.equal(requests[2]?.init?.method, 'POST');
|
|
269
|
-
assert.equal(new Headers(requests[2]?.init?.headers).get('idempotency-key'), 'newsletter-1');
|
|
270
|
-
assert.deepEqual(JSON.parse(String(requests[2]?.init?.body)), {
|
|
271
|
-
email: 'ada@example.com',
|
|
272
|
-
contactGroups: ['animals'],
|
|
273
|
-
});
|
|
274
|
-
assert.equal(signupResponse.contactId, 'contact-1');
|
|
275
|
-
assert.deepEqual(signupResponse.contactGroups, ['animals']);
|
|
276
|
-
});
|
|
277
|
-
test('sends resource mutation helpers through JSON:API routes', async () => {
|
|
278
|
-
const requests = [];
|
|
279
|
-
const client = createEinblickClient({
|
|
280
|
-
apiKey: 'server-key',
|
|
281
|
-
baseUrl: 'https://example.com',
|
|
282
|
-
resourceSourceTypes: { posts: 'cms', buildings: 'native' },
|
|
283
|
-
fetch: async (input, init) => {
|
|
284
|
-
requests.push({ url: String(input), init });
|
|
285
|
-
if (init?.method === 'DELETE') {
|
|
286
|
-
return new Response(null, { status: 204 });
|
|
287
|
-
}
|
|
288
|
-
const url = String(input);
|
|
289
|
-
const type = url.includes('/buildings') ? 'buildings' : 'posts';
|
|
290
|
-
const attributes = init?.body && typeof init.body === 'string'
|
|
291
|
-
? JSON.parse(init.body)
|
|
292
|
-
.data?.attributes
|
|
293
|
-
: {};
|
|
294
|
-
return new Response(JSON.stringify({
|
|
295
|
-
meta: {
|
|
296
|
-
resource: {
|
|
297
|
-
name: type === 'posts' ? 'Posts' : 'Buildings',
|
|
298
|
-
slug: type,
|
|
299
|
-
mode: 'collection',
|
|
300
|
-
sourceType: type === 'posts' ? 'cms' : 'native',
|
|
301
|
-
},
|
|
302
|
-
fields: [],
|
|
303
|
-
},
|
|
304
|
-
data: { type, id: `${type}-1`, attributes, meta: { createdAt: 1 } },
|
|
305
|
-
}), {
|
|
306
|
-
status: init?.method === 'POST' ? 201 : 200,
|
|
307
|
-
headers: { 'Content-Type': 'application/vnd.api+json' },
|
|
308
|
-
});
|
|
309
|
-
},
|
|
310
|
-
});
|
|
311
|
-
const created = await client.createResource('posts', { title: 'Hello' }, { idempotencyKey: 'create-post-1' });
|
|
312
|
-
const updated = await client.updateResource('buildings', 'building-1', {
|
|
313
|
-
name: 'House',
|
|
314
|
-
}, { idempotencyKey: 'update-building-1' });
|
|
315
|
-
const deleted = await client.deleteResource('posts', 'post-1', {
|
|
316
|
-
idempotencyKey: 'delete-post-1',
|
|
317
|
-
});
|
|
318
|
-
assert.equal(created.record.fields.title, 'Hello');
|
|
319
|
-
assert.equal(updated?.record.fields.name, 'House');
|
|
320
|
-
assert.equal(deleted, null);
|
|
321
|
-
assert.equal(requests[0]?.url, 'https://example.com/api/v1/cms/posts');
|
|
322
|
-
assert.equal(requests[0]?.init?.method, 'POST');
|
|
323
|
-
assert.equal(new Headers(requests[0]?.init?.headers).get('idempotency-key'), 'create-post-1');
|
|
324
|
-
assert.deepEqual(JSON.parse(String(requests[0]?.init?.body)), {
|
|
325
|
-
data: { type: 'posts', attributes: { title: 'Hello' } },
|
|
326
|
-
});
|
|
327
|
-
assert.equal(requests[1]?.url, 'https://example.com/api/v1/buildings/building-1');
|
|
328
|
-
assert.equal(requests[1]?.init?.method, 'PATCH');
|
|
329
|
-
assert.equal(new Headers(requests[1]?.init?.headers).get('idempotency-key'), 'update-building-1');
|
|
330
|
-
assert.deepEqual(JSON.parse(String(requests[1]?.init?.body)), {
|
|
331
|
-
data: {
|
|
332
|
-
type: 'buildings',
|
|
333
|
-
id: 'building-1',
|
|
334
|
-
attributes: { name: 'House' },
|
|
335
|
-
},
|
|
336
|
-
});
|
|
337
|
-
assert.equal(requests[2]?.url, 'https://example.com/api/v1/cms/posts/post-1');
|
|
338
|
-
assert.equal(requests[2]?.init?.method, 'DELETE');
|
|
339
|
-
assert.equal(new Headers(requests[2]?.init?.headers).get('idempotency-key'), 'delete-post-1');
|
|
340
|
-
});
|
|
341
|
-
});
|
|
342
|
-
//# sourceMappingURL=client.test.js.map
|
package/dist/client.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"client.test.js","sourceRoot":"","sources":["../src/client.test.ts"],"names":[],"mappings":"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"}
|
package/dist/codegen.test.d.ts
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.test.d.ts","sourceRoot":"","sources":["../src/codegen.test.ts"],"names":[],"mappings":""}
|
package/dist/codegen.test.js
DELETED
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
import assert from 'node:assert/strict';
|
|
2
|
-
import { mkdtemp, readFile, rm } from 'node:fs/promises';
|
|
3
|
-
import { tmpdir } from 'node:os';
|
|
4
|
-
import { join } from 'node:path';
|
|
5
|
-
import { describe, test } from 'node:test';
|
|
6
|
-
import { generateEinblickTypes } from './codegen.js';
|
|
7
|
-
describe('einblick-sdk/codegen', () => {
|
|
8
|
-
test('imports and maps richtext fields as EinblickRichTextDocument', async () => {
|
|
9
|
-
const cwd = await mkdtemp(join(tmpdir(), 'einblick-sdk-codegen-'));
|
|
10
|
-
const originalFetch = globalThis.fetch;
|
|
11
|
-
try {
|
|
12
|
-
globalThis.fetch = async () => new Response(JSON.stringify({
|
|
13
|
-
openapi: '3.1.0',
|
|
14
|
-
info: { title: 'Einblick Public API', version: '1.0.0' },
|
|
15
|
-
'x-einblick': {
|
|
16
|
-
generatedAt: 1,
|
|
17
|
-
resources: [
|
|
18
|
-
{
|
|
19
|
-
name: 'Pages',
|
|
20
|
-
slug: 'pages',
|
|
21
|
-
mode: 'collection',
|
|
22
|
-
fields: [
|
|
23
|
-
{
|
|
24
|
-
key: 'title',
|
|
25
|
-
label: 'Title',
|
|
26
|
-
type: 'string',
|
|
27
|
-
required: true,
|
|
28
|
-
sortable: true,
|
|
29
|
-
expandable: false,
|
|
30
|
-
},
|
|
31
|
-
{
|
|
32
|
-
key: 'content',
|
|
33
|
-
label: 'Content',
|
|
34
|
-
type: 'richtext',
|
|
35
|
-
required: false,
|
|
36
|
-
sortable: false,
|
|
37
|
-
expandable: false,
|
|
38
|
-
},
|
|
39
|
-
],
|
|
40
|
-
},
|
|
41
|
-
],
|
|
42
|
-
},
|
|
43
|
-
}), {
|
|
44
|
-
status: 200,
|
|
45
|
-
headers: { 'Content-Type': 'application/vnd.oai.openapi+json' },
|
|
46
|
-
});
|
|
47
|
-
const result = await generateEinblickTypes({
|
|
48
|
-
cwd,
|
|
49
|
-
output: './einblick.generated.ts',
|
|
50
|
-
apiKey: 'test-key',
|
|
51
|
-
baseUrl: 'https://example.com',
|
|
52
|
-
});
|
|
53
|
-
const generated = await readFile(result.outputPath, 'utf8');
|
|
54
|
-
assert.match(generated, /EinblickRichTextDocument/);
|
|
55
|
-
assert.match(generated, /content\?: EinblickRichTextDocument/);
|
|
56
|
-
}
|
|
57
|
-
finally {
|
|
58
|
-
globalThis.fetch = originalFetch;
|
|
59
|
-
await rm(cwd, { recursive: true, force: true });
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
test('generates newsletter signup contact group slugs from command schema', async () => {
|
|
63
|
-
const cwd = await mkdtemp(join(tmpdir(), 'einblick-sdk-codegen-'));
|
|
64
|
-
const originalFetch = globalThis.fetch;
|
|
65
|
-
try {
|
|
66
|
-
globalThis.fetch = async (input) => {
|
|
67
|
-
if (String(input).endsWith('/api/v1/commands/schema')) {
|
|
68
|
-
return new Response(JSON.stringify({
|
|
69
|
-
generatedAt: 2,
|
|
70
|
-
commands: [
|
|
71
|
-
{
|
|
72
|
-
name: 'newsletters.signup',
|
|
73
|
-
input: {
|
|
74
|
-
type: 'object',
|
|
75
|
-
properties: {
|
|
76
|
-
contactGroups: {
|
|
77
|
-
type: 'array',
|
|
78
|
-
items: { type: 'string', enum: ['animals', 'food'] },
|
|
79
|
-
},
|
|
80
|
-
},
|
|
81
|
-
},
|
|
82
|
-
},
|
|
83
|
-
],
|
|
84
|
-
}), { status: 200, headers: { 'Content-Type': 'application/json' } });
|
|
85
|
-
}
|
|
86
|
-
return new Response(JSON.stringify({
|
|
87
|
-
openapi: '3.1.0',
|
|
88
|
-
info: { title: 'Einblick Public API', version: '1.0.0' },
|
|
89
|
-
'x-einblick': { generatedAt: 1, resources: [] },
|
|
90
|
-
}), {
|
|
91
|
-
status: 200,
|
|
92
|
-
headers: { 'Content-Type': 'application/vnd.oai.openapi+json' },
|
|
93
|
-
});
|
|
94
|
-
};
|
|
95
|
-
const result = await generateEinblickTypes({
|
|
96
|
-
cwd,
|
|
97
|
-
output: './einblick.generated.ts',
|
|
98
|
-
apiKey: 'test-key',
|
|
99
|
-
baseUrl: 'https://example.com',
|
|
100
|
-
});
|
|
101
|
-
const generated = await readFile(result.outputPath, 'utf8');
|
|
102
|
-
assert.match(generated, /export type NewsletterContactGroupSlug = "animals" \| "food"/);
|
|
103
|
-
assert.match(generated, /contactGroups\?: NewsletterContactGroupSlug\[\]/);
|
|
104
|
-
assert.match(generated, /GeneratedEinblickClient/);
|
|
105
|
-
}
|
|
106
|
-
finally {
|
|
107
|
-
globalThis.fetch = originalFetch;
|
|
108
|
-
await rm(cwd, { recursive: true, force: true });
|
|
109
|
-
}
|
|
110
|
-
});
|
|
111
|
-
test('generates typed resource mutation helpers from writable schema metadata', async () => {
|
|
112
|
-
const cwd = await mkdtemp(join(tmpdir(), 'einblick-sdk-codegen-'));
|
|
113
|
-
const originalFetch = globalThis.fetch;
|
|
114
|
-
try {
|
|
115
|
-
globalThis.fetch = async (input) => {
|
|
116
|
-
if (String(input).endsWith('/api/v1/commands/schema')) {
|
|
117
|
-
return new Response(JSON.stringify({ generatedAt: 2, commands: [] }), { status: 200, headers: { 'Content-Type': 'application/json' } });
|
|
118
|
-
}
|
|
119
|
-
return new Response(JSON.stringify({
|
|
120
|
-
openapi: '3.1.0',
|
|
121
|
-
info: { title: 'Einblick Public API', version: '1.0.0' },
|
|
122
|
-
'x-einblick': {
|
|
123
|
-
generatedAt: 1,
|
|
124
|
-
resources: [
|
|
125
|
-
{
|
|
126
|
-
name: 'Buildings',
|
|
127
|
-
slug: 'buildings',
|
|
128
|
-
mode: 'collection',
|
|
129
|
-
sourceType: 'native',
|
|
130
|
-
supportedActions: ['create', 'update', 'delete'],
|
|
131
|
-
fields: [
|
|
132
|
-
{
|
|
133
|
-
key: 'name',
|
|
134
|
-
label: 'Name',
|
|
135
|
-
type: 'string',
|
|
136
|
-
required: true,
|
|
137
|
-
writable: true,
|
|
138
|
-
sortable: true,
|
|
139
|
-
expandable: false,
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
key: 'image',
|
|
143
|
-
label: 'Image',
|
|
144
|
-
type: 'image',
|
|
145
|
-
required: false,
|
|
146
|
-
writable: false,
|
|
147
|
-
sortable: false,
|
|
148
|
-
expandable: false,
|
|
149
|
-
},
|
|
150
|
-
],
|
|
151
|
-
},
|
|
152
|
-
{
|
|
153
|
-
name: 'Posts',
|
|
154
|
-
slug: 'posts',
|
|
155
|
-
mode: 'collection',
|
|
156
|
-
sourceType: 'cms',
|
|
157
|
-
supportedActions: ['create', 'update'],
|
|
158
|
-
fields: [
|
|
159
|
-
{
|
|
160
|
-
key: 'title',
|
|
161
|
-
label: 'Title',
|
|
162
|
-
type: 'string',
|
|
163
|
-
required: true,
|
|
164
|
-
writable: true,
|
|
165
|
-
sortable: true,
|
|
166
|
-
expandable: false,
|
|
167
|
-
},
|
|
168
|
-
],
|
|
169
|
-
},
|
|
170
|
-
{
|
|
171
|
-
name: 'Jobs',
|
|
172
|
-
slug: 'jobs',
|
|
173
|
-
mode: 'collection',
|
|
174
|
-
sourceType: 'native',
|
|
175
|
-
supportedActions: [],
|
|
176
|
-
fields: [
|
|
177
|
-
{
|
|
178
|
-
key: 'title',
|
|
179
|
-
label: 'Title',
|
|
180
|
-
type: 'string',
|
|
181
|
-
required: true,
|
|
182
|
-
writable: false,
|
|
183
|
-
sortable: true,
|
|
184
|
-
expandable: false,
|
|
185
|
-
},
|
|
186
|
-
],
|
|
187
|
-
},
|
|
188
|
-
],
|
|
189
|
-
},
|
|
190
|
-
}), {
|
|
191
|
-
status: 200,
|
|
192
|
-
headers: { 'Content-Type': 'application/vnd.oai.openapi+json' },
|
|
193
|
-
});
|
|
194
|
-
};
|
|
195
|
-
const result = await generateEinblickTypes({
|
|
196
|
-
cwd,
|
|
197
|
-
output: './einblick.generated.ts',
|
|
198
|
-
apiKey: 'test-key',
|
|
199
|
-
baseUrl: 'https://example.com',
|
|
200
|
-
});
|
|
201
|
-
const generated = await readFile(result.outputPath, 'utf8');
|
|
202
|
-
assert.match(generated, /export type BuildingsWritableFields = Pick<BuildingsFields, "name">/);
|
|
203
|
-
assert.match(generated, /export type PostsWritableFields = Pick<PostsFields, "title">/);
|
|
204
|
-
assert.match(generated, /export type JobsWritableFields = Record<string, never>/);
|
|
205
|
-
assert.match(generated, /buildings: \{\n create\(/);
|
|
206
|
-
assert.match(generated, /update\(recordId: string/);
|
|
207
|
-
assert.match(generated, /delete\(recordId: string/);
|
|
208
|
-
assert.match(generated, /posts: \{\n create\(/);
|
|
209
|
-
assert.doesNotMatch(generated, /jobs: \{\n create\(/);
|
|
210
|
-
assert.match(generated, /resources: createGeneratedResourceClients\(client\)/);
|
|
211
|
-
assert.match(generated, /posts: "cms"/);
|
|
212
|
-
}
|
|
213
|
-
finally {
|
|
214
|
-
globalThis.fetch = originalFetch;
|
|
215
|
-
await rm(cwd, { recursive: true, force: true });
|
|
216
|
-
}
|
|
217
|
-
});
|
|
218
|
-
});
|
|
219
|
-
//# sourceMappingURL=codegen.test.js.map
|
package/dist/codegen.test.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"codegen.test.js","sourceRoot":"","sources":["../src/codegen.test.ts"],"names":[],"mappings":"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"}
|