@forge-cms/runtime 0.4.0 → 0.6.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 (73) hide show
  1. package/dist/auth-managed.d.ts +19 -0
  2. package/dist/auth-managed.d.ts.map +1 -0
  3. package/dist/auth-managed.js +24 -0
  4. package/dist/auth-managed.js.map +1 -0
  5. package/dist/concurrency.d.ts +8 -0
  6. package/dist/concurrency.d.ts.map +1 -0
  7. package/dist/concurrency.js +15 -0
  8. package/dist/concurrency.js.map +1 -0
  9. package/dist/context.d.ts +5 -0
  10. package/dist/context.d.ts.map +1 -1
  11. package/dist/errors.d.ts +29 -1
  12. package/dist/errors.d.ts.map +1 -1
  13. package/dist/errors.js +38 -0
  14. package/dist/errors.js.map +1 -1
  15. package/dist/files.d.ts +15 -1
  16. package/dist/files.d.ts.map +1 -1
  17. package/dist/files.js +55 -14
  18. package/dist/files.js.map +1 -1
  19. package/dist/globals.d.ts +21 -3
  20. package/dist/globals.d.ts.map +1 -1
  21. package/dist/globals.js +240 -31
  22. package/dist/globals.js.map +1 -1
  23. package/dist/handlers.d.ts +16 -9
  24. package/dist/handlers.d.ts.map +1 -1
  25. package/dist/handlers.js +63 -99
  26. package/dist/handlers.js.map +1 -1
  27. package/dist/index.d.ts +6 -4
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +8 -4
  30. package/dist/index.js.map +1 -1
  31. package/dist/localization.d.ts +17 -0
  32. package/dist/localization.d.ts.map +1 -1
  33. package/dist/localization.js +56 -0
  34. package/dist/localization.js.map +1 -1
  35. package/dist/operations.d.ts +89 -0
  36. package/dist/operations.d.ts.map +1 -1
  37. package/dist/operations.js +824 -116
  38. package/dist/operations.js.map +1 -1
  39. package/dist/populate.d.ts +23 -3
  40. package/dist/populate.d.ts.map +1 -1
  41. package/dist/populate.js +40 -8
  42. package/dist/populate.js.map +1 -1
  43. package/dist/read-policy.d.ts +35 -0
  44. package/dist/read-policy.d.ts.map +1 -0
  45. package/dist/read-policy.js +59 -0
  46. package/dist/read-policy.js.map +1 -0
  47. package/dist/relation-integrity.d.ts +90 -11
  48. package/dist/relation-integrity.d.ts.map +1 -1
  49. package/dist/relation-integrity.js +145 -60
  50. package/dist/relation-integrity.js.map +1 -1
  51. package/dist/relation-lifecycle.d.ts +95 -0
  52. package/dist/relation-lifecycle.d.ts.map +1 -0
  53. package/dist/relation-lifecycle.js +424 -0
  54. package/dist/relation-lifecycle.js.map +1 -0
  55. package/dist/runtime.d.ts +26 -2
  56. package/dist/runtime.d.ts.map +1 -1
  57. package/dist/runtime.js +120 -49
  58. package/dist/runtime.js.map +1 -1
  59. package/dist/storage-intents.d.ts +96 -0
  60. package/dist/storage-intents.d.ts.map +1 -0
  61. package/dist/storage-intents.js +217 -0
  62. package/dist/storage-intents.js.map +1 -0
  63. package/dist/system-fields.d.ts +27 -0
  64. package/dist/system-fields.d.ts.map +1 -0
  65. package/dist/system-fields.js +74 -0
  66. package/dist/system-fields.js.map +1 -0
  67. package/dist/typed-api.d.ts +2 -2
  68. package/dist/typed-api.d.ts.map +1 -1
  69. package/dist/versions.d.ts +76 -6
  70. package/dist/versions.d.ts.map +1 -1
  71. package/dist/versions.js +258 -44
  72. package/dist/versions.js.map +1 -1
  73. package/package.json +9 -7
package/dist/globals.js CHANGED
@@ -1,10 +1,55 @@
1
1
  import { validateCollection } from '@forge-cms/core';
2
- import { AccessDeniedError, ForgeError, InvalidInputError, NotFoundError, ValidationFailedError } from './errors.js';
3
- import { resolveAccess } from './access.js';
4
- import { applyFieldDefaults } from './defaults.js';
2
+ import { isAtomicWriteConditionError, isUniqueConstraintError as isDbUniqueConstraintError } from '@forge-cms/db';
3
+ import { AccessDeniedError, ConcurrentModificationError, ForgeError, InvalidInputError, NotFoundError, ValidationFailedError } from './errors.js';
4
+ import { documentMatches, resolveAccess } from './access.js';
5
+ import { afterStamp } from './concurrency.js';
6
+ import { applyAutoSlugs, applyFieldDefaults } from './defaults.js';
7
+ import { statusConstraint } from './read-policy.js';
8
+ import { populateRecord } from './populate.js';
5
9
  import { runAfterChangeHooks, runAfterOperationHooks, runAfterReadHooks, runBeforeChangeHooks, runBeforeOperationHooks, runBeforeValidateHooks, runFieldHooks } from './hooks.js';
