@actuate-media/cms-core 0.61.0 → 0.63.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (72) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/dist/__tests__/api/email-settings-routes.test.d.ts +2 -0
  3. package/dist/__tests__/api/email-settings-routes.test.d.ts.map +1 -0
  4. package/dist/__tests__/api/email-settings-routes.test.js +240 -0
  5. package/dist/__tests__/api/email-settings-routes.test.js.map +1 -0
  6. package/dist/__tests__/api/field-values-routes.test.d.ts +2 -0
  7. package/dist/__tests__/api/field-values-routes.test.d.ts.map +1 -0
  8. package/dist/__tests__/api/field-values-routes.test.js +147 -0
  9. package/dist/__tests__/api/field-values-routes.test.js.map +1 -0
  10. package/dist/__tests__/api/route-contracts.test.js +5 -0
  11. package/dist/__tests__/api/route-contracts.test.js.map +1 -1
  12. package/dist/__tests__/collections/presets.test.js +24 -0
  13. package/dist/__tests__/collections/presets.test.js.map +1 -1
  14. package/dist/__tests__/email/resolve.test.d.ts +2 -0
  15. package/dist/__tests__/email/resolve.test.d.ts.map +1 -0
  16. package/dist/__tests__/email/resolve.test.js +90 -0
  17. package/dist/__tests__/email/resolve.test.js.map +1 -0
  18. package/dist/__tests__/email/settings-store.test.d.ts +2 -0
  19. package/dist/__tests__/email/settings-store.test.d.ts.map +1 -0
  20. package/dist/__tests__/email/settings-store.test.js +149 -0
  21. package/dist/__tests__/email/settings-store.test.js.map +1 -0
  22. package/dist/api/handlers.d.ts.map +1 -1
  23. package/dist/api/handlers.js +2 -0
  24. package/dist/api/handlers.js.map +1 -1
  25. package/dist/api/route-helpers.d.ts +6 -0
  26. package/dist/api/route-helpers.d.ts.map +1 -1
  27. package/dist/api/route-helpers.js +13 -0
  28. package/dist/api/route-helpers.js.map +1 -1
  29. package/dist/api/routes/documents.d.ts.map +1 -1
  30. package/dist/api/routes/documents.js +76 -0
  31. package/dist/api/routes/documents.js.map +1 -1
  32. package/dist/api/routes/email-settings.d.ts +3 -0
  33. package/dist/api/routes/email-settings.d.ts.map +1 -0
  34. package/dist/api/routes/email-settings.js +248 -0
  35. package/dist/api/routes/email-settings.js.map +1 -0
  36. package/dist/api/routes/users.js +3 -3
  37. package/dist/api/routes/users.js.map +1 -1
  38. package/dist/auth/invites.js +2 -2
  39. package/dist/auth/invites.js.map +1 -1
  40. package/dist/auth/reset.js +2 -2
  41. package/dist/auth/reset.js.map +1 -1
  42. package/dist/collections/presets.d.ts +8 -0
  43. package/dist/collections/presets.d.ts.map +1 -1
  44. package/dist/collections/presets.js +12 -3
  45. package/dist/collections/presets.js.map +1 -1
  46. package/dist/email/resolve.d.ts +27 -0
  47. package/dist/email/resolve.d.ts.map +1 -0
  48. package/dist/email/resolve.js +68 -0
  49. package/dist/email/resolve.js.map +1 -0
  50. package/dist/email/sender.d.ts +36 -0
  51. package/dist/email/sender.d.ts.map +1 -1
  52. package/dist/email/sender.js +16 -0
  53. package/dist/email/sender.js.map +1 -1
  54. package/dist/email/settings-store.d.ts +116 -0
  55. package/dist/email/settings-store.d.ts.map +1 -0
  56. package/dist/email/settings-store.js +222 -0
  57. package/dist/email/settings-store.js.map +1 -0
  58. package/dist/fields/index.d.ts +2 -1
  59. package/dist/fields/index.d.ts.map +1 -1
  60. package/dist/fields/index.js +1 -1
  61. package/dist/fields/index.js.map +1 -1
  62. package/dist/fields/presets.d.ts +15 -0
  63. package/dist/fields/presets.d.ts.map +1 -1
  64. package/dist/fields/presets.js +32 -0
  65. package/dist/fields/presets.js.map +1 -1
  66. package/dist/forms/notify.js +3 -3
  67. package/dist/forms/notify.js.map +1 -1
  68. package/dist/index.d.ts +7 -3
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +4 -2
  71. package/dist/index.js.map +1 -1
  72. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # @actuate-media/cms-core
2
2
 
