@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.
Files changed (44) hide show
  1. package/AGENTS.md +1 -1
  2. package/README.md +61 -13
  3. package/dist/cli.js +1 -7
  4. package/dist/cli.js.map +1 -1
  5. package/dist/client.js +2 -2
  6. package/dist/client.js.map +1 -1
  7. package/dist/codegen.d.ts.map +1 -1
  8. package/dist/codegen.js +63 -11
  9. package/dist/codegen.js.map +1 -1
  10. package/dist/next/edit-boot.d.ts +10 -19
  11. package/dist/next/edit-boot.d.ts.map +1 -1
  12. package/dist/next/edit-boot.js +14 -28
  13. package/dist/next/edit-boot.js.map +1 -1
  14. package/dist/next/revalidate.d.ts +4 -2
  15. package/dist/next/revalidate.d.ts.map +1 -1
  16. package/dist/next/revalidate.js +46 -12
  17. package/dist/next/revalidate.js.map +1 -1
  18. package/dist/react/markers.d.ts +5 -1
  19. package/dist/react/markers.d.ts.map +1 -1
  20. package/dist/react/markers.js +23 -6
  21. package/dist/react/markers.js.map +1 -1
  22. package/dist/react/provider.d.ts +1 -1
  23. package/dist/react/provider.d.ts.map +1 -1
  24. package/dist/react/provider.js +17 -3
  25. package/dist/react/provider.js.map +1 -1
  26. package/dist/react/runtime.d.ts +5 -0
  27. package/dist/react/runtime.d.ts.map +1 -1
  28. package/dist/react/runtime.js +396 -147
  29. package/dist/react/runtime.js.map +1 -1
  30. package/dist/react/shared.d.ts.map +1 -1
  31. package/dist/react/shared.js +10 -12
  32. package/dist/react/shared.js.map +1 -1
  33. package/dist/react/types.d.ts +3 -1
  34. package/dist/react/types.d.ts.map +1 -1
  35. package/dist/react/types.js.map +1 -1
  36. package/package.json +9 -12
  37. package/dist/client.test.d.ts +0 -2
  38. package/dist/client.test.d.ts.map +0 -1
  39. package/dist/client.test.js +0 -342
  40. package/dist/client.test.js.map +0 -1
  41. package/dist/codegen.test.d.ts +0 -2
  42. package/dist/codegen.test.d.ts.map +0 -1
  43. package/dist/codegen.test.js +0 -219
  44. 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":""}
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../src/client.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAG1C,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAEvE,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAI,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,MAAM,MAAM,GAAG,oBAAoB,CAUhC;YACD,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,qBAAqB;YAC9B,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACrB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;gBAC5B,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;oBACb,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;oBAC3B,IAAI,EAAE;wBACJ,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC9D,MAAM,EAAE;4BACN;gCACE,GAAG,EAAE,OAAO;gCACZ,KAAK,EAAE,OAAO;gCACd,IAAI,EAAE,QAAQ;gCACd,QAAQ,EAAE,IAAI;gCACd,QAAQ,EAAE,IAAI;gCACd,UAAU,EAAE,KAAK;6BAClB;4BACD;gCACE,GAAG,EAAE,UAAU;gCACf,KAAK,EAAE,UAAU;gCACjB,IAAI,EAAE,WAAW;gCACjB,QAAQ,EAAE,KAAK;gCACf,QAAQ,EAAE,KAAK;gCACf,UAAU,EAAE,IAAI;6BACjB;4BACD;gCACE,GAAG,EAAE,WAAW;gCAChB,KAAK,EAAE,WAAW;gCAClB,IAAI,EAAE,OAAO;gCACb,QAAQ,EAAE,KAAK;gCACf,QAAQ,EAAE,KAAK;gCACf,UAAU,EAAE,KAAK;6BAClB;yBACF;wBACD,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;qBAC3B;oBACD,IAAI,EAAE;wBACJ;4BACE,IAAI,EAAE,OAAO;4BACb,EAAE,EAAE,QAAQ;4BACZ,UAAU,EAAE;gCACV,KAAK,EAAE,OAAO;gCACd,SAAS,EAAE;oCACT,EAAE,EAAE,SAAS;oCACb,GAAG,EAAE,+BAA+B;oCACpC,KAAK,EAAE,IAAI;oCACX,MAAM,EAAE,GAAG;oCACX,KAAK,EAAE,YAAY;oCACnB,SAAS,EAAE,gBAAgB;oCAC3B,WAAW,EAAE,eAAe;oCAC5B,IAAI,EAAE,CAAC,MAAM,EAAE,UAAU,CAAC;oCAC1B,QAAQ,EAAE,QAAQ;oCAClB,WAAW,EAAE,GAAG;oCAChB,WAAW,EAAE,GAAG;oCAChB,UAAU,EAAE,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;iCACxD;6BACF;4BACD,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE;yBAC/C;qBACF;oBACD,QAAQ,EAAE;wBACR;4BACE,IAAI,EAAE,UAAU;4BAChB,EAAE,EAAE,WAAW;4BACf,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;4BAC7B,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,EAAE;yBAC1C;qBACF;iBACF,CAAC,EACF;oBACE,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE;iBACxD,CACF,CAAA;YACH,CAAC;SACF,CAAC,CAAA;QAEF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE;YACjD,IAAI,EAAE,CAAC,cAAc,EAAE,OAAO,CAAC;YAC/B,OAAO,EAAE,UAAU;SACpB,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,CACV,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EACjB,+DAA+D,CAChE,CAAA;QACD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;QACzC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;QACxD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAA;QAChD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QAClD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAA;QAC1C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;QAChE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;QAChE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,CAAC,CAAA;QACxE,MAAM,CAAC,KAAK,CACV,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,EAChD,gBAAgB,CACjB,CAAA;QACD,MAAM,CAAC,KAAK,CACV,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,EAClD,eAAe,CAChB,CAAA;QACD,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,IAAI,EAAE;YAC5D,MAAM;YACN,UAAU;SACX,CAAC,CAAA;QACF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;QACvE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,CAAC,CAAA;QACrE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,WAAW,EAAE,GAAG,CAAC,CAAA;QACrE,MAAM,CAAC,KAAK,CACV,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,EAC1D,+BAA+B,CAChC,CAAA;QACD,MAAM,CAAC,KAAK,CACV,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,EACrE,8CAA8C,CAC/C,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,kCAAkC,EAAE,KAAK,IAAI,EAAE;QAClD,MAAM,QAAQ,GAAa,EAAE,CAAA;QAC7B,MAAM,MAAM,GAAG,oBAAoB,CAAC;YAClC,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,qBAAqB;YAC9B,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACrB,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;gBAE5B,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,CAAC;oBAC3D,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;wBACb,IAAI,EAAE;4BACJ,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE;4BAC5D,MAAM,EAAE;gCACN;oCACE,GAAG,EAAE,OAAO;oCACZ,KAAK,EAAE,OAAO;oCACd,IAAI,EAAE,QAAQ;oCACd,QAAQ,EAAE,IAAI;oCACd,QAAQ,EAAE,IAAI;oCACd,UAAU,EAAE,KAAK;iCAClB;gCACD;oCACE,GAAG,EAAE,WAAW;oCAChB,KAAK,EAAE,WAAW;oCAClB,IAAI,EAAE,MAAM;oCACZ,QAAQ,EAAE,KAAK;oCACf,QAAQ,EAAE,KAAK;oCACf,UAAU,EAAE,KAAK;iCAClB;6BACF;yBACF;wBACD,IAAI,EAAE;4BACJ,IAAI,EAAE,MAAM;4BACZ,EAAE,EAAE,OAAO;4BACX,UAAU,EAAE;gCACV,KAAK,EAAE,iBAAiB;gCACxB,SAAS,EAAE;oCACT;wCACE,EAAE,EAAE,KAAK;wCACT,GAAG,EAAE,QAAQ;wCACb,IAAI,EAAE,YAAY;wCAClB,QAAQ,EAAE,IAAI;wCACd,KAAK,EAAE,QAAQ;qCAChB;oCACD;wCACE,EAAE,EAAE,KAAK;wCACT,GAAG,EAAE,YAAY;wCACjB,IAAI,EAAE,MAAM;wCACZ,QAAQ,EAAE,KAAK;wCACf,KAAK,EAAE,YAAY;qCACpB;iCACF;6BACF;4BACD,IAAI,EAAE;gCACJ,IAAI,EAAE,iBAAiB;gCACvB,SAAS,EAAE,EAAE;gCACb,WAAW,EAAE,EAAE;6BAChB;yBACF;qBACF,CAAC,EACF;wBACE,MAAM,EAAE,GAAG;wBACX,OAAO,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE;qBACxD,CACF,CAAA;gBACH,CAAC;gBAED,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;oBACb,IAAI,EAAE;wBACJ,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE;wBAC5D,MAAM,EAAE;4BACN;gCACE,GAAG,EAAE,OAAO;gCACZ,KAAK,EAAE,OAAO;gCACd,IAAI,EAAE,QAAQ;gCACd,QAAQ,EAAE,IAAI;gCACd,QAAQ,EAAE,IAAI;gCACd,UAAU,EAAE,KAAK;6BAClB;yBACF;wBACD,IAAI,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE;qBAC3B;oBACD,IAAI,EAAE;wBACJ;4BACE,IAAI,EAAE,MAAM;4BACZ,EAAE,EAAE,OAAO;4BACX,UAAU,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE;4BACxC,IAAI,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,EAAE,EAAE;yBACjD;qBACF;iBACF,CAAC,EACF;oBACE,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE;iBACxD,CACF,CAAA;YACH,CAAC;SACF,CAAC,CAAA;QAEF,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;QAC5E,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE;YAC9D,MAAM,EAAE,OAAO;SAChB,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,wCAAwC,CAAC,CAAA;QACzE,MAAM,CAAC,KAAK,CACV,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,EACjB,iDAAiD,CAClD,CAAA;QACD,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,iBAAiB,CAAC,CAAA;QAC9D,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAiB,CAAC,CAAA;QACnE,MAAM,CAAC,SAAS,CACd,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EACvE,CAAC,QAAQ,EAAE,YAAY,CAAC,CACzB,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,2DAA2D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,QAAQ,GAA+C,EAAE,CAAA;QAC/D,MAAM,MAAM,GAAG,oBAAoB,CAAC;YAClC,KAAK,EAAE,eAAe;YACtB,OAAO,EAAE,qBAAqB;YAC9B,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;gBAE3C,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;oBACtD,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;wBACb,WAAW,EAAE,GAAG;wBAChB,QAAQ,EAAE;4BACR;gCACE,IAAI,EAAE,wBAAwB;gCAC9B,WAAW,EAAE,0BAA0B;gCACvC,SAAS,EAAE,CAAC,SAAS,EAAE,eAAe,CAAC;gCACvC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gCACzB,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;6BAC3B;yBACF;qBACF,CAAC,EACF,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CACjE,CAAA;gBACH,CAAC;gBAED,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,qCAAqC,CAAC,EAAE,CAAC;oBAClE,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;wBACb,SAAS,EAAE,WAAW;wBACtB,cAAc,EAAE,gBAAgB;wBAChC,MAAM,EAAE,YAAY;wBACpB,aAAa,EAAE,CAAC,SAAS,CAAC;qBAC3B,CAAC,EACF,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CACjE,CAAA;gBACH,CAAC;gBAED,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;oBACb,aAAa,EAAE,OAAO;oBACtB,eAAe,EAAE,WAAW;oBAC5B,aAAa,EAAE,YAAY;iBAC5B,CAAC,EACF,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE,EAAE,CACjE,CAAA;YACH,CAAC;SACF,CAAC,CAAA;QAEF,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,gBAAgB,EAAE,CAAA;QAC9C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAClD;YACE,OAAO,EAAE,iBAAiB;YAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE;YAC7D,eAAe,EAAE,IAAI;SACtB,EACD,EAAE,cAAc,EAAE,UAAU,EAAE,CAC/B,CAAA;QACD,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CACnD,EAAE,KAAK,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAC,SAAS,CAAC,EAAE,EACxD,EAAE,cAAc,EAAE,cAAc,EAAE,CACnC,CAAA;QAED,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAA;QACrC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,wBAAwB,CAAC,CAAA;QAChE,MAAM,CAAC,KAAK,CACV,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAChB,4DAA4D,CAC7D,CAAA;QACD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAE/C,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;QACvD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,sBAAsB,CAAC,CAAA;QAClE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC,CAAA;QACxD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,kBAAkB,CAAC,CAAA;QAE7D,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE;YAC5D,OAAO,EAAE,iBAAiB;YAC1B,SAAS,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,iBAAiB,EAAE;YAC7D,eAAe,EAAE,IAAI;SACtB,CAAC,CAAA;QACF,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,EAAE,OAAO,CAAC,CAAA;QAC7C,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,EAAE,WAAW,CAAC,CAAA;QACnD,MAAM,CAAC,KAAK,CACV,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAChB,wDAAwD,CACzD,CAAA;QACD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAC/C,MAAM,CAAC,KAAK,CACV,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAC9D,cAAc,CACf,CAAA;QACD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE;YAC5D,KAAK,EAAE,iBAAiB;YACxB,aAAa,EAAE,CAAC,SAAS,CAAC;SAC3B,CAAC,CAAA;QACF,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,EAAE,WAAW,CAAC,CAAA;QACnD,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC,SAAS,CAAC,CAAC,CAAA;IAC7D,CAAC,CAAC,CAAA;IAEF,IAAI,CAAC,yDAAyD,EAAE,KAAK,IAAI,EAAE;QACzE,MAAM,QAAQ,GAA+C,EAAE,CAAA;QAC/D,MAAM,MAAM,GAAG,oBAAoB,CAahC;YACD,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,qBAAqB;YAC9B,mBAAmB,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE;YAC1D,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;gBAC3B,QAAQ,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC3C,IAAI,IAAI,EAAE,MAAM,KAAK,QAAQ,EAAE,CAAC;oBAC9B,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;gBAC5C,CAAC;gBAED,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAA;gBACzB,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAA;gBAC/D,MAAM,UAAU,GACd,IAAI,EAAE,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;oBACzC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAyC;yBAC3D,IAAI,EAAE,UAAU;oBACrB,CAAC,CAAC,EAAE,CAAA;gBAER,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;oBACb,IAAI,EAAE;wBACJ,QAAQ,EAAE;4BACR,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW;4BAC9C,IAAI,EAAE,IAAI;4BACV,IAAI,EAAE,YAAY;4BAClB,UAAU,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ;yBAChD;wBACD,MAAM,EAAE,EAAE;qBACX;oBACD,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,EAAE;iBACpE,CAAC,EACF;oBACE,MAAM,EAAE,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG;oBAC3C,OAAO,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE;iBACxD,CACF,CAAA;YACH,CAAC;SACF,CAAC,CAAA;QAEF,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,cAAc,CACzC,OAAO,EACP,EAAE,KAAK,EAAE,OAAO,EAAE,EAClB,EAAE,cAAc,EAAE,eAAe,EAAE,CACpC,CAAA;QACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,cAAc,CACzC,WAAW,EACX,YAAY,EACZ;YACE,IAAI,EAAE,OAAO;SACd,EACD,EAAE,cAAc,EAAE,mBAAmB,EAAE,CACxC,CAAA;QACD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,QAAQ,EAAE;YAC7D,cAAc,EAAE,eAAe;SAChC,CAAC,CAAA;QAEF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAClD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;QAClD,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QAC3B,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,sCAAsC,CAAC,CAAA;QACtE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;QAC/C,MAAM,CAAC,KAAK,CACV,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAC9D,eAAe,CAChB,CAAA;QACD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE;YAC5D,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;SACxD,CAAC,CAAA;QACF,MAAM,CAAC,KAAK,CACV,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAChB,iDAAiD,CAClD,CAAA;QACD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAA;QAChD,MAAM,CAAC,KAAK,CACV,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAC9D,mBAAmB,CACpB,CAAA;QACD,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE;YAC5D,IAAI,EAAE;gBACJ,IAAI,EAAE,WAAW;gBACjB,EAAE,EAAE,YAAY;gBAChB,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;aAC9B;SACF,CAAC,CAAA;QACF,MAAM,CAAC,KAAK,CACV,QAAQ,CAAC,CAAC,CAAC,EAAE,GAAG,EAChB,6CAA6C,CAC9C,CAAA;QACD,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAA;QACjD,MAAM,CAAC,KAAK,CACV,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAC9D,eAAe,CAChB,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=codegen.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"codegen.test.d.ts","sourceRoot":"","sources":["../src/codegen.test.ts"],"names":[],"mappings":""}
@@ -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
@@ -1 +0,0 @@
1
- {"version":3,"file":"codegen.test.js","sourceRoot":"","sources":["../src/codegen.test.ts"],"names":[],"mappings":"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"}