6
10
  import { assertWritableFields, filterReadableFields, FieldAccessError } from './field-access.js';
11
+ import { screenHookOutput, screenUpdateInput } from './system-fields.js';
12
+ import { isLocalizedField, resolveLocalizedDocument, storeLocalizedDocument } from './localization.js';
13
+ import { collectWrittenTargets, targetAssertions, verifyTargetsExist } from './relation-lifecycle.js';
7
14
  const GLOBAL_ID = 'global';
15
+ /**
16
+ * The global options that exist on the shared collection types but can never apply to a singleton that
17
+ * is never created through `create` nor deleted (spec 066): delete hooks, and `create`/`delete` access
18
+ * rules. Refused at startup instead of being accepted and silently ignored. One message per problem.
19
+ * (Localized fields of globals are checked with collections', by `validateLocalizationSchema`.)
20
+ */
21
+ export function validateGlobalSchema(globals) {
22
+ const errors = [];
23
+ for (const global of globals) {
24
+ const label = `Global '${global.slug}'`;
25
+ for (const hook of ['beforeDelete', 'afterDelete']) {
26
+ if ((global.hooks?.[hook]?.length ?? 0) > 0) {
27
+ errors.push(`${label} declares ${hook} hooks, but a global is never deleted, so they could never run (spec 066). Remove them.`);
28
+ }
29
+ }
30
+ for (const rule of ['create', 'delete']) {
31
+ if (global.access?.[rule] !== undefined) {
32
+ errors.push(`${label} declares access.${rule}, but a global only has read and update: its first write is ` +
33
+ `an update and it is never deleted, so this rule could never apply (spec 066). Gate the ` +
34
+ `first write with access.update.`);
35
+ }
36
+ }
37
+ }
38
+ return errors;
39
+ }
40
+ /** The collection-shaped view of a global the shared pipeline stages (hooks, validation, locales) take. */
41
+ function proxyOf(global) {
42
+ return { ...global, upload: false };
43
+ }
44
+ function assertKnownLocale(global, locale) {
45
+ if (locale === undefined)
46
+ return;
47
+ if (!global.locales?.includes(locale)) {
48
+ throw new InvalidInputError(global.locales && global.locales.length > 0
49
+ ? `Unknown locale '${locale}' for global '${global.slug}'; expected one of ${global.locales.map((l) => `'${l}'`).join(', ')}`
50
+ : `Global '${global.slug}' is not localized; locale '${locale}' cannot be written`);
51
+ }
52
+ }
8
53
  function getGlobalOrThrow(ctx, slug) {
9
54
  const global = ctx.getGlobal(slug);
10
55
  if (!global)
@@ -42,17 +87,27 @@ async function prepareGlobalForRead(ctx, global, record, args) {
42
87
  return null;
43
88
  const user = args.user ?? null;
44
89
  const overrideAccess = args.overrideAccess !== false;
90
+ const collectionProxy = proxyOf(global);
45
91
  let doc = record;
92
+ if (args.depth === 1) {
93
+ doc = await populateRecord(doc, collectionProxy, ctx, {
94
+ user,
95
+ ...(args.overrideAccess !== undefined && { overrideAccess: args.overrideAccess })
96
+ });
97
+ }
46
98
  if (args.overrideAccess === false) {
47
- doc = await filterReadableFields(doc, { ...global, upload: false }, user);
99
+ doc = await filterReadableFields(doc, collectionProxy, user);
48
100
  }
49
- const withFieldHooks = await runFieldHooks({ ...global, upload: false }, 'afterRead', {
101
+ if (args.locale !== undefined) {
102
+ doc = resolveLocalizedDocument(doc, collectionProxy, args.locale);
103
+ }
104
+ const withFieldHooks = await runFieldHooks(collectionProxy, 'afterRead', {
50
105
  data: doc,
51
106
  operation: 'read',
52
107
  user,
53
108
  overrideAccess
54
109
  });
55
- return runAfterReadHooks({ ...global, upload: false }, { user, overrideAccess, doc: withFieldHooks });
110
+ return runAfterReadHooks(collectionProxy, { user, overrideAccess, doc: withFieldHooks });
56
111
  }
57
112
  /**
58
113
  * Reads the singleton global document. Returns `null` if the global has never been written.
@@ -62,8 +117,31 @@ export async function getGlobal(ctx, args) {
62
117
  const user = args.user ?? null;
63
118
  const overrideAccess = args.overrideAccess !== false;
64
119
  await runBeforeOperationHooks({ ...global, upload: false }, { operation: 'read', user, overrideAccess });
65
- await checkGlobalAccess(global, 'read', args);
120
+ const decision = await checkGlobalAccess(global, 'read', args);
66
121
  const record = await ctx.adapters.database.findById(`_global_${global.slug}`, GLOBAL_ID);
122
+ // Spec 066: a query-returning read rule is a row-level grant, as on a collection read. A global row
123
+ // it does not match reads as `null` — the same answer as "never configured", confirming nothing.
124
+ if (record && decision.where && !documentMatches(record, decision.where)) {
125
+ await runAfterOperationHooks(proxyOf(global), {
126
+ operation: 'read',
127
+ user,
128
+ overrideAccess,
129
+ result: null
130
+ });
131
+ return null;
132
+ }
133
+ // Draft visibility (spec 058 §8): a global was previously written but never gated its own
134
+ // `_status` on read, so an anonymous caller could read a global's unpublished draft content the
135
+ // exact same way an anonymous single-document read of a `drafts: true` collection cannot. Mirrors
136
+ // `findByID`'s "known id" reasoning — any authenticated caller sees a draft global, since there is
137
+ // no listing surface for globals to leak it through; anonymous is restricted to published. A hidden
138
+ // draft resolves to the same `null` as "never configured" rather than a distinct error, so neither
139
+ // shape confirms whether the global has ever been written.
140
+ const draftStatus = statusConstraint({ ...global, upload: false }, undefined, user, overrideAccess, 'all');
141
+ if (record && draftStatus && !documentMatches(record, draftStatus)) {
142
+ await runAfterOperationHooks({ ...global, upload: false }, { operation: 'read', user, overrideAccess, result: null });
143
+ return null;
144
+ }
67
145
  if (!record) {
68
146
  await runAfterOperationHooks({ ...global, upload: false }, { operation: 'read', user, overrideAccess, result: null });
69
147
  return null;
@@ -73,23 +151,39 @@ export async function getGlobal(ctx, args) {
73
151
  return doc;
74
152
  }
75
153
  /**
76
- * Creates or updates the singleton global document. Unlike collections, globals always have
77
- * exactly one document — the first write creates it, subsequent writes update it.
154
+ * Creates or updates the singleton global document. Unlike collections, globals always have exactly one
155
+ * document — the first write creates it, later writes update it.
156
+ *
157
+ * Later writes are **partial**, exactly like a collection `update()` (spec 066): omitted fields keep
158
+ * their stored values (defaults and the draft status apply to the first write only), validation runs on
159
+ * the merged document, and a `locale` write changes that locale of each `localized` field and keeps the
160
+ * others. A query-returning `access.update` rule must match the stored row, and cannot authorize the
161
+ * first write (there is no row to match). Two simultaneous first writes: one commits, the other gets
162
+ * `409 CONCURRENT_MODIFICATION` with nothing written.
78
163
  */
79
164
  export async function updateGlobal(ctx, args) {
80
165
  const global = getGlobalOrThrow(ctx, args.global);
81
166
  const user = args.user ?? null;
82
167
  const overrideAccess = args.overrideAccess !== false;
83
- const collectionProxy = { ...global, upload: false };
168
+ const collectionProxy = proxyOf(global);
169
+ assertKnownLocale(global, args.locale);
84
170
  await runBeforeOperationHooks(collectionProxy, { operation: 'update', user, overrideAccess });
85
171
  const existing = await ctx.adapters.database.findById(`_global_${global.slug}`, GLOBAL_ID);
86
- await checkGlobalAccess(global, 'update', {
172
+ const operation = existing ? 'update' : 'create';
173
+ const decision = await checkGlobalAccess(global, 'update', {
87
174
  ...args,
88
175
  ...(existing !== null && { doc: existing })
89
176
  });
177
+ if (decision.where && !(existing && documentMatches(existing, decision.where))) {
178
+ throw new AccessDeniedError();
179
+ }
180
+ // Spec 063: a global row's `id`/timestamps/`_storageKey` belong to Forge. Echoes of the stored row
181
+ // are dropped; before the first write there is nothing to echo, so any of them is refused.
182
+ const stored = existing ?? {};
183
+ const input = screenUpdateInput(args.data, stored);
90
184
  if (args.overrideAccess === false) {
91
185
  try {
92
- await assertWritableFields(args.data, collectionProxy, user, existing ? 'update' : 'create');
186
+ await assertWritableFields(input, collectionProxy, user, operation);
93
187
  }
94
188
  catch (err) {
95
189
  if (err instanceof FieldAccessError)
@@ -97,33 +191,61 @@ export async function updateGlobal(ctx, args) {
97
191
  throw err;
98
192
  }
99
193
  }
100
- const seeded = applyFieldDefaults(collectionProxy, args.data);
194
+ // A locale write merges into the stored per-locale maps, so it is derived from `existing` and must
195
+ // commit only while the row is still the one it was merged from (compare-and-set below).
196
+ const localized = storeLocalizedDocument(input, collectionProxy, args.locale, existing ?? undefined);
197
+ const mergesLocales = existing !== null &&
198
+ args.locale !== undefined &&
199
+ Object.keys(input).some((name) => {
200
+ const field = global.fields[name];
201
+ return field !== undefined && isLocalizedField(field);
202
+ });
203
+ const seeded = existing
204
+ ? applyAutoSlugs(collectionProxy, localized, existing)
205
+ : applyAutoSlugs(collectionProxy, applyFieldDefaults(collectionProxy, localized));
101
206
  let data = await runRejectableStage(async () => runBeforeValidateHooks(collectionProxy, {
102
- operation: existing ? 'update' : 'create',
207
+ operation,
103
208
  data: await runFieldHooks(collectionProxy, 'beforeValidate', {
104
209
  data: seeded,
105
- operation: existing ? 'update' : 'create',
210
+ ...(existing !== null && { previousData: existing }),
211
+ operation,
106
212
  user,
107
213
  overrideAccess
108
214
  }),
215
+ ...(existing !== null && { previousData: existing }),
109
216
  user,
110
217
  overrideAccess
111
218
  }), 'beforeValidate hook');
112
- if (global.drafts === true && data._status === undefined) {
219
+ data = screenHookOutput(data, stored, 'beforeValidate', `global '${global.slug}'`);
220
+ if (global.drafts === true && !existing && data._status === undefined) {
113
221
  data = { ...data, _status: 'draft' };
114
222
  }
115
223
  if (data._status !== undefined && data._status !== 'draft' && data._status !== 'published') {
116
224
  throw new InvalidInputError(`Invalid status '${String(data._status)}', expected 'draft' or 'published'`);
117
225
  }
118
- const validation = validateCollection(collectionProxy, data);
119
- if (!validation.valid)
120
- throw new ValidationFailedError(validation.errors);
226
+ if (existing) {
227
+ // As a collection update: validate the merged document, report only what the caller can act on.
228
+ const validation = validateCollection(collectionProxy, { ...existing, ...data });
229
+ if (!validation.valid) {
230
+ const relevant = validation.errors.filter((e) => {
231
+ const top = e.field.split('.')[0] ?? e.field;
232
+ return data[top] !== undefined || existing[top] === undefined;
233
+ });
234
+ if (relevant.length > 0)
235
+ throw new ValidationFailedError(relevant);
236
+ }
237
+ }
238
+ else {
239
+ const validation = validateCollection(collectionProxy, data);
240
+ if (!validation.valid)
241
+ throw new ValidationFailedError(validation.errors);
242
+ }
121
243
  data = await runRejectableStage(async () => runBeforeChangeHooks(collectionProxy, {
122
- operation: existing ? 'update' : 'create',
244
+ operation,
123
245
  data: await runFieldHooks(collectionProxy, 'beforeChange', {
124
246
  data,
125
247
  ...(existing !== null && { previousData: existing }),
126
- operation: existing ? 'update' : 'create',
248
+ operation,
127
249
  user,
128
250
  overrideAccess
129
251
  }),
@@ -131,16 +253,22 @@ export async function updateGlobal(ctx, args) {
131
253
  user,
132
254
  overrideAccess
133
255
  }), 'beforeChange hook');
134
- const globalCollection = `_global_${global.slug}`;
135
- let record;
136
- if (existing) {
137
- record = await ctx.adapters.database.update(globalCollection, GLOBAL_ID, data);
138
- }
139
- else {
140
- record = await ctx.adapters.database.create(globalCollection, { ...data, id: GLOBAL_ID });
141
- }
256
+ data = screenHookOutput(data, stored, 'beforeChange', `global '${global.slug}'`);
257
+ // A global's relation/upload targets must exist, now and when it commits (spec 064 §4) — a global
258
+ // reference restricts deletion of its target, so it must never be written pointing at nothing.
259
+ const targets = collectWrittenTargets(global.fields, data, existing ?? undefined);
260
+ if (targets.size > 0)
261
+ await verifyTargetsExist(ctx, targets);
262
+ const record = await writeGlobal(ctx, {
263
+ global,
264
+ data,
265
+ existing,
266
+ compareAndSet: mergesLocales,
267
+ accessWhere: decision.where,
268
+ assertions: targets.size > 0 ? targetAssertions(targets) : []
269
+ });
142
270
  await runAfterChangeHooks(collectionProxy, {
143
- operation: existing ? 'update' : 'create',
271
+ operation,
144
272
  data,
145
273
  ...(existing !== null && { previousData: existing }),
146
274
  result: record,
@@ -148,7 +276,9 @@ export async function updateGlobal(ctx, args) {
148
276
  user,
149
277
  overrideAccess
150
278
  });
151
- const doc = await prepareGlobalForRead(ctx, global, record, args);
279
+ // Being allowed to write the global is not permission to read it back (spec 068).
280
+ const readable = args.overrideAccess !== false || (await canReadGlobal(global, record, user));
281
+ const doc = readable ? await prepareGlobalForRead(ctx, global, record, args) : { id: GLOBAL_ID };
152
282
  const result = doc ?? record;
153
283
  await runAfterOperationHooks(collectionProxy, {
154
284
  operation: 'update',
@@ -158,4 +288,83 @@ export async function updateGlobal(ctx, args) {
158
288
  });
159
289
  return result;
160
290
  }
291
+ /** The read gate `getGlobal` applies, as a yes/no for the row just written. */
292
+ async function canReadGlobal(global, record, user) {
293
+ let decision;
294
+ try {
295
+ decision = await checkGlobalAccess(global, 'read', { user, overrideAccess: false });
296
+ }
297
+ catch (err) {
298
+ if (err instanceof AccessDeniedError)
299
+ return false;
300
+ throw err;
301
+ }
302
+ if (decision.where && !documentMatches(record, decision.where))
303
+ return false;
304
+ const status = statusConstraint(proxyOf(global), undefined, user, false, 'all');
305
+ return !status || documentMatches(record, status);
306
+ }
307
+ /**
308
+ * Persists a prepared global write. The first write is a `create` of the fixed `global` row: of two
309
+ * simultaneous first writers, the row's primary key lets exactly one commit, and the other becomes a
310
+ * `409` instead of leaking the internal table's unique-constraint error (spec 066). A write carrying
311
+ * relation-target assertions (spec 064 §4), or a locale merge that must not overwrite a concurrent one
312
+ * (`compareAndSet`, on `updated_at`), is one `atomicWrite`; a failed condition is a `409`, nothing written.
313
+ */
314
+ async function writeGlobal(ctx, input) {
315
+ const { global, data, existing, assertions } = input;
316
+ const table = `_global_${global.slug}`;
317
+ const database = ctx.adapters.database;
318
+ const concurrent = (message) => new ConcurrentModificationError(global.slug, GLOBAL_ID, message);
319
+ const conditions = [
320
+ ...(input.compareAndSet && existing ? [{ updated_at: existing.updated_at }] : []),
321
+ ...(input.accessWhere !== undefined ? [input.accessWhere] : [])
322
+ ];
323
+ const condition = conditions.length === 0
324
+ ? undefined
325
+ : conditions.length === 1
326
+ ? conditions[0]
327
+ : { and: conditions };
328
+ const write = !existing
329
+ ? { type: 'create', collection: table, data: { ...data, id: GLOBAL_ID } }
330
+ : condition !== undefined
331
+ ? {
332
+ type: 'updateIf',
333
+ collection: table,
334
+ id: GLOBAL_ID,
335
+ data,
336
+ condition: { targetMatches: condition },
337
+ requireApplied: true
338
+ }
339
+ : { type: 'update', collection: table, id: GLOBAL_ID, data };
340
+ if (input.compareAndSet && existing)
341
+ await afterStamp(existing.updated_at);
342
+ try {
343
+ if (assertions.length === 0 && write.type === 'create') {
344
+ return await database.create(table, write.data);
345
+ }
346
+ if (assertions.length === 0 && write.type === 'update') {
347
+ return await database.update(table, GLOBAL_ID, write.data);
348
+ }
349
+ const results = await database.atomicWrite([...assertions, write]);
350
+ const written = results[assertions.length];
351
+ if (written?.type === 'create' || written?.type === 'update')
352
+ return written.record;
353
+ if (written?.type === 'updateIf' && written.applied)
354
+ return written.record;
355
+ throw new Error('atomicWrite returned no global record');
356
+ }
357
+ catch (err) {
358
+ if (!existing && isDbUniqueConstraintError(err) && err.collection === table) {
359
+ throw concurrent(`Global '${global.slug}' was first written by another request at the same time; nothing was ` +
360
+ `written. Reload and try again.`);
361
+ }
362
+ if (isAtomicWriteConditionError(err)) {
363
+ throw concurrent(`Global '${global.slug}' was changed by another request while this write was in progress (another ` +
364
+ `locale was edited, it no longer matches the caller's update access, or a document it references ` +
365
+ `was deleted); nothing was written. Reload and try again.`);
366
+ }
367
+ throw err;
368
+ }
369
+ }
161
370
  //# sourceMappingURL=globals.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"globals.js","sourceRoot":"","sources":["../src/globals.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"globals.js","sourceRoot":"","sources":["../src/globals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAGrD,OAAO,EACL,2BAA2B,EAC3B,uBAAuB,IAAI,yBAAyB,EACrD,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,iBAAiB,EACjB,2BAA2B,EAC3B,UAAU,EACV,iBAAiB,EACjB,aAAa,EACb,qBAAqB,EACtB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,aAAa,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,sBAAsB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,yBAAyB,CAAC;AAEjC,MAAM,SAAS,GAAG,QAAQ,CAAC;AAoB3B;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,OAAoC;IACvE,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,WAAW,MAAM,CAAC,IAAI,GAAG,CAAC;QACxC,KAAK,MAAM,IAAI,IAAI,CAAC,cAAc,EAAE,aAAa,CAAU,EAAE,CAAC;YAC5D,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5C,MAAM,CAAC,IAAI,CACT,GAAG,KAAK,aAAa,IAAI,yFAAyF,CACnH,CAAC;YACJ,CAAC;QACH,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAU,EAAE,CAAC;YACjD,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,SAAS,EAAE,CAAC;gBACxC,MAAM,CAAC,IAAI,CACT,GAAG,KAAK,oBAAoB,IAAI,8DAA8D;oBAC5F,yFAAyF;oBACzF,iCAAiC,CACpC,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,2GAA2G;AAC3G,SAAS,OAAO,CAAC,MAAwB;IACvC,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACtC,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAwB,EAAE,MAA0B;IAC7E,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO;IACjC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,iBAAiB,CACzB,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YACzC,CAAC,CAAC,mBAAmB,MAAM,iBAAiB,MAAM,CAAC,IAAI,sBAAsB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7H,CAAC,CAAC,WAAW,MAAM,CAAC,IAAI,+BAA+B,MAAM,qBAAqB,CACrF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,GAAqB,EAAE,IAAY;IAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACnC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,aAAa,CAAC,WAAW,IAAI,aAAa,CAAC,CAAC;IACnE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,MAAwB,EACxB,SAA4B,EAC5B,IAKC;IAED,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAE5D,MAAM,QAAQ,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,SAAS,CAAC,EAAE;QAC/D,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,IAAI;QACvB,SAAS;QACT,UAAU,EAAE,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE;QACxC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;QACnD,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC;KACjD,CAAC,CAAC;IAEH,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IACrD,IAAI,CAAC,QAAQ,CAAC,OAAO;QAAE,MAAM,IAAI,iBAAiB,EAAE,CAAC;IACrD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAAI,KAAuB,EAAE,KAAa;IACzE,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,EAAE,CAAC;IACvB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,UAAU;YAAE,MAAM,GAAG,CAAC;QACzC,MAAM,IAAI,iBAAiB,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;IACtF,CAAC;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,GAAqB,EACrB,MAAwB,EACxB,MAA6B,EAC7B,IAAyF;IAEzF,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;IAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC;IACrD,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAExC,IAAI,GAAG,GAAG,MAAM,CAAC;IAEjB,IAAI,IAAI,CAAC,KAAK,KAAK,CAAC,EAAE,CAAC;QACrB,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE;YACpD,IAAI;YACJ,GAAG,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS,IAAI,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC;SAClF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;QAClC,GAAG,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;QAC9B,GAAG,GAAG,wBAAwB,CAAC,GAAG,EAAE,eAAe,EAAE,IAAI,CAAC,MAAM,CAAmB,CAAC;IACtF,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,eAAe,EAAE,WAAW,EAAE;QACvE,IAAI,EAAE,GAAG;QACT,SAAS,EAAE,MAAM;QACjB,IAAI;QACJ,cAAc;KACf,CAAC,CAAC;IAEH,OAAO,iBAAiB,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC,CAAC;AAC3F,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAqB,EACrB,IAAmB;IAEnB,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;IAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC;IAErD,MAAM,uBAAuB,CAC3B,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAC5B,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,CAC5C,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAE/D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IAEzF,oGAAoG;IACpG,iGAAiG;IACjG,IAAI,MAAM,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACzE,MAAM,sBAAsB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC5C,SAAS,EAAE,MAAM;YACjB,IAAI;YACJ,cAAc;YACd,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;IAED,0FAA0F;IAC1F,gGAAgG;IAChG,kGAAkG;IAClG,mGAAmG;IACnG,oGAAoG;IACpG,mGAAmG;IACnG,2DAA2D;IAC3D,MAAM,WAAW,GAAG,gBAAgB,CAClC,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAC5B,SAAS,EACT,IAAI,EACJ,cAAc,EACd,KAAK,CACN,CAAC;IACF,IAAI,MAAM,IAAI,WAAW,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;QACnE,MAAM,sBAAsB,CAC1B,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAC5B,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,CAC1D,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,sBAAsB,CAC1B,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAC5B,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,CAC1D,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAElE,MAAM,sBAAsB,CAC1B,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAC5B,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,CACzD,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,GAAqB,EACrB,IAAsB;IAEtB,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;IAC/B,MAAM,cAAc,GAAG,IAAI,CAAC,cAAc,KAAK,KAAK,CAAC;IACrD,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACxC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAEvC,MAAM,uBAAuB,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAC;IAE9F,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,MAAM,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;IAC3F,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;IAEjD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE;QACzD,GAAG,IAAI;QACP,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;KAC5C,CAAC,CAAC;IACH,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC,QAAQ,IAAI,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC/E,MAAM,IAAI,iBAAiB,EAAE,CAAC;IAChC,CAAC;IAED,mGAAmG;IACnG,2FAA2F;IAC3F,MAAM,MAAM,GAAG,QAAQ,IAAI,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,iBAAiB,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAEnD,IAAI,IAAI,CAAC,cAAc,KAAK,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC;YACH,MAAM,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,gBAAgB;gBAAE,MAAM,IAAI,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9E,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAED,mGAAmG;IACnG,yFAAyF;IACzF,MAAM,SAAS,GAAG,sBAAsB,CACtC,KAAK,EACL,eAAe,EACf,IAAI,CAAC,MAAM,EACX,QAAQ,IAAI,SAAS,CACtB,CAAC;IACF,MAAM,aAAa,GACjB,QAAQ,KAAK,IAAI;QACjB,IAAI,CAAC,MAAM,KAAK,SAAS;QACzB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClC,OAAO,KAAK,KAAK,SAAS,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IAEL,MAAM,MAAM,GAAG,QAAQ;QACrB,CAAC,CAAC,cAAc,CAAC,eAAe,EAAE,SAAS,EAAE,QAAQ,CAAC;QACtD,CAAC,CAAC,cAAc,CAAC,eAAe,EAAE,kBAAkB,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,CAAC;IAEpF,IAAI,IAAI,GAAG,MAAM,kBAAkB,CACjC,KAAK,IAAI,EAAE,CACT,sBAAsB,CAAC,eAAe,EAAE;QACtC,SAAS;QACT,IAAI,EAAE,MAAM,aAAa,CAAC,eAAe,EAAE,gBAAgB,EAAE;YAC3D,IAAI,EAAE,MAAM;YACZ,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;YACpD,SAAS;YACT,IAAI;YACJ,cAAc;SACf,CAAC;QACF,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;QACpD,IAAI;QACJ,cAAc;KACf,CAAC,EACJ,qBAAqB,CACtB,CAAC;IACF,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,gBAAgB,EAAE,WAAW,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;IAEnF,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QACtE,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;IACvC,CAAC;IAED,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;QAC3F,MAAM,IAAI,iBAAiB,CACzB,mBAAmB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,oCAAoC,CAC5E,CAAC;IACJ,CAAC;IAED,IAAI,QAAQ,EAAE,CAAC;QACb,gGAAgG;QAChG,MAAM,UAAU,GAAG,kBAAkB,CAAC,eAAe,EAAE,EAAE,GAAG,QAAQ,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;QACjF,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YACtB,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;gBAC9C,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC;gBAC7C,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;YAChE,CAAC,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBAAE,MAAM,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QACrE,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,UAAU,GAAG,kBAAkB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,CAAC,KAAK;YAAE,MAAM,IAAI,qBAAqB,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5E,CAAC;IAED,IAAI,GAAG,MAAM,kBAAkB,CAC7B,KAAK,IAAI,EAAE,CACT,oBAAoB,CAAC,eAAe,EAAE;QACpC,SAAS;QACT,IAAI,EAAE,MAAM,aAAa,CAAC,eAAe,EAAE,cAAc,EAAE;YACzD,IAAI;YACJ,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;YACpD,SAAS;YACT,IAAI;YACJ,cAAc;SACf,CAAC;QACF,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;QACpD,IAAI;QACJ,cAAc;KACf,CAAC,EACJ,mBAAmB,CACpB,CAAC;IACF,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;IAEjF,kGAAkG;IAClG,+FAA+F;IAC/F,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,IAAI,SAAS,CAAC,CAAC;IAClF,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC;QAAE,MAAM,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAE7D,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,GAAG,EAAE;QACpC,MAAM;QACN,IAAI;QACJ,QAAQ;QACR,aAAa,EAAE,aAAa;QAC5B,WAAW,EAAE,QAAQ,CAAC,KAAK;QAC3B,UAAU,EAAE,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;KAC9D,CAAC,CAAC;IAEH,MAAM,mBAAmB,CAAC,eAAe,EAAE;QACzC,SAAS;QACT,IAAI;QACJ,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;QACpD,MAAM,EAAE,MAAM;QACd,GAAG,EAAE,MAAM;QACX,IAAI;QACJ,cAAc;KACf,CAAC,CAAC;IAEH,kFAAkF;IAClF,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,KAAK,KAAK,IAAI,CAAC,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC9F,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC;IACjG,MAAM,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC;IAE7B,MAAM,sBAAsB,CAAC,eAAe,EAAE;QAC5C,SAAS,EAAE,QAAQ;QACnB,IAAI;QACJ,cAAc;QACd,MAAM;KACP,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,+EAA+E;AAC/E,KAAK,UAAU,aAAa,CAC1B,MAAwB,EACxB,MAAsB,EACtB,IAAoB;IAEpB,IAAI,QAAwB,CAAC;IAC7B,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAC;IACtF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,iBAAiB;YAAE,OAAO,KAAK,CAAC;QACnD,MAAM,GAAG,CAAC;IACZ,CAAC;IACD,IAAI,QAAQ,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAC7E,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IAChF,OAAO,CAAC,MAAM,IAAI,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,WAAW,CACxB,GAAqB,EACrB,KAQC;IAED,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,GAAG,KAAK,CAAC;IACrD,MAAM,KAAK,GAAG,WAAW,MAAM,CAAC,IAAI,EAAE,CAAC;IACvC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC;IACvC,MAAM,UAAU,GAAG,CAAC,OAAe,EAAE,EAAE,CACrC,IAAI,2BAA2B,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAEnE,MAAM,UAAU,GAAG;QACjB,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjF,GAAG,CAAC,KAAK,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAChE,CAAC;IACF,MAAM,SAAS,GACb,UAAU,CAAC,MAAM,KAAK,CAAC;QACrB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YACvB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;YACf,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;IAE5B,MAAM,KAAK,GAAyB,CAAC,QAAQ;QAC3C,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE;QACzE,CAAC,CAAC,SAAS,KAAK,SAAS;YACvB,CAAC,CAAC;gBACE,IAAI,EAAE,UAAU;gBAChB,UAAU,EAAE,KAAK;gBACjB,EAAE,EAAE,SAAS;gBACb,IAAI;gBACJ,SAAS,EAAE,EAAE,aAAa,EAAE,SAAS,EAAE;gBACvC,cAAc,EAAE,IAAI;aACrB;YACH,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAEjE,IAAI,KAAK,CAAC,aAAa,IAAI,QAAQ;QAAE,MAAM,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAE3E,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAClD,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,MAAM,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7D,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC,GAAG,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,OAAO,EAAE,IAAI,KAAK,QAAQ,IAAI,OAAO,EAAE,IAAI,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC;QACpF,IAAI,OAAO,EAAE,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,IAAI,yBAAyB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;YAC5E,MAAM,UAAU,CACd,WAAW,MAAM,CAAC,IAAI,uEAAuE;gBAC3F,gCAAgC,CACnC,CAAC;QACJ,CAAC;QACD,IAAI,2BAA2B,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,UAAU,CACd,WAAW,MAAM,CAAC,IAAI,6EAA6E;gBACjG,kGAAkG;gBAClG,0DAA0D,CAC7D,CAAC;QACJ,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import type { ApiContext } from '@forge-cms/api';
2
- import type { AnyForgeCmsRuntime } from './runtime.js';
3
- import type { UserRole } from '@forge-cms/auth';
2
+ import type { AnyForgeCmsRuntime, ForgeCmsRuntime } from './runtime.js';
3
+ import type { AuthUser, UserRole } from '@forge-cms/auth';
4
4
  import * as operations from './operations.js';
5
5
  declare const DEFAULT_LIMIT = 50;
6
6
  declare const MAX_LIMIT = 500;
@@ -13,6 +13,7 @@ export interface HandlerOptions<TEnv = unknown> {
13
13
  mimeTypes?: string[];
14
14
  };
15
15
  }
16
+ export declare function resolveOptionalUser<TEnv>(context: ApiContext<TEnv>, runtime: ForgeCmsRuntime<TEnv>): Promise<AuthUser | null>;
16
17
  export declare function handleList<TEnv = unknown>(context: ApiContext<TEnv>, options: HandlerOptions<TEnv>): Promise<Response>;
17
18
  export declare function handleRead<TEnv = unknown>(context: ApiContext<TEnv>, options: HandlerOptions<TEnv>): Promise<Response>;
18
19
  export declare function handleCreate<TEnv = unknown>(context: ApiContext<TEnv>, options: HandlerOptions<TEnv>): Promise<Response>;
@@ -23,15 +24,21 @@ export declare function handleGlobalUpdate<TEnv = unknown>(context: ApiContext<T
23
24
  export declare function handleListVersions<TEnv = unknown>(context: ApiContext<TEnv>, options: HandlerOptions<TEnv>): Promise<Response>;
24
25
  export declare function handleGetVersion<TEnv = unknown>(context: ApiContext<TEnv>, options: HandlerOptions<TEnv>): Promise<Response>;
25
26
  export declare function handleRestoreVersion<TEnv = unknown>(context: ApiContext<TEnv>, options: HandlerOptions<TEnv>): Promise<Response>;
26
- export interface PreviewOptions {
27
- /** Allow previewing drafts without authentication (for preview tokens). */
28
- allowDraftPreview?: boolean;
29
- }
30
27
  /**
31
- * Generates a preview of a document by merging stored data with unsaved changes.
32
- * Useful for live preview in the admin UI before saving.
28
+ * A non-persistent simulation of a permitted create/update (spec 058 §3) — delegates entirely to
29
+ * `runtime.preview()`, which enforces the same access/field-projection policy `create`/`update`
30
+ * already get. Previously this duplicated preview end-to-end: it read the raw adapter row and merged
31
+ * caller-supplied data with **no** access enforcement of any kind (any authenticated caller, of any
32
+ * role, could preview — and see every hidden field of — any document in any collection) — a second,
33
+ * diverging implementation of the exact bug `runtime.preview()` itself had. The caller is resolved
34
+ * through the same `resolveRequest()` every other collection route uses, so CSRF, `allowedRoles`, and
35
+ * a collection's own `access.create`/`access.update` rule all apply exactly as they would for a real
36
+ * write. The previous `allowDraftPreview` escape hatch (never wired into any shipped route) is
37
+ * removed — it existed to let an unauthenticated caller bypass auth entirely for a "preview token"
38
+ * feature this codebase does not have; anonymous preview is still possible the same way anonymous
39
+ * create/update is possible: only if the collection's own access rule allows it.
33
40
  */
34
- export declare function handlePreview<TEnv = unknown>(context: ApiContext<TEnv>, options: HandlerOptions<TEnv> & PreviewOptions): Promise<Response>;
41
+ export declare function handlePreview<TEnv = unknown>(context: ApiContext<TEnv>, options: HandlerOptions<TEnv>): Promise<Response>;
35
42
  export { operations };
36
43
  export { DEFAULT_LIMIT, MAX_LIMIT };
37
44
  //# sourceMappingURL=handlers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}