3
+ ## 0.63.0
4
+
5
+ ### Minor Changes
6
+
7
+ - e3da3bc: Taxonomy Phase A — structured categories and tag autocomplete (UpChat platform feedback P1 + P2).
8
+
9
+ **cms-core**
10
+ - New `GET /collections/:slug/field-values?field=&q=` endpoint returning distinct in-use values for a declared text/select/array field (case-insensitive merge, most-used first, capped at 25). Powers admin tag autocomplete and category suggestions. Auth + collection read scope enforced; undeclared or long-form fields are rejected.
11
+ - New `categoryField({ options })` field preset — renders as a structured `select` when options are provided, free text otherwise.
12
+ - `blogPostCollection({ categoryOptions: [...] })` (and every collection preset with a category field) upgrades the free-text category to a select without hand-rolling field overrides. Plain strings are slugified into `{ label, value }` pairs; explicit `fields.category` overrides still win.
13
+
14
+ **cms-admin**
15
+ - New `TagInput` chip editor with autocomplete from the collection's existing vocabulary. Dedupes case-insensitively and resolves to the canonical casing already in use — no more `AI` / `ai` / `Artificial Intelligence` drift.
16
+ - Post details modal is now field-config aware: a `select` category renders a dropdown (legacy free-text values stay selectable), and an `array` tags field renders the chip input. Free-text configs keep their current inputs.
17
+ - `EditorPost` gains `tags`, round-tripped as canonical `[{ tag }]` rows; legacy plain-string arrays are still read.
18
+
19
+ ## 0.62.0
20
+
21
+ ### Minor Changes
22
+
23
+ - d6b21e7: Add Settings > Email: configure the transactional email provider from the admin UI.
24
+ - **cms-admin**: new Email tab in Settings with a provider picker (Resend, SMTP.com, Amazon SES, generic SMTP), per-provider credential fields, masked stored secrets (last-4 only, write-only inputs), a "Send test email" button, and notices for environment/platform-managed configuration.
25
+ - **cms-core**: new `__email_config__` store with API keys and SMTP passwords encrypted at rest (`CMS_ENCRYPTION_KEY`), `GET/PUT /email/settings` + `POST /email/settings/test` admin routes (test sends only to the signed-in admin's own address, rate-limited), and a DB-aware `resolveEmailSenderAsync()` used by invites, password resets, and form notifications. Resolution order: platform adapter → admin-configured settings → environment variables.
26
+ - **plugin-email**: registers a provider factory with cms-core so admin-configured settings build real Resend/SMTP.com/SES/SMTP senders without env vars.
27
+
3
28
  ## 0.61.0
4
29
 
5
30
  ### Minor Changes
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=email-settings-routes.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-settings-routes.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/api/email-settings-routes.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,240 @@
1
+ import { afterEach, beforeEach, describe, expect, it } from 'vitest';
2
+ import { handleActuateAPI } from '../../api/index.js';
3
+ import { initDB } from '../../db.js';
4
+ import { generateApiKey } from '../../security/api-key-enhanced.js';
5
+ import { clearEmailSenderCache } from '../../email/resolve.js';
6
+ import { setEmailProviderFactory, setEmailSender } from '../../email/sender.js';
7
+ import { EMAIL_CONFIG_COLLECTION } from '../../email/settings-store.js';
8
+ /**
9
+ * Settings > Email API contract:
10
+ * - GET returns masked settings (encrypted secrets never serialized);
11
+ * - PUT validates per provider, encrypts secrets at rest, keeps an existing
12
+ * key when `apiKey` is omitted on the same provider, and wipes secrets
13
+ * when switching providers or clearing;
14
+ * - POST /test sends only to the signed-in admin's own address.
15
+ */
16
+ const VALID_SECRET = 'a'.repeat(48);
17
+ function createMockDB(apiKey) {
18
+ let configRow = null;
19
+ const db = {
20
+ apiKey: {
21
+ findMany: async () => [apiKey],
22
+ findUnique: async ({ where }) => apiKey.keyHash === where.keyHash ? apiKey : null,
23
+ update: async () => apiKey,
24
+ },
25
+ document: {
26
+ findFirst: async ({ where, select }) => {
27
+ if (where?.collection !== EMAIL_CONFIG_COLLECTION || !configRow)
28
+ return null;
29
+ if (select?.id)
30
+ return { id: configRow.id };
31
+ return { data: configRow.data };
32
+ },
33
+ update: async ({ data }) => {
34
+ configRow = { id: configRow.id, data: data.data };
35
+ return configRow;
36
+ },
37
+ create: async ({ data }) => {
38
+ configRow = { id: 'email-config-1', data: data.data };
39
+ return configRow;
40
+ },
41
+ },
42
+ user: {
43
+ findMany: async () => [],
44
+ findUnique: async ({ where }) => where?.id === 'user-1' ? { email: 'admin@example.com', name: 'Admin' } : null,
45
+ },
46
+ auditLog: { create: async () => ({}) },
47
+ session: {},
48
+ };
49
+ return { db, getConfigRow: () => configRow };
50
+ }
51
+ async function makeKey() {
52
+ const { key, keyHash, keyPrefix } = await generateApiKey({
53
+ prefix: 'act_sk',
54
+ scopes: { admin: true },
55
+ });
56
+ return {
57
+ key,
58
+ record: {
59
+ id: 'apikey-1',
60
+ keyHash,
61
+ keyPrefix,
62
+ userId: 'user-1',
63
+ scopes: { admin: true },
64
+ ipRestrictions: null,
65
+ expiresAt: null,
66
+ lastUsedAt: null,
67
+ revokedAt: null,
68
+ },
69
+ };
70
+ }
71
+ function apiRequest(key, path, method = 'GET', body) {
72
+ return new Request(`https://example.com/api/cms${path}`, {
73
+ method,
74
+ headers: {
75
+ Authorization: `Bearer ${key}`,
76
+ ...(body !== undefined ? { 'Content-Type': 'application/json' } : {}),
77
+ },
78
+ ...(body !== undefined ? { body: JSON.stringify(body) } : {}),
79
+ });
80
+ }
81
+ describe('Settings > Email API', () => {
82
+ beforeEach(() => {
83
+ delete globalThis.__actuateConfig;
84
+ process.env.CMS_SECRET = VALID_SECRET;
85
+ process.env.CMS_ENCRYPTION_KEY = 'b'.repeat(64);
86
+ delete process.env.EMAIL_PROVIDER;
87
+ delete process.env.RESEND_API_KEY;
88
+ delete process.env.SMTP_HOST;
89
+ delete process.env.SMTP_KEY;
90
+ delete process.env.SMTPCOM_API_KEY;
91
+ setEmailSender(null);
92
+ setEmailProviderFactory(null);
93
+ clearEmailSenderCache();
94
+ });
95
+ afterEach(() => {
96
+ setEmailSender(null);
97
+ setEmailProviderFactory(null);
98
+ clearEmailSenderCache();
99
+ delete process.env.CMS_ENCRYPTION_KEY;
100
+ });
101
+ it('GET returns empty settings with environment metadata', async () => {
102
+ const { key, record } = await makeKey();
103
+ const { db } = createMockDB(record);
104
+ initDB(db);
105
+ const handler = handleActuateAPI({ prismaClient: db, config: { collections: {} } });
106
+ process.env.RESEND_API_KEY = 're_env_key';
107
+ const res = await handler(apiRequest(key, '/email/settings'));
108
+ expect(res.status).toBe(200);
109
+ const body = (await res.json());
110
+ expect(body.data.settings).toMatchObject({ provider: null, hasApiKey: false });
111
+ expect(body.data.envProvider).toBe('resend');
112
+ expect(body.data.factoryAvailable).toBe(false);
113
+ expect(body.data.platformAdapter).toBe(false);
114
+ });
115
+ it('PUT stores settings with the API key encrypted and never echoes it back', async () => {
116
+ const { key, record } = await makeKey();
117
+ const { db, getConfigRow } = createMockDB(record);
118
+ initDB(db);
119
+ const handler = handleActuateAPI({ prismaClient: db, config: { collections: {} } });
120
+ const res = await handler(apiRequest(key, '/email/settings', 'PUT', {
121
+ provider: 'smtpcom',
122
+ from: 'noreply@example.com',
123
+ apiKey: 'smtpcom-secret-key',
124
+ channel: 'transactional',
125
+ }));
126
+ expect(res.status).toBe(200);
127
+ const body = (await res.json());
128
+ expect(body.data.settings.provider).toBe('smtpcom');
129
+ expect(body.data.settings.hasApiKey).toBe(true);
130
+ expect(body.data.settings.apiKeyLast4).toBe('-key');
131
+ expect(JSON.stringify(body)).not.toContain('smtpcom-secret-key');
132
+ const row = getConfigRow();
133
+ expect(String(row.data.apiKeyEncrypted)).toMatch(/^enc:v1:/);
134
+ expect(JSON.stringify(row.data)).not.toContain('smtpcom-secret-key');
135
+ });
136
+ it('PUT rejects invalid payloads with a 400', async () => {
137
+ const { key, record } = await makeKey();
138
+ const { db } = createMockDB(record);
139
+ initDB(db);
140
+ const handler = handleActuateAPI({ prismaClient: db, config: { collections: {} } });
141
+ const missingKey = await handler(apiRequest(key, '/email/settings', 'PUT', { provider: 'resend', from: 'a@b.co' }));
142
+ expect(missingKey.status).toBe(400);
143
+ const badFrom = await handler(apiRequest(key, '/email/settings', 'PUT', { provider: 'resend', apiKey: 're_x' }));
144
+ expect(badFrom.status).toBe(400);
145
+ const badProvider = await handler(apiRequest(key, '/email/settings', 'PUT', { provider: 'sendgrid', from: 'a@b.co' }));
146
+ expect(badProvider.status).toBe(400);
147
+ });
148
+ it('PUT keeps the stored key when omitted, and wipes it when switching providers', async () => {
149
+ const { key, record } = await makeKey();
150
+ const { db, getConfigRow } = createMockDB(record);
151
+ initDB(db);
152
+ const handler = handleActuateAPI({ prismaClient: db, config: { collections: {} } });
153
+ await handler(apiRequest(key, '/email/settings', 'PUT', {
154
+ provider: 'resend',
155
+ from: 'a@b.co',
156
+ apiKey: 're_first_key',
157
+ }));
158
+ const encryptedFirst = getConfigRow().data.apiKeyEncrypted;
159
+ // Update the sender address only — key omitted, must be preserved.
160
+ const update = await handler(apiRequest(key, '/email/settings', 'PUT', { provider: 'resend', from: 'new@b.co' }));
161
+ expect(update.status).toBe(200);
162
+ expect(getConfigRow().data.apiKeyEncrypted).toBe(encryptedFirst);
163
+ expect(getConfigRow().data.from).toBe('new@b.co');
164
+ // Switching providers must NOT silently reuse the old secret.
165
+ const switched = await handler(apiRequest(key, '/email/settings', 'PUT', { provider: 'smtpcom', from: 'new@b.co' }));
166
+ expect(switched.status).toBe(400); // requires a new key
167
+ // Clearing wipes everything.
168
+ const cleared = await handler(apiRequest(key, '/email/settings', 'PUT', { provider: null }));
169
+ expect(cleared.status).toBe(200);
170
+ expect(getConfigRow().data.apiKeyEncrypted).toBeUndefined();
171
+ expect(getConfigRow().data.provider).toBeNull();
172
+ });
173
+ it('POST /test sends to the signed-in admin via the DB-configured provider', async () => {
174
+ const { key, record } = await makeKey();
175
+ const { db } = createMockDB(record);
176
+ initDB(db);
177
+ const handler = handleActuateAPI({ prismaClient: db, config: { collections: {} } });
178
+ const sent = [];
179
+ setEmailProviderFactory((settings) => {
180
+ expect(settings.provider).toBe('resend');
181
+ expect(settings.apiKey).toBe('re_test_key');
182
+ return {
183
+ send: async (opts) => {
184
+ sent.push({ to: opts.to, subject: opts.subject });
185
+ },
186
+ };
187
+ });
188
+ await handler(apiRequest(key, '/email/settings', 'PUT', {
189
+ provider: 'resend',
190
+ from: 'a@b.co',
191
+ apiKey: 're_test_key',
192
+ }));
193
+ const res = await handler(apiRequest(key, '/email/settings/test', 'POST', {}));
194
+ expect(res.status).toBe(200);
195
+ const body = (await res.json());
196
+ expect(body.data).toMatchObject({ success: true, sentTo: 'admin@example.com' });
197
+ expect(sent).toEqual([{ to: 'admin@example.com', subject: expect.stringContaining('test') }]);
198
+ });
199
+ it('POST /test returns 400 when nothing can send and 502 when the send fails', async () => {
200
+ const { key, record } = await makeKey();
201
+ const { db } = createMockDB(record);
202
+ initDB(db);
203
+ const handler = handleActuateAPI({ prismaClient: db, config: { collections: {} } });
204
+ const none = await handler(apiRequest(key, '/email/settings/test', 'POST', {}));
205
+ expect(none.status).toBe(400);
206
+ setEmailSender({
207
+ send: async () => {
208
+ throw new Error('SMTP.com API error (401): bad key');
209
+ },
210
+ });
211
+ const failed = await handler(apiRequest(key, '/email/settings/test', 'POST', {}));
212
+ expect(failed.status).toBe(502);
213
+ const body = (await failed.json());
214
+ expect(body.error).toContain('SMTP.com API error');
215
+ });
216
+ it('rejects non-admin scopes', async () => {
217
+ const readScopes = { collections: ['*'], actions: ['read'] };
218
+ const { key: readKey, keyHash, keyPrefix, } = await generateApiKey({
219
+ prefix: 'act_sk',
220
+ scopes: readScopes,
221
+ });
222
+ const record = {
223
+ id: 'apikey-2',
224
+ keyHash,
225
+ keyPrefix,
226
+ userId: 'user-2',
227
+ scopes: readScopes,
228
+ ipRestrictions: null,
229
+ expiresAt: null,
230
+ lastUsedAt: null,
231
+ revokedAt: null,
232
+ };
233
+ const { db } = createMockDB(record);
234
+ initDB(db);
235
+ const handler = handleActuateAPI({ prismaClient: db, config: { collections: {} } });
236
+ const res = await handler(apiRequest(readKey, '/email/settings'));
237
+ expect(res.status).toBe(403);
238
+ });
239
+ });
240
+ //# sourceMappingURL=email-settings-routes.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"email-settings-routes.test.js","sourceRoot":"","sources":["../../../src/__tests__/api/email-settings-routes.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=field-values-routes.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-values-routes.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/api/field-values-routes.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,147 @@
1
+ import { beforeEach, describe, expect, it } from 'vitest';
2
+ import { handleActuateAPI } from '../../api/index.js';
3
+ import { initDB } from '../../db.js';
4
+ import { generateApiKey } from '../../security/api-key-enhanced.js';
5
+ /**
6
+ * `GET /collections/:slug/field-values` — distinct in-use values for one
7
+ * field, powering tag autocomplete and category suggestions in the admin.
8
+ * Pins the vocabulary-merging contract: `AI` / `ai` / `Ai` count as ONE value
9
+ * (first-seen casing wins), so editor suggestions never splinter a taxonomy.
10
+ */
11
+ const VALID_SECRET = 'a'.repeat(48);
12
+ const POSTS_COLLECTION = {
13
+ slug: 'posts',
14
+ labels: { singular: 'Post', plural: 'Posts' },
15
+ fields: {
16
+ title: { type: 'text', label: 'Title' },
17
+ category: { type: 'text', label: 'Category', maxLength: 80 },
18
+ body: { type: 'richText', label: 'Body' },
19
+ tags: {
20
+ type: 'array',
21
+ label: 'Tags',
22
+ maxRows: 12,
23
+ fields: { tag: { type: 'text', label: 'Tag', required: true, maxLength: 40 } },
24
+ },
25
+ },
26
+ };
27
+ function createMockDB(opts) {
28
+ return {
29
+ apiKey: {
30
+ findMany: async () => (opts.apiKey ? [opts.apiKey] : []),
31
+ findUnique: async ({ where }) => opts.apiKey && opts.apiKey.keyHash === where.keyHash ? opts.apiKey : null,
32
+ update: async () => opts.apiKey,
33
+ },
34
+ document: {
35
+ findMany: async () => opts.docs ?? [],
36
+ findFirst: async () => null,
37
+ count: async () => 0,
38
+ },
39
+ user: {},
40
+ session: {},
41
+ media: {},
42
+ };
43
+ }
44
+ async function makeKey(scopes) {
45
+ const { key, keyHash, keyPrefix } = await generateApiKey({ prefix: 'act_sk', scopes });
46
+ return {
47
+ key,
48
+ record: {
49
+ id: 'apikey-1',
50
+ keyHash,
51
+ keyPrefix,
52
+ userId: 'user-1',
53
+ scopes,
54
+ ipRestrictions: null,
55
+ expiresAt: null,
56
+ lastUsedAt: null,
57
+ revokedAt: null,
58
+ },
59
+ };
60
+ }
61
+ function makeHandler(db) {
62
+ return handleActuateAPI({
63
+ prismaClient: db,
64
+ config: { collections: { posts: POSTS_COLLECTION } },
65
+ });
66
+ }
67
+ async function request(handler, path, key) {
68
+ return handler(new Request(`https://example.com/api/cms${path}`, {
69
+ headers: { Authorization: `Bearer ${key}` },
70
+ }));
71
+ }
72
+ describe('GET /collections/:slug/field-values', () => {
73
+ beforeEach(() => {
74
+ delete globalThis.__actuateConfig;
75
+ process.env.CMS_SECRET = VALID_SECRET;
76
+ });
77
+ it('aggregates array tags case-insensitively across row and string shapes', async () => {
78
+ const { key, record } = await makeKey({ collections: ['posts'], actions: ['read'] });
79
+ const db = createMockDB({
80
+ apiKey: record,
81
+ docs: [
82
+ { data: { tags: [{ tag: 'AI' }, { tag: 'CMS' }] } },
83
+ // Older sites store plain strings; casing drift must merge into one value.
84
+ { data: { tags: ['ai', 'Nextjs'] } },
85
+ { data: { tags: [{ tag: 'AI' }] } },
86
+ { data: { tags: 'not-an-array' } },
87
+ { data: null },
88
+ ],
89
+ });
90
+ initDB(db);
91
+ const response = await request(makeHandler(db), '/collections/posts/field-values?field=tags', key);
92
+ expect(response.status).toBe(200);
93
+ const { data } = (await response.json());
94
+ expect(data.field).toBe('tags');
95
+ // 'AI' + 'ai' + 'AI' merge into one entry (3 uses), most-used first.
96
+ expect(data.values[0]).toEqual({ value: 'AI', count: 3 });
97
+ expect(data.values.map((v) => v.value)).toEqual(['AI', 'CMS', 'Nextjs']);
98
+ });
99
+ it('filters by ?q= substring, case-insensitively', async () => {
100
+ const { key, record } = await makeKey({ collections: ['posts'], actions: ['read'] });
101
+ const db = createMockDB({
102
+ apiKey: record,
103
+ docs: [{ data: { tags: [{ tag: 'Design' }, { tag: 'DevOps' }, { tag: 'Marketing' }] } }],
104
+ });
105
+ initDB(db);
106
+ const response = await request(makeHandler(db), '/collections/posts/field-values?field=tags&q=de', key);
107
+ const { data } = (await response.json());
108
+ expect(data.values.map((v) => v.value).sort()).toEqual(['Design', 'DevOps']);
109
+ });
110
+ it('aggregates plain text fields like category', async () => {
111
+ const { key, record } = await makeKey({ collections: ['posts'], actions: ['read'] });
112
+ const db = createMockDB({
113
+ apiKey: record,
114
+ docs: [
115
+ { data: { category: 'News' } },
116
+ { data: { category: 'news' } },
117
+ { data: { category: 'Tutorials' } },
118
+ { data: { category: '' } },
119
+ ],
120
+ });
121
+ initDB(db);
122
+ const response = await request(makeHandler(db), '/collections/posts/field-values?field=category', key);
123
+ const { data } = (await response.json());
124
+ expect(data.values).toEqual([
125
+ { value: 'News', count: 2 },
126
+ { value: 'Tutorials', count: 1 },
127
+ ]);
128
+ });
129
+ it('rejects undeclared or non-suggestible fields with 400', async () => {
130
+ const { key, record } = await makeKey({ collections: ['posts'], actions: ['read'] });
131
+ const db = createMockDB({ apiKey: record, docs: [] });
132
+ initDB(db);
133
+ const handler = makeHandler(db);
134
+ for (const field of ['body', 'nope', '']) {
135
+ const response = await request(handler, `/collections/posts/field-values?field=${field}`, key);
136
+ expect(response.status).toBe(400);
137
+ }
138
+ });
139
+ it('enforces collection read scope (403 for keys scoped elsewhere)', async () => {
140
+ const { key, record } = await makeKey({ collections: ['pages'], actions: ['read'] });
141
+ const db = createMockDB({ apiKey: record, docs: [] });
142
+ initDB(db);
143
+ const response = await request(makeHandler(db), '/collections/posts/field-values?field=tags', key);
144
+ expect(response.status).toBe(403);
145
+ });
146
+ });
147
+ //# sourceMappingURL=field-values-routes.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field-values-routes.test.js","sourceRoot":"","sources":["../../../src/__tests__/api/field-values-routes.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAEzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AACpC,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AAGnE;;;;;GAKG;AACH,MAAM,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;AAEnC,MAAM,gBAAgB,GAAG;IACvB,IAAI,EAAE,OAAO;IACb,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;IAC7C,MAAM,EAAE;QACN,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE;QACvC,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,EAAE;QAC5D,IAAI,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE;QACzC,IAAI,EAAE;YACJ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,MAAM;YACb,OAAO,EAAE,EAAE;YACX,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE;SAC/E;KACF;CACF,CAAA;AAED,SAAS,YAAY,CAAC,IAAuD;IAC3E,OAAO;QACL,MAAM,EAAE;YACN,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACxD,UAAU,EAAE,KAAK,EAAE,EAAE,KAAK,EAAkC,EAAE,EAAE,CAC9D,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;YAC3E,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,MAAM;SAChC;QACD,QAAQ,EAAE;YACR,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI,CAAC,IAAI,IAAI,EAAE;YACrC,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;YAC3B,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;SACrB;QACD,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,EAAE;QACX,KAAK,EAAE,EAAE;KACH,CAAA;AACV,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,MAAmB;IACxC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,cAAc,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAA;IACtF,OAAO;QACL,GAAG;QACH,MAAM,EAAE;YACN,EAAE,EAAE,UAAU;YACd,OAAO;YACP,SAAS;YACT,MAAM,EAAE,QAAQ;YAChB,MAAM;YACN,cAAc,EAAE,IAAI;YACpB,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI;SAChB;KACF,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAW;IAC9B,OAAO,gBAAgB,CAAC;QACtB,YAAY,EAAE,EAAW;QACzB,MAAM,EAAE,EAAE,WAAW,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAW;KAC9D,CAAC,CAAA;AACJ,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,OAA0C,EAAE,IAAY,EAAE,GAAW;IAC1F,OAAO,OAAO,CACZ,IAAI,OAAO,CAAC,8BAA8B,IAAI,EAAE,EAAE;QAChD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,GAAG,EAAE,EAAE;KAC5C,CAAC,CACH,CAAA;AACH,CAAC;AAED,QAAQ,CAAC,qCAAqC,EAAE,GAAG,EAAE;IACnD,UAAU,CAAC,GAAG,EAAE;QACd,OAAQ,UAAkB,CAAC,eAAe,CAAA;QAC1C,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,YAAY,CAAA;IACvC,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACpF,MAAM,EAAE,GAAG,YAAY,CAAC;YACtB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBACnD,2EAA2E;gBAC3E,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,EAAE,EAAE;gBACpC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;gBACnC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE;gBAClC,EAAE,IAAI,EAAE,IAAI,EAAE;aACf;SACF,CAAC,CAAA;QACF,MAAM,CAAC,EAAE,CAAC,CAAA;QAEV,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,WAAW,CAAC,EAAE,CAAC,EACf,4CAA4C,EAC5C,GAAG,CACJ,CAAA;QACD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACjC,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAEtC,CAAA;QACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC/B,qEAAqE;QACrE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAA;QACzD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACpF,MAAM,EAAE,GAAG,YAAY,CAAC;YACtB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE,CAAC;SACzF,CAAC,CAAA;QACF,MAAM,CAAC,EAAE,CAAC,CAAA;QAEV,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,WAAW,CAAC,EAAE,CAAC,EACf,iDAAiD,EACjD,GAAG,CACJ,CAAA;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAmD,CAAA;QAC1F,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;IAC9E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACpF,MAAM,EAAE,GAAG,YAAY,CAAC;YACtB,MAAM,EAAE,MAAM;YACd,IAAI,EAAE;gBACJ,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;gBAC9B,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE;gBAC9B,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE;gBACnC,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE;aAC3B;SACF,CAAC,CAAA;QACF,MAAM,CAAC,EAAE,CAAC,CAAA;QAEV,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,WAAW,CAAC,EAAE,CAAC,EACf,gDAAgD,EAChD,GAAG,CACJ,CAAA;QACD,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAEtC,CAAA;QACD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YAC1B,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE;YAC3B,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE;SACjC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,uDAAuD,EAAE,KAAK,IAAI,EAAE;QACrE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACpF,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;QACrD,MAAM,CAAC,EAAE,CAAC,CAAA;QACV,MAAM,OAAO,GAAG,WAAW,CAAC,EAAE,CAAC,CAAA;QAE/B,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC;YACzC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,yCAAyC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAA;YAC9F,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACnC,CAAC;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gEAAgE,EAAE,KAAK,IAAI,EAAE;QAC9E,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,WAAW,EAAE,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACpF,MAAM,EAAE,GAAG,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,CAAA;QACrD,MAAM,CAAC,EAAE,CAAC,CAAA;QAEV,MAAM,QAAQ,GAAG,MAAM,OAAO,CAC5B,WAAW,CAAC,EAAE,CAAC,EACf,4CAA4C,EAC5C,GAAG,CACJ,CAAA;QACD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -120,6 +120,8 @@ const ROUTE_CONTRACT = [
120
120
  ['GET /auth/oauth/:provider', 400],
121
121
  ['GET /auth/oauth/:provider/callback', 400],
122
122
  ['GET /collections/:slug', 401],
123
+ // Registered before `:id` so the literal `field-values` segment wins.
124
+ ['GET /collections/:slug/field-values', 401],
123
125
  ['GET /collections/:slug/:id', 401],
124
126
  ['POST /collections/:slug', 401],
125
127
  ['PUT /collections/:slug/:id', 401],
@@ -329,6 +331,9 @@ const ROUTE_CONTRACT = [
329
331
  ['POST /security/sessions/revoke-all', 401],
330
332
  ['GET /globals/:slug', 401],
331
333
  ['PUT /globals/:slug', 401],
334
+ ['GET /email/settings', 401],
335
+ ['PUT /email/settings', 401],
336
+ ['POST /email/settings/test', 401],
332
337
  ['GET /webhooks', 401],
333
338
  ['POST /webhooks', 401],
334
339
  ['PUT /webhooks/:id', 401],
@@ -1 +1 @@
1
- {"version":3,"file":"route-contracts.test.js","sourceRoot":"","sources":["../../../src/__tests__/api/route-contracts.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAA;AAEpC,yEAAyE;AAEzE;;;;GAIG;AACH,SAAS,gBAAgB;IACvB,MAAM,QAAQ,GAAG;QACf,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;QAC5B,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,IAAI;QAC3B,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;QACxB,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QACpB,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,KAAK,IAAI,EAAE,CAAC,EAAE;QACvB,MAAM,EAAE,KAAK,EAAE,CAAqB,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAI,CAAC,EAAE,IAAe,EAAE,CAAC;QAC9E,MAAM,EAAE,KAAK,EAAE,CAAqB,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAI,CAAC,EAAE,IAAe,EAAE,CAAC;QAC9E,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACtC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;QACjC,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;QACjC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;KACvC,CAAA;IACD,MAAM,IAAI,GAAG;QACX,SAAS,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QAClC,WAAW,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC1B,YAAY,EAAE,KAAK,EAAE,EAAW,EAAE,EAAE,CAClC,OAAO,EAAE,KAAK,UAAU;YACtB,CAAC,CAAE,EAA+B,CAAC,gBAAgB,EAAE,CAAC;YACtD,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAwB,CAAC;KAC5C,CAAA;IACD,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;QACrB,GAAG,CAAC,MAAM,EAAE,IAAI;YACd,IAAI,IAAI,IAAI,MAAM;gBAAE,OAAQ,MAA2C,CAAC,IAAI,CAAC,CAAA;YAC7E,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,MAAM;gBAAE,OAAO,QAAQ,CAAA;YACzF,OAAO,SAAS,CAAA;QAClB,CAAC;KACF,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,MAAM,GAAG,eAAe,EAAE,CAAA;AAEhC,SAAS,CAAC,GAAG,EAAE;IACb,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,wCAAwC,CAAA;IACjE,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,gCAAgC,CAAA;IAC1D,gBAAgB,CAAC;QACf,WAAW,EAAE;YACX;gBACE,IAAI,EAAE,OAAO;gBACb,MAAM,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE;gBAC7C,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;aAC1C;SACF;KACO,CAAC,CAAA;IACX,MAAM,CAAC,gBAAgB,EAAE,CAAC,CAAA;IAC1B,iBAAiB,CAAC,MAAM,CAAC,CAAA;AAC3B,CAAC,CAAC,CAAA;AAEF,4EAA4E;AAC5E,KAAK,UAAU,gBAAgB,CAAC,MAAc,EAAE,OAAe;IAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;IACvD,MAAM,IAAI,GACR,MAAM,KAAK,KAAK,IAAI,MAAM,KAAK,SAAS;QACtC,CAAC,CAAC,EAAE,MAAM,EAAE;QACZ,CAAC,CAAC;YACE,MAAM;YACN,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;SACzB,CAAA;IACP,0EAA0E;IAC1E,qEAAqE;IACrE,8DAA8D;IAC9D,OAAO,OAAO,CAAC,IAAI,CAAC;QAClB,MAAM,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,sBAAsB,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QAC9D,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,MAAM,IAAI,OAAO,4BAA4B,CAAC,CAAC,EAAE,IAAI,CAAC,CAC5F;KACF,CAAC,CAAA;AACJ,CAAC;AAED,yEAAyE;AAEzE,MAAM,cAAc,GAAkE;IACpF,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACvB,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAC1B,CAAC,kBAAkB,EAAE,GAAG,CAAC;IACzB,CAAC,WAAW,EAAE,GAAG,CAAC;IAClB,CAAC,kBAAkB,EAAE,GAAG,CAAC;IACzB,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACvB,CAAC,iBAAiB,EAAE,GAAG,CAAC;IACxB,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAC1B,CAAC,4BAA4B,EAAE,GAAG,CAAC;IACnC,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,cAAc,EAAE,GAAG,CAAC;IACrB,CAAC,uBAAuB,EAAE,GAAG,CAAC;IAC9B,CAAC,wBAAwB,EAAE,GAAG,CAAC;IAC/B,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,uBAAuB,EAAE,GAAG,CAAC;IAC9B,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,oCAAoC,EAAE,GAAG,CAAC;IAC3C,CAAC,wBAAwB,EAAE,GAAG,CAAC;IAC/B,CAAC,4BAA4B,EAAE,GAAG,CAAC;IACnC,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,4BAA4B,EAAE,GAAG,CAAC;IACnC,CAAC,+BAA+B,EAAE,GAAG,CAAC;IACtC,CAAC,0BAA0B,EAAE,GAAG,CAAC;IACjC,CAAC,8BAA8B,EAAE,GAAG,CAAC;IACrC,CAAC,oCAAoC,EAAE,GAAG,CAAC;IAC3C,CAAC,qCAAqC,EAAE,GAAG,CAAC;IAC5C,CAAC,6CAA6C,EAAE,GAAG,CAAC;IACpD,CAAC,iDAAiD,EAAE,GAAG,CAAC;IACxD,CAAC,kDAAkD,EAAE,GAAG,CAAC;IACzD,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,YAAY,EAAE,GAAG,CAAC;IACnB,CAAC,YAAY,EAAE,GAAG,CAAC;IACnB,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC3B,CAAC,0BAA0B,EAAE,GAAG,CAAC;IACjC,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACvB,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAC1B,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC3B,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAC1B,CAAC,0BAA0B,EAAE,GAAG,CAAC;IACjC,CAAC,aAAa,EAAE,GAAG,CAAC;IACpB,CAAC,YAAY,EAAE,GAAG,CAAC;IACnB,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC3B,CAAC,eAAe,EAAE,GAAG,CAAC;IACtB,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACvB,CAAC,sBAAsB,EAAE,GAAG,CAAC;IAC7B,CAAC,YAAY,EAAE,GAAG,CAAC;IACnB,CAAC,kBAAkB,EAAE,GAAG,CAAC;IACzB,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAC1B,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC3B,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAC1B,CAAC,uBAAuB,EAAE,GAAG,CAAC;IAC9B,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACvB,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,uCAAuC,EAAE,GAAG,CAAC;IAC9C,CAAC,qCAAqC,EAAE,GAAG,CAAC;IAC5C,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,4BAA4B,EAAE,GAAG,CAAC;IACnC,CAAC,gCAAgC,EAAE,GAAG,CAAC;IACvC,CAAC,sCAAsC,EAAE,GAAG,CAAC;IAC7C,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,6BAA6B,EAAE,GAAG,CAAC;IACpC,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,4BAA4B,EAAE,GAAG,CAAC;IACnC,CAAC,sBAAsB,EAAE,GAAG,CAAC;IAC7B,CAAC,wBAAwB,EAAE,GAAG,CAAC;IAC/B,CAAC,kCAAkC,EAAE,GAAG,CAAC;IACzC,CAAC,cAAc,EAAE,GAAG,CAAC;IACrB,CAAC,0BAA0B,EAAE,GAAG,CAAC;IACjC,CAAC,0BAA0B,EAAE,GAAG,CAAC;IACjC,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC3B,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC3B,CAAC,iCAAiC,EAAE,GAAG,CAAC;IACxC,CAAC,YAAY,EAAE,GAAG,CAAC;IACnB,CAAC,4BAA4B,EAAE,GAAG,CAAC;IACnC,CAAC,6BAA6B,EAAE,GAAG,CAAC;IACpC,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,oCAAoC,EAAE,GAAG,CAAC;IAC3C,CAAC,iCAAiC,EAAE,GAAG,CAAC;IACxC,CAAC,wBAAwB,EAAE,GAAG,CAAC;IAC/B,CAAC,kBAAkB,EAAE,GAAG,CAAC;IACzB,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,6BAA6B,EAAE,GAAG,CAAC;IACpC,CAAC,+BAA+B,EAAE,GAAG,CAAC;IACtC,CAAC,gCAAgC,EAAE,GAAG,CAAC;IACvC,CAAC,0BAA0B,EAAE,GAAG,CAAC;IACjC,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC3B,CAAC,aAAa,EAAE,GAAG,CAAC;IACpB,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACvB,CAAC,kBAAkB,EAAE,GAAG,CAAC;IACzB,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAC1B,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,uBAAuB,EAAE,GAAG,CAAC;IAC9B,CAAC,uBAAuB,EAAE,GAAG,CAAC;IAC9B,CAAC,8BAA8B,EAAE,GAAG,CAAC;IACrC,CAAC,8BAA8B,EAAE,GAAG,CAAC;IACrC,CAAC,uBAAuB,EAAE,GAAG,CAAC;IAC9B,CAAC,sBAAsB,EAAE,GAAG,CAAC;IAC7B,CAAC,sBAAsB,EAAE,GAAG,CAAC;IAC7B,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,0BAA0B,EAAE,GAAG,CAAC;IACjC,CAAC,sCAAsC,EAAE,GAAG,CAAC;IAC7C,CAAC,uCAAuC,EAAE,GAAG,CAAC;IAC9C,CAAC,0CAA0C,EAAE,GAAG,CAAC;IACjD,CAAC,oCAAoC,EAAE,GAAG,CAAC;IAC3C,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACvB,CAAC,iBAAiB,EAAE,GAAG,CAAC;IACxB,CAAC,uBAAuB,EAAE,GAAG,CAAC;IAC9B,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC3B,CAAC,6BAA6B,EAAE,GAAG,CAAC;IACpC,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,6BAA6B,EAAE,GAAG,CAAC;IACpC,CAAC,gCAAgC,EAAE,GAAG,CAAC;IACvC,CAAC,6BAA6B,EAAE,GAAG,CAAC;IACpC,CAAC,4CAA4C,EAAE,GAAG,CAAC;IACnD,CAAC,6CAA6C,EAAE,GAAG,CAAC;IACpD,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,4BAA4B,EAAE,GAAG,CAAC;IACnC,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,wBAAwB,EAAE,GAAG,CAAC;IAC/B,CAAC,wBAAwB,EAAE,GAAG,CAAC;IAC/B,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,wBAAwB,EAAE,GAAG,CAAC;IAC/B,CAAC,uBAAuB,EAAE,GAAG,CAAC;IAC9B,CAAC,4BAA4B,EAAE,GAAG,CAAC;IACnC,CAAC,4BAA4B,EAAE,GAAG,CAAC;IACnC,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACvB,CAAC,sBAAsB,EAAE,GAAG,CAAC;IAC7B,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACvB,CAAC,iBAAiB,EAAE,GAAG,CAAC;IACxB,CAAC,iBAAiB,EAAE,GAAG,CAAC;IACxB,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,iBAAiB,EAAE,GAAG,CAAC;IACxB,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,8BAA8B,EAAE,GAAG,CAAC;IACrC,CAAC,6BAA6B,EAAE,GAAG,CAAC;IACpC,CAAC,6BAA6B,EAAE,GAAG,CAAC;IACpC,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAC1B,CAAC,6BAA6B,EAAE,GAAG,CAAC;IACpC,CAAC,kBAAkB,EAAE,GAAG,CAAC;IACzB,CAAC,wCAAwC,EAAE,GAAG,CAAC;IAC/C,CAAC,wCAAwC,EAAE,GAAG,CAAC;IAC/C,CAAC,+BAA+B,EAAE,GAAG,CAAC;IACtC,CAAC,kCAAkC,EAAE,GAAG,CAAC;IACzC,CAAC,qCAAqC,EAAE,GAAG,CAAC;IAC5C,CAAC,eAAe,EAAE,GAAG,CAAC;IACtB,CAAC,kBAAkB,EAAE,GAAG,CAAC;IACzB,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,iBAAiB,EAAE,GAAG,CAAC;IACxB,CAAC,aAAa,EAAE,GAAG,CAAC;IACpB,CAAC,6BAA6B,EAAE,GAAG,CAAC;IACpC,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,kBAAkB,EAAE,GAAG,CAAC;IACzB,CAAC,iBAAiB,EAAE,GAAG,CAAC;IACxB,CAAC,iBAAiB,EAAE,GAAG,CAAC;IACxB,CAAC,uBAAuB,EAAE,GAAG,CAAC;IAC9B,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,8BAA8B,EAAE,GAAG,CAAC;IACrC,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,iBAAiB,EAAE,GAAG,CAAC;IACxB,CAAC,iBAAiB,EAAE,GAAG,CAAC;IACxB,CAAC,cAAc,EAAE,GAAG,CAAC;IACrB,CAAC,cAAc,EAAE,GAAG,CAAC;IACrB,CAAC,eAAe,EAAE,GAAG,CAAC;IACtB,CAAC,kBAAkB,EAAE,GAAG,CAAC;IACzB,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,uBAAuB,EAAE,GAAG,CAAC;IAC9B,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,8BAA8B,EAAE,GAAG,CAAC;IACrC,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,sCAAsC,EAAE,GAAG,CAAC;IAC7C,CAAC,qCAAqC,EAAE,GAAG,CAAC;IAC5C,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,4BAA4B,EAAE,GAAG,CAAC;IACnC,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,sBAAsB,EAAE,GAAG,CAAC;IAC7B,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC3B,CAAC,iCAAiC,EAAE,GAAG,CAAC;IACxC,CAAC,8BAA8B,EAAE,GAAG,CAAC;IACrC,CAAC,8BAA8B,EAAE,GAAG,CAAC;IACrC,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,sCAAsC,EAAE,GAAG,CAAC;IAC7C,CAAC,qCAAqC,EAAE,GAAG,CAAC;IAC5C,CAAC,qCAAqC,EAAE,GAAG,CAAC;IAC5C,CAAC,yDAAyD,EAAE,GAAG,CAAC;IAChE,CAAC,sCAAsC,EAAE,GAAG,CAAC;IAC7C,CAAC,wCAAwC,EAAE,GAAG,CAAC;IAC/C,CAAC,sBAAsB,EAAE,GAAG,CAAC;IAC7B,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAC1B,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC3B,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAC1B,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC3B,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC3B,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,0BAA0B,EAAE,GAAG,CAAC;IACjC,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,0BAA0B,EAAE,GAAG,CAAC;IACjC,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,+BAA+B,EAAE,GAAG,CAAC;IACtC,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAC1B,CAAC,iBAAiB,EAAE,GAAG,CAAC;IACxB,CAAC,eAAe,EAAE,GAAG,CAAC;IACtB,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACvB,CAAC,kBAAkB,EAAE,GAAG,CAAC;IACzB,CAAC,kBAAkB,EAAE,GAAG,CAAC;IACzB,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC3B,CAAC,uBAAuB,EAAE,GAAG,CAAC;IAC9B,CAAC,0BAA0B,EAAE,GAAG,CAAC;IACjC,CAAC,6BAA6B,EAAE,GAAG,CAAC;IACpC,CAAC,oCAAoC,EAAE,GAAG,CAAC;IAC3C,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACvB,CAAC,uBAAuB,EAAE,GAAG,CAAC;IAC9B,CAAC,eAAe,EAAE,GAAG,CAAC;IACtB,CAAC,oCAAoC,EAAE,GAAG,CAAC;IAC3C,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC3B,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC3B,CAAC,eAAe,EAAE,GAAG,CAAC;IACtB,CAAC,gBAAgB,EAAE,GAAG,CAAC;IACvB,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAC1B,CAAC,sBAAsB,EAAE,GAAG,CAAC;IAC7B,CAAC,8BAA8B,EAAE,GAAG,CAAC;IACrC,CAAC,sBAAsB,EAAE,GAAG,CAAC;IAC7B,CAAC,0BAA0B,EAAE,GAAG,CAAC;IACjC,CAAC,kBAAkB,EAAE,GAAG,CAAC;IACzB,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAC1B,CAAC,sBAAsB,EAAE,GAAG,CAAC;IAC7B,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,sCAAsC,EAAE,GAAG,CAAC;IAC7C,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,sBAAsB,EAAE,GAAG,CAAC;IAC7B,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,4BAA4B,EAAE,GAAG,CAAC;IACnC,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,qBAAqB,EAAE,GAAG,CAAC;IAC5B,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,sBAAsB,EAAE,GAAG,CAAC;IAC7B,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,4BAA4B,EAAE,GAAG,CAAC;IACnC,CAAC,6BAA6B,EAAE,GAAG,CAAC;IACpC,CAAC,mCAAmC,EAAE,GAAG,CAAC;IAC1C,CAAC,2BAA2B,EAAE,GAAG,CAAC;IAClC,CAAC,mCAAmC,EAAE,GAAG,CAAC;IAC1C,CAAC,+BAA+B,EAAE,GAAG,CAAC;IACtC,CAAC,6BAA6B,EAAE,GAAG,CAAC;IACpC,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,mBAAmB,EAAE,GAAG,CAAC;IAC1B,CAAC,iCAAiC,EAAE,GAAG,CAAC;IACxC,CAAC,yBAAyB,EAAE,GAAG,CAAC;IAChC,CAAC,6BAA6B,EAAE,GAAG,CAAC;IACpC,CAAC,4BAA4B,EAAE,GAAG,CAAC;IACnC,CAAC,8BAA8B,EAAE,GAAG,CAAC;IACrC,CAAC,wBAAwB,EAAE,GAAG,CAAC;CAChC,CAAA;AAED;;;;GAIG;AACH,MAAM,iBAAiB,GAAyD;IAC9E,CAAC,gBAAgB,EAAE,yDAAyD,CAAC;IAC7E,CAAC,mBAAmB,EAAE,mDAAmD,CAAC;IAC1E,CAAC,kBAAkB,EAAE,uDAAuD,CAAC;IAC7E,CAAC,WAAW,EAAE,sBAAsB,CAAC;IACrC,CAAC,qBAAqB,EAAE,8CAA8C,CAAC;IACvE,CAAC,mBAAmB,EAAE,oDAAoD,CAAC;IAC3E,CAAC,aAAa,EAAE,kCAAkC,CAAC;IACnD,CAAC,6BAA6B,EAAE,6CAA6C,CAAC;IAC9E,CAAC,oCAAoC,EAAE,6CAA6C,CAAC;IACrF,CAAC,wBAAwB,EAAE,uDAAuD,CAAC;IACnF,CAAC,uBAAuB,EAAE,oDAAoD,CAAC;IAC/E,CAAC,4BAA4B,EAAE,2CAA2C,CAAC;IAC3E,CAAC,4BAA4B,EAAE,wCAAwC,CAAC;IACxE,CAAC,eAAe,EAAE,qBAAqB,CAAC;IACxC,CAAC,kBAAkB,EAAE,qBAAqB,CAAC;IAC3C,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;IAC1C,CAAC,aAAa,EAAE,yBAAyB,CAAC;IAC1C,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;IAClE,CAAC,0BAA0B,EAAE,0CAA0C,CAAC;CACzE,CAAA;AAED,yEAAyE;AAEzE,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;QAChE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,4CAA4C,EAAE,GAAG,EAAE;QACpD,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;QACrD,MAAM,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;IAClD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,qEAAqE,EAAE,GAAG,EAAE;QAC7E,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAA;QACnE,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,GAAG,IAAI,MAAM,GAAG,GAAG,CAAC;aACtF,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC;aACvB,IAAI,EAAE,CAAA;QACT,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CACnE,mBAAmB,EACnB,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;QAC1B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAqB,CAAA;QAC9D,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACnD,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAE/B,yEAAyE;QACzE,MAAM,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,KAAK,0BAA0B,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;QAExE,yEAAyE;QACzE,MAAM,WAAW,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;QACzD,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAClE,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA4B,CAAA;YAC1D,MAAM,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,iCAAiC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACrF,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"route-contracts.test.js","sourceRoot":"","sources":["../../../src/__tests__/api/route-contracts.test.ts"],"names":[],"mappings":"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"}
@@ -112,6 +112,30 @@ describe('collection presets', () => {
112
112
  expect(c.seo?.sitemapPriority).toBe(0.9);
113
113
  expect(c.seo?.archivePath).toBe('/blog');
114
114
  });
115
+ it('categoryOptions upgrades free-text category to a structured select', () => {
116
+ const c = blogPostCollection({
117
+ categoryOptions: ['News', { label: 'How-to guides', value: 'tutorials' }],
118
+ });
119
+ const category = c.fields.category;
120
+ expect(category.type).toBe('select');
121
+ // Plain strings are slugified into values; explicit pairs pass through.
122
+ expect(category.options).toEqual([
123
+ { label: 'News', value: 'news' },
124
+ { label: 'How-to guides', value: 'tutorials' },
125
+ ]);
126
+ });
127
+ it('explicit fields.category override still wins over categoryOptions', () => {
128
+ const c = blogPostCollection({
129
+ categoryOptions: ['News'],
130
+ fields: { category: { type: 'text', label: 'Custom category' } },
131
+ });
132
+ expect(c.fields.category.type).toBe('text');
133
+ expect(c.fields.category?.label).toBe('Custom category');
134
+ });
135
+ it('without categoryOptions, category stays free text (back-compat)', () => {
136
+ const c = blogPostCollection();
137
+ expect(c.fields.category.type).toBe('text');
138
+ });
115
139
  });
116
140
  describe('getTemplatesForCollection', () => {
117
141
  it('maps known content collections to their primary template', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"presets.test.js","sourceRoot":"","sources":["../../../src/__tests__/collections/presets.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"presets.test.js","sourceRoot":"","sources":["../../../src/__tests__/collections/presets.test.ts"],"names":[],"mappings":"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"}