@payload-onpage/core 0.2.1 → 0.3.1

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/README.md +4 -0
  2. package/dist/autosave.d.ts +2 -2
  3. package/dist/autosave.d.ts.map +1 -1
  4. package/dist/autosave.js +2 -1
  5. package/dist/autosave.js.map +1 -1
  6. package/dist/constants.d.ts +14 -0
  7. package/dist/constants.d.ts.map +1 -1
  8. package/dist/constants.js +14 -0
  9. package/dist/constants.js.map +1 -1
  10. package/dist/docref.d.ts +18 -3
  11. package/dist/docref.d.ts.map +1 -1
  12. package/dist/docref.js +13 -4
  13. package/dist/docref.js.map +1 -1
  14. package/dist/encode.d.ts +16 -4
  15. package/dist/encode.d.ts.map +1 -1
  16. package/dist/encode.js +42 -62
  17. package/dist/encode.js.map +1 -1
  18. package/dist/fields.d.ts +39 -8
  19. package/dist/fields.d.ts.map +1 -1
  20. package/dist/fields.js +111 -97
  21. package/dist/fields.js.map +1 -1
  22. package/dist/index.d.ts +16 -12
  23. package/dist/index.d.ts.map +1 -1
  24. package/dist/index.js +16 -12
  25. package/dist/index.js.map +1 -1
  26. package/dist/path.d.ts +9 -1
  27. package/dist/path.d.ts.map +1 -1
  28. package/dist/path.js +27 -8
  29. package/dist/path.js.map +1 -1
  30. package/dist/payload.d.ts +5 -3
  31. package/dist/payload.d.ts.map +1 -1
  32. package/dist/payload.js +34 -23
  33. package/dist/payload.js.map +1 -1
  34. package/dist/ports.d.ts +43 -28
  35. package/dist/ports.d.ts.map +1 -1
  36. package/dist/ports.js +11 -1
  37. package/dist/ports.js.map +1 -1
  38. package/dist/schema.d.ts +71 -26
  39. package/dist/schema.d.ts.map +1 -1
  40. package/dist/schema.js +1 -6
  41. package/dist/schema.js.map +1 -1
  42. package/dist/seal.d.ts +17 -0
  43. package/dist/seal.d.ts.map +1 -1
  44. package/dist/seal.js +13 -0
  45. package/dist/seal.js.map +1 -1
  46. package/dist/session.d.ts +34 -18
  47. package/dist/session.d.ts.map +1 -1
  48. package/dist/session.js +20 -13
  49. package/dist/session.js.map +1 -1
  50. package/dist/stega.d.ts +6 -2
  51. package/dist/stega.d.ts.map +1 -1
  52. package/dist/stega.js +18 -13
  53. package/dist/stega.js.map +1 -1
  54. package/dist/util.d.ts +9 -0
  55. package/dist/util.d.ts.map +1 -0
  56. package/dist/util.js +11 -0
  57. package/dist/util.js.map +1 -0
  58. package/package.json +14 -3
  59. package/src/autosave.ts +4 -3
  60. package/src/constants.ts +16 -0
  61. package/src/docref.ts +26 -6
  62. package/src/encode.ts +47 -55
  63. package/src/fields.ts +166 -98
  64. package/src/index.ts +125 -12
  65. package/src/path.ts +32 -10
  66. package/src/payload.ts +54 -26
  67. package/src/ports.ts +50 -22
  68. package/src/schema.ts +100 -17
  69. package/src/seal.ts +31 -0
  70. package/src/session.ts +67 -47
  71. package/src/stega.ts +25 -17
  72. package/src/util.ts +12 -0
package/dist/session.d.ts CHANGED
@@ -8,22 +8,31 @@
8
8
  * touched. Publish, discard and reload run one at a time.
9
9
  */
10
10
  import { type SaveState } from './autosave.ts';
11
- import { type DocRef } from './docref.ts';
11
+ import { type DocRef, type RefKey } from './docref.ts';
12
12
  import type { DataSource, Doc } from './ports.ts';
13
13
  import type { DocumentSchema } from './schema.ts';
14
14
  export interface DocumentState {
15
- key: string;
15
+ key: RefKey;
16
16
  ref: DocRef;
17
17
  status: 'loading' | 'ready' | 'error';
18
- error?: string;
18
+ /** Why loading failed (status "error"). */
19
+ error?: string | undefined;
19
20
  schema: DocumentSchema | null;
20
21
  doc: Doc | null;
21
22
  save: SaveState;
22
23
  /** Edited in this session since load or the last publish/discard. */
23
24
  edited: boolean;
24
25
  }
26
+ /** A document that can be edited: loaded, with its schema and data. */
27
+ export type ReadyDocumentState = DocumentState & {
28
+ status: 'ready';
29
+ schema: DocumentSchema;
30
+ doc: Doc;
31
+ };
32
+ /** Narrows a document's state to one that can be edited (instead of checking `schema && doc` by hand). */
33
+ export declare const isReady: (state: DocumentState | undefined) => state is ReadyDocumentState;
25
34
  export interface SessionSnapshot {
26
- docs: Record<string, DocumentState>;
35
+ docs: Record<RefKey, DocumentState>;
27
36
  canUndo: boolean;
28
37
  canRedo: boolean;
29
38
  /** A publish, discard or reload is running. */
@@ -31,20 +40,20 @@ export interface SessionSnapshot {
31
40
  }
32
41
  export interface EditorSessionOptions {
33
42
  dataSource: DataSource;
34
- locale?: string;
43
+ locale?: string | undefined;
35
44
  /** Autosave debounce, ms. Default: the collection's autosave interval, else 800. */
36
- autosaveDelay?: number;
45
+ autosaveDelay?: number | undefined;
37
46
  /** Called after a document's edits were saved; `seq` increments per save. Renderers refresh here. */
38
- onSaved?: (ref: DocRef, seq: number) => void;
47
+ onSaved?: ((ref: DocRef, seq: number) => void) | undefined;
39
48
  }
40
49
  export interface PublishResult {
41
50
  ok: boolean;
42
- message?: string;
51
+ message?: string | undefined;
43
52
  published: DocRef[];
44
53
  }
45
54
  export declare class EditorSession {
46
55
  readonly dataSource: DataSource;
47
- readonly locale?: string;
56
+ readonly locale: string | undefined;
48
57
  private docs;
49
58
  private queues;
50
59
  private updatedAt;
@@ -64,13 +73,15 @@ export declare class EditorSession {
64
73
  private snapshot;
65
74
  private disposed;
66
75
  private readonly autosaveDelay;
67
- private readonly onSaved?;
76
+ private readonly onSaved;
68
77
  constructor(opts: EditorSessionOptions);
69
78
  subscribe: (fn: () => void) => (() => void);
70
79
  getSnapshot: () => SessionSnapshot;
71
80
  private emit;
81
+ /** After a publish: no unpublished edits, and the local copy says so. */
82
+ private markPublished;
72
83
  private patchState;
73
- get(key: string): DocumentState | undefined;
84
+ get(key: RefKey): DocumentState | undefined;
74
85
  /** Run session-level operations (publish, discard, reload) one at a time. */
75
86
  private serial;
76
87
  private schemaFor;
@@ -82,20 +93,20 @@ export declare class EditorSession {
82
93
  */
83
94
  open(ref: DocRef, initialDoc?: Doc): Promise<void>;
84
95
  /** Try loading a document again after an error. */
85
- retry(key: string): Promise<void>;
96
+ retry(key: RefKey): Promise<void>;
86
97
  private adopt;
87
98
  private queueFor;
88
99
  /** Schedule the editable top-level fields that changed since the last save. */
89
100
  private queueChanges;
90
101
  /** Change a document. `transient` updates the view only (live typing): no history, no save. */
91
- apply(key: string, fn: (doc: Doc) => Doc, opts?: {
102
+ apply(key: RefKey, fn: (doc: Doc) => Doc, opts?: {
92
103
  transient?: boolean;
93
104
  }): void;
94
- setValue(key: string, path: string, value: unknown, opts?: {
105
+ setValue(key: RefKey, path: string, value: unknown, opts?: {
95
106
  transient?: boolean;
96
107
  }): void;
97
108
  /** Drop transient changes (Escape while typing). */
98
- cancelTransient(key: string): void;
109
+ cancelTransient(key: RefKey): void;
99
110
  private restore;
100
111
  undo(): void;
101
112
  redo(): void;
@@ -106,14 +117,19 @@ export declare class EditorSession {
106
117
  private selected;
107
118
  /** Publish every document with unpublished changes (edited here, or saved as a draft before). */
108
119
  publish(opts?: {
109
- keys?: string[];
120
+ keys?: RefKey[];
110
121
  }): Promise<PublishResult>;
111
122
  /** Reset drafts with unpublished changes to their published versions (also clears a conflict). */
123
+ /**
124
+ * Reset the drafts to their published values. Done as an edit, so it lands on
125
+ * the undo stack: undo right after a discard brings the changes back (and
126
+ * autosave saves them again).
127
+ */
112
128
  discard(opts?: {
113
- keys?: string[];
129
+ keys?: RefKey[];
114
130
  }): Promise<void>;
115
131
  /** After a conflict: load the latest draft of a document and continue from it (local edits are dropped). */
116
- reload(key: string): Promise<void>;
132
+ reload(key: RefKey): Promise<void>;
117
133
  /** Stop timers and listeners (unmount). Call flush() first to keep unsent edits. */
118
134
  dispose(): void;
119
135
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/dist/session.js CHANGED
@@ -12,9 +12,12 @@ import { refKey } from "./docref.js";
12
12
  import { buildPatch, changedKeys } from "./fields.js";
13
13
  import { setAt } from "./path.js";
14
14
  import { stegaCleanDeep } from "./stega.js";
15
+ import { errorText } from "./util.js";
16
+ /** Narrows a document's state to one that can be edited (instead of checking `schema && doc` by hand). */
17
+ export const isReady = (state) => state?.status === 'ready' && !!state.schema && !!state.doc;
18
+ const schemaKey = (ref) => `${ref.kind}:${ref.slug}`;
15
19
  const HISTORY_LIMIT = 200;
16
20
  const IDLE = { status: 'idle', seq: 0 };
17
- const errorText = (e) => (e instanceof Error ? e.message : String(e));
18
21
  export class EditorSession {
19
22
  dataSource;
20
23
  locale;
@@ -62,6 +65,11 @@ export class EditorSession {
62
65
  for (const fn of this.listeners)
63
66
  fn();
64
67
  }
68
+ /** After a publish: no unpublished edits, and the local copy says so. */
69
+ markPublished(key) {
70
+ const doc = this.docs.get(key)?.doc;
71
+ this.patchState(key, { edited: false, doc: doc ? { ...doc, _status: 'published' } : null });
72
+ }
65
73
  patchState(key, patch) {
66
74
  const cur = this.docs.get(key);
67
75
  if (!cur)
@@ -90,7 +98,7 @@ export class EditorSession {
90
98
  }
91
99
  // ── loading ─────────────────────────────────────────────────────────────
92
100
  schemaFor(ref) {
93
- const k = `${ref.kind}:${ref.slug}`;
101
+ const k = schemaKey(ref);
94
102
  let p = this.schemaCache.get(k);
95
103
  if (!p) {
96
104
  p = this.dataSource.loadSchema(ref, { locale: this.locale });
@@ -177,6 +185,8 @@ export class EditorSession {
177
185
  if (q)
178
186
  return q;
179
187
  const state = this.docs.get(key);
188
+ if (!state)
189
+ throw new Error(`payload-onpage: ${key} is not open in this session`);
180
190
  q = new AutosaveQueue({
181
191
  delay: this.autosaveDelay ?? state.schema?.autosaveInterval ?? 800,
182
192
  onState: (save) => {
@@ -323,17 +333,18 @@ export class EditorSession {
323
333
  };
324
334
  if (res.updatedAt)
325
335
  this.updatedAt.set(key, res.updatedAt);
326
- const now = this.docs.get(key);
327
- this.patchState(key, {
328
- edited: false,
329
- doc: now.doc ? { ...now.doc, _status: 'published' } : now.doc,
330
- });
336
+ this.markPublished(key);
331
337
  published.push(state.ref);
332
338
  }
333
339
  return { ok: true, published };
334
340
  });
335
341
  }
336
342
  /** Reset drafts with unpublished changes to their published versions (also clears a conflict). */
343
+ /**
344
+ * Reset the drafts to their published values. Done as an edit, so it lands on
345
+ * the undo stack: undo right after a discard brings the changes back (and
346
+ * autosave saves them again).
347
+ */
337
348
  discard(opts = {}) {
338
349
  return this.serial(async () => {
339
350
  await this.flush();
@@ -343,7 +354,7 @@ export class EditorSession {
343
354
  this.dataSource.loadDocument(ref, { draft: true, locale: this.locale, depth: 2 }),
344
355
  ]);
345
356
  const state = this.docs.get(key);
346
- if (!state?.schema || !state.doc)
357
+ if (!isReady(state))
347
358
  continue;
348
359
  // Continue from the server's latest draft (so the stale-write guard accepts the reset).
349
360
  this.adopt(key, latest);
@@ -353,11 +364,7 @@ export class EditorSession {
353
364
  next[k] = published[k];
354
365
  this.apply(key, () => next);
355
366
  await this.queues.get(key)?.flush();
356
- const now = this.docs.get(key);
357
- this.patchState(key, {
358
- edited: false,
359
- doc: now.doc ? { ...now.doc, _status: 'published' } : now.doc,
360
- });
367
+ this.markPublished(key);
361
368
  }
362
369
  });
363
370
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,aAAa,EAAkB,MAAM,eAAe,CAAA;AAC7D,OAAO,EAAE,MAAM,EAAe,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,KAAK,EAAE,MAAM,WAAW,CAAA;AAGjC,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AA2C3C,MAAM,aAAa,GAAG,GAAG,CAAA;AACzB,MAAM,IAAI,GAAc,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,EAAE,CAAA;AAClD,MAAM,SAAS,GAAG,CAAC,CAAU,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAE9E,MAAM,OAAO,aAAa;IACf,UAAU,CAAY;IACtB,MAAM,CAAS;IAChB,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAA;IACvC,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAA;IACzC,SAAS,GAAG,IAAI,GAAG,EAA8B,CAAA;IACzD,gFAAgF;IACxE,KAAK,GAAG,IAAI,GAAG,EAAe,CAAA;IACtC,qEAAqE;IAC7D,OAAO,GAAG,IAAI,GAAG,EAAe,CAAA;IACxC,sGAAsG;IAC9F,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAA;IAC5B,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAA;IAC1C,WAAW,GAAG,IAAI,GAAG,EAAmC,CAAA;IACxD,IAAI,GAAmB,EAAE,CAAA;IACzB,MAAM,GAAmB,EAAE,CAAA;IAC3B,SAAS,GAAG,IAAI,GAAG,EAAc,CAAA;IACjC,GAAG,GAAqB,OAAO,CAAC,OAAO,EAAE,CAAA;IACzC,OAAO,GAAG,CAAC,CAAA;IACX,QAAQ,GAAoB,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;IACrF,QAAQ,GAAG,KAAK,CAAA;IACP,aAAa,CAAoB;IACjC,OAAO,CAAqC;IAE7D,YAAY,IAA0B;QACpC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAA;QACjC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;QACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAA;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;IAC7B,CAAC;IAED,2EAA2E;IAC3E,SAAS,GAAG,CAAC,EAAc,EAAgB,EAAE;QAC3C,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACtB,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;IACxC,CAAC,CAAA;IAED,WAAW,GAAG,GAAoB,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAA;IAE1C,IAAI;QACV,IAAI,IAAI,CAAC,QAAQ;YAAE,OAAM;QACzB,IAAI,CAAC,QAAQ,GAAG;YACd,IAAI,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC;YACnC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YAC7B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAC/B,IAAI,EAAE,IAAI,CAAC,OAAO,GAAG,CAAC;SACvB,CAAA;QACD,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,SAAS;YAAE,EAAE,EAAE,CAAA;IACvC,CAAC;IAEO,UAAU,CAAC,GAAW,EAAE,KAA6B;QAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,CAAC,GAAG;YAAE,OAAM;QAChB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED,GAAG,CAAC,GAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC3B,CAAC;IAED,6EAA6E;IACrE,MAAM,CAAI,EAAoB;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACnC,IAAI,CAAC,OAAO,IAAI,CAAC,CAAA;YACjB,IAAI,CAAC,IAAI,EAAE,CAAA;YACX,IAAI,CAAC;gBACH,OAAO,MAAM,EAAE,EAAE,CAAA;YACnB,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,OAAO,IAAI,CAAC,CAAA;gBACjB,IAAI,CAAC,IAAI,EAAE,CAAA;YACb,CAAC;QACH,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QACrC,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,2EAA2E;IACnE,SAAS,CAAC,GAAW;QAC3B,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE,CAAA;QACnC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC/B,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;YAC5D,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC1B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;QAC3C,CAAC;QACD,OAAO,CAAC,CAAA;IACV,CAAC;IAED;;;;;OAKG;IACH,IAAI,CAAC,GAAW,EAAE,UAAgB;QAChC,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACnC,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC5C,IAAI,UAAU,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC9D,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBACtB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;gBAC3B,IAAI,CAAC,IAAI,EAAE,CAAA;YACb,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,CAAA;QACnD,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE;YACjB,GAAG;YACH,GAAG;YACH,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,IAAI;YACZ,GAAG,EAAE,IAAI;YACT,IAAI,EAAE,IAAI;YACV,MAAM,EAAE,KAAK;SACd,CAAC,CAAA;QACF,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YACtB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;QAC7B,CAAC;QACD,IAAI,CAAC,IAAI,EAAE,CAAA;QACX,MAAM,IAAI,GAAG,CAAC,KAAK,IAAI,EAAE;YACvB,IAAI,CAAC;gBACH,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBACtC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;oBACnB,UAAU;wBACR,CAAC,CAAC,IAAI;wBACN,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;iBACtF,CAAC,CAAA;gBACF,4DAA4D;gBAC5D,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC;oBAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;gBACxD,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAA;YACrE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YAChE,CAAC;oBAAS,CAAC;gBACT,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAC1B,CAAC;QACH,CAAC,CAAC,EAAE,CAAA;QACJ,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC3B,OAAO,IAAI,CAAA;IACb,CAAC;IAED,mDAAmD;IACnD,KAAK,CAAC,GAAW;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,CAAC,KAAK;YAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;QACpC,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QACzD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAA;QAC7B,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAC1B,CAAC;IAEO,KAAK,CAAC,GAAW,EAAE,GAAQ;QACjC,4FAA4F;QAC5F,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,CAAA;QAC/B,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,GAAG,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAA;QACtF,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC9B,IAAI,GAAG;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,CAAA;IAC9C,CAAC;IAEO,QAAQ,CAAC,GAAW;QAC1B,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC5B,IAAI,CAAC;YAAE,OAAO,CAAC,CAAA;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;QACjC,CAAC,GAAG,IAAI,aAAa,CAAC;YACpB,KAAK,EAAE,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,EAAE,gBAAgB,IAAI,GAAG;YAClE,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;gBAChB,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;gBAC9B,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO;oBAAE,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;YAClE,CAAC;YACD,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;gBACpB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE;oBAC5D,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;iBACnC,CAAC,CAAA;gBACF,IAAI,GAAG,CAAC,EAAE,IAAI,GAAG,CAAC,SAAS;oBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;gBACnE,OAAO,GAAG,CAAA;YACZ,CAAC;SACF,CAAC,CAAA;QACF,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;QACvB,OAAO,CAAC,CAAA;IACV,CAAC;IAED,+EAA+E;IACvE,YAAY,CAAC,GAAW,EAAE,IAAS;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;QACzC,IAAI,CAAC,MAAM;YAAE,OAAM;QACnB,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAA;QAC1E,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAM;QACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QACzB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IACpE,CAAC;IAED,2EAA2E;IAC3E,+FAA+F;IAC/F,KAAK,CAAC,GAAW,EAAE,EAAqB,EAAE,OAAgC,EAAE;QAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,CAAC,KAAK,EAAE,GAAG;YAAE,OAAM;QACvB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAA;QACxB,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;QACvB,IAAI,IAAI,KAAK,MAAM;YAAE,OAAM;QAC3B,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YACzD,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAA;YAC3C,IAAI,CAAC,IAAI,EAAE,CAAA;YACX,OAAM;QACR,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,MAAM,CAAA;QAC9C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACpD,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,aAAa;YAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACvD,IAAI,CAAC,MAAM,GAAG,EAAE,CAAA;QAChB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED,QAAQ,CAAC,GAAW,EAAE,IAAY,EAAE,KAAc,EAAE,OAAgC,EAAE;QACpF,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,IAAI,CAAC,CAAA;IACrD,CAAC;IAED,oDAAoD;IACpD,eAAe,CAAC,GAAW;QACzB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACpC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK;YAAE,OAAM;QAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAA;QAC7C,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAEO,OAAO,CAAC,GAAW,EAAE,GAAQ;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAChC,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACxB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;QACnD,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;IAC7B,CAAC;IAED,IAAI;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAA;QAC7B,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,CAAA;QACrC,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED,IAAI;QACF,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACjC,IAAI,CAAC,KAAK;YAAE,OAAM;QAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACrB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,KAAK,CAAC,CAAA;QACpC,IAAI,CAAC,IAAI,EAAE,CAAA;IACb,CAAC;IAED,2EAA2E;IAC3E,KAAK,CAAC,KAAK;QACT,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAA;IACpE,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAA;IAC5D,CAAC;IAED,8EAA8E;IACtE,WAAW,CAAC,KAAoB;QACtC,OAAO,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAA;IACvD,CAAC;IAEO,QAAQ,CAAC,IAAe;QAC9B,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CACnC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CACnF,CAAA;IACH,CAAC;IAED,iGAAiG;IACjG,OAAO,CAAC,OAA4B,EAAE;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;YAClB,MAAM,SAAS,GAAa,EAAE,CAAA;YAC9B,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/C,oEAAoE;gBACpE,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBAChC,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM;oBAAE,SAAQ;gBAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAA;gBAC1C,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU;oBAClC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,mCAAmC,EAAE,SAAS,EAAE,CAAA;gBACvF,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO;oBAC/B,OAAO;wBACL,EAAE,EAAE,KAAK;wBACT,OAAO,EAAE,GAAG,KAAK,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,iBAAiB,EAAE;wBAC/D,SAAS;qBACV,CAAA;gBACH,IAAI,GAAG,CAAA;gBACP,IAAI,CAAC;oBACH,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CACjC,KAAK,CAAC,GAAG,EACT,UAAU,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EACjE;wBACE,MAAM,EAAE,IAAI,CAAC,MAAM;wBACnB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;qBACnC,CACF,CAAA;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,CAAA;gBACvE,CAAC;gBACD,IAAI,CAAC,GAAG,CAAC,EAAE;oBACT,OAAO;wBACL,EAAE,EAAE,KAAK;wBACT,OAAO,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG,KAAK,qBAAqB,GAAG,CAAC,MAAM,GAAG;wBAClE,SAAS;qBACV,CAAA;gBACH,IAAI,GAAG,CAAC,SAAS;oBAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,CAAA;gBACzD,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;gBAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;oBACnB,MAAM,EAAE,KAAK;oBACb,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;iBAC9D,CAAC,CAAA;gBACF,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC3B,CAAC;YACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAA;QAChC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,kGAAkG;IAClG,OAAO,CAAC,OAA4B,EAAE;QACpC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;YAClB,KAAK,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpD,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;oBAC5C,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;oBAClF,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;iBAClF,CAAC,CAAA;gBACF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;gBAChC,IAAI,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG;oBAAE,SAAQ;gBAC1C,wFAAwF;gBACxF,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;gBACvB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAA;gBAC7B,MAAM,IAAI,GAAG,EAAE,GAAG,cAAc,CAAC,MAAM,CAAC,EAAE,CAAA;gBAC1C,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ;oBAAE,IAAI,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,CAAA;gBAC7D,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;gBAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAA;gBACnC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAE,CAAA;gBAC/B,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;oBACnB,MAAM,EAAE,KAAK;oBACb,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG;iBAC9D,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,4GAA4G;IAC5G,MAAM,CAAC,GAAW;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE;YAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAChC,IAAI,CAAC,KAAK;gBAAE,OAAM;YAClB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE;gBACxD,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,CAAC;aACT,CAAC,CAAA;YACF,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;YACpB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;YAClD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAA;YACtD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAA;YAC7B,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;IACJ,CAAC;IAED,oFAAoF;IACpF,OAAO;QACL,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAAE,CAAC,CAAC,OAAO,EAAE,CAAA;QACjD,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAA;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;IACtB,CAAC;CACF"}
1
+ {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}
package/dist/stega.d.ts CHANGED
@@ -14,13 +14,17 @@
14
14
  * All of these render with zero width and are ignored by `trim()`-insensitive
15
15
  * layout; they are stripped before anything is written back to Payload.
16
16
  */
17
- export type MarkerKind = 'text' | 'textarea' | 'richtext' | 'media';
17
+ import { type RefKey } from './docref.ts';
18
+ export declare const MARKER_KINDS: readonly ["text", "textarea", "richtext", "media"];
19
+ export type MarkerKind = (typeof MARKER_KINDS)[number];
18
20
  export interface Marker {
19
- ref: string;
21
+ ref: RefKey;
20
22
  path: string;
21
23
  kind: MarkerKind;
22
24
  }
23
25
  export declare function encodeMarker(marker: Marker): string;
26
+ /** Does this string carry a marker? (A cheap test before decoding, e.g. while scanning a page.) */
27
+ export declare const hasStegaMarker: (value: string) => boolean;
24
28
  /** Append a marker to a string (an already-marked string is re-marked, not doubled). */
25
29
  export declare function stegaEncode(value: string, marker: Marker): string;
26
30
  /** All complete markers in a string, in order. Damaged ones are skipped. */
@@ -1 +1 @@
1
- {"version":3,"file":"stega.d.ts","sourceRoot":"","sources":["../src/stega.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,UAAU,GAAG,OAAO,CAAA;AAEnE,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;CACjB;AA4BD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMnD;AA0BD,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAQnD;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAW7C"}
1
+ {"version":3,"file":"stega.d.ts","sourceRoot":"","sources":["../src/stega.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAAY,KAAK,MAAM,EAAE,MAAM,aAAa,CAAA;AAEnD,eAAO,MAAM,YAAY,oDAAqD,CAAA;AAC9E,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAA;AAEtD,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAA;IACX,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,UAAU,CAAA;CACjB;AA2BD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAUnD;AA0BD,mGAAmG;AACnG,eAAO,MAAM,cAAc,GAAI,OAAO,MAAM,KAAG,OAAgC,CAAA;AAE/E,wFAAwF;AACxF,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAEjE;AAED,4EAA4E;AAC5E,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAQnD;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAW7C"}
package/dist/stega.js CHANGED
@@ -14,7 +14,10 @@
14
14
  * All of these render with zero width and are ignored by `trim()`-insensitive
15
15
  * layout; they are stripped before anything is written back to Payload.
16
16
  */
17
- const DIGITS = ['\u200b', '\u200c', '\u200d', '\u2060'];
17
+ import { isRefKey } from "./docref.js";
18
+ export const MARKER_KINDS = ['text', 'textarea', 'richtext', 'media'];
19
+ /** The four invisible code points that carry base-4 digits, in digit order. */
20
+ const DIGITS = '\u200b\u200c\u200d\u2060';
18
21
  const START = '\u2063\u2062';
19
22
  const END = '\u2064';
20
23
  const KIND_CODE = {
@@ -23,13 +26,9 @@ const KIND_CODE = {
23
26
  richtext: 'r',
24
27
  media: 'm',
25
28
  };
26
- const CODE_KIND = {
27
- t: 'text',
28
- a: 'textarea',
29
- r: 'richtext',
30
- m: 'media',
31
- };
32
- const DIGIT_VALUE = new Map(DIGITS.map((c, i) => [c, i]));
29
+ /** Derived from KIND_CODE, so the two can't disagree. */
30
+ const CODE_KIND = new Map(Object.entries(KIND_CODE).map(([kind, code]) => [code, kind]));
31
+ const DIGIT_VALUE = new Map([...DIGITS].map((c, i) => [c, i]));
33
32
  // The codec's characters are single invisible code points (not combining sequences).
34
33
  // eslint-disable-next-line no-misleading-character-class
35
34
  const MARKER_RE = /\u2063\u2062([\u200b\u200c\u200d\u2060]*)\u2064/g;
@@ -41,7 +40,11 @@ export function encodeMarker(marker) {
41
40
  const bytes = encoder.encode(`${marker.ref}|${marker.path}|${KIND_CODE[marker.kind]}`);
42
41
  let body = '';
43
42
  for (const b of bytes)
44
- body += DIGITS[(b >> 6) & 3] + DIGITS[(b >> 4) & 3] + DIGITS[(b >> 2) & 3] + DIGITS[b & 3];
43
+ body +=
44
+ DIGITS.charAt((b >> 6) & 3) +
45
+ DIGITS.charAt((b >> 4) & 3) +
46
+ DIGITS.charAt((b >> 2) & 3) +
47
+ DIGITS.charAt(b & 3);
45
48
  return START + body + END;
46
49
  }
47
50
  function decodeBody(body) {
@@ -51,7 +54,7 @@ function decodeBody(body) {
51
54
  for (let i = 0; i < bytes.length; i++) {
52
55
  let b = 0;
53
56
  for (let j = 0; j < 4; j++) {
54
- const v = DIGIT_VALUE.get(body[i * 4 + j]);
57
+ const v = DIGIT_VALUE.get(body.charAt(i * 4 + j));
55
58
  if (v === undefined)
56
59
  return null;
57
60
  b = (b << 2) | v;
@@ -66,11 +69,13 @@ function decodeBody(body) {
66
69
  return null;
67
70
  }
68
71
  const [ref, path, code, ...extra] = text.split('|');
69
- const kind = CODE_KIND[code];
70
- if (!ref || !path || !kind || extra.length)
72
+ const kind = code === undefined ? undefined : CODE_KIND.get(code);
73
+ if (!ref || !isRefKey(ref) || !path || !kind || extra.length)
71
74
  return null;
72
75
  return { ref, path, kind };
73
76
  }
77
+ /** Does this string carry a marker? (A cheap test before decoding, e.g. while scanning a page.) */
78
+ export const hasStegaMarker = (value) => value.includes(START);
74
79
  /** Append a marker to a string (an already-marked string is re-marked, not doubled). */
75
80
  export function stegaEncode(value, marker) {
76
81
  return stegaClean(value) + encodeMarker(marker);
@@ -81,7 +86,7 @@ export function stegaDecode(value) {
81
86
  if (!value)
82
87
  return out;
83
88
  for (const m of value.matchAll(MARKER_RE)) {
84
- const marker = decodeBody(m[1]);
89
+ const marker = decodeBody(m[1] ?? '');
85
90
  if (marker)
86
91
  out.push(marker);
87
92
  }
package/dist/stega.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"stega.js","sourceRoot":"","sources":["../src/stega.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stega.js","sourceRoot":"","sources":["../src/stega.ts"],"names":[],"mappings":"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"}
package/dist/util.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ /** Small type-level and error helpers shared by every package. */
2
+ /** A thrown value's message (anything can be thrown, not only `Error`s). */
3
+ export declare const errorText: (e: unknown) => string;
4
+ /**
5
+ * Exhaustiveness check: call in the `default` of a switch over a union. Adding a
6
+ * member to the union then fails to compile until every switch handles it.
7
+ */
8
+ export declare function assertNever(value: never, what?: string): never;
9
+ //# sourceMappingURL=util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAElE,4EAA4E;AAC5E,eAAO,MAAM,SAAS,GAAI,GAAG,OAAO,KAAG,MAAsD,CAAA;AAE7F;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,SAAU,GAAG,KAAK,CAE/D"}
package/dist/util.js ADDED
@@ -0,0 +1,11 @@
1
+ /** Small type-level and error helpers shared by every package. */
2
+ /** A thrown value's message (anything can be thrown, not only `Error`s). */
3
+ export const errorText = (e) => (e instanceof Error ? e.message : String(e));
4
+ /**
5
+ * Exhaustiveness check: call in the `default` of a switch over a union. Adding a
6
+ * member to the union then fails to compile until every switch handles it.
7
+ */
8
+ export function assertNever(value, what = 'value') {
9
+ throw new Error(`Unexpected ${what}: ${JSON.stringify(value)}`);
10
+ }
11
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["../src/util.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAElE,4EAA4E;AAC5E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,CAAU,EAAU,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAE7F;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAY,EAAE,IAAI,GAAG,OAAO;IACtD,MAAM,IAAI,KAAK,CAAC,cAAc,IAAI,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AACjE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@payload-onpage/core",
3
- "version": "0.2.1",
3
+ "version": "0.3.1",
4
4
  "description": "payload-onpage core: document refs, schema, field operations, stega codec, autosave and the editor session, plus the port interfaces adapters implement.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -15,12 +15,23 @@
15
15
  "keywords": [
16
16
  "payload",
17
17
  "payloadcms",
18
+ "payload-cms",
18
19
  "payload-plugin",
19
20
  "nextjs",
21
+ "next.js",
22
+ "app-router",
20
23
  "visual-editing",
21
- "live-preview",
24
+ "visual-editor",
22
25
  "inline-editing",
23
- "cms"
26
+ "front-end-editing",
27
+ "live-preview",
28
+ "draft-preview",
29
+ "preview-links",
30
+ "page-builder",
31
+ "wysiwyg",
32
+ "headless-cms",
33
+ "cms",
34
+ "react"
24
35
  ],
25
36
  "exports": {
26
37
  ".": {
package/src/autosave.ts CHANGED
@@ -6,13 +6,14 @@
6
6
  * failures (validation, permissions) stop immediately with the server's message.
7
7
  */
8
8
  import type { SaveResult } from './ports.ts'
9
+ import { errorText } from './util.ts'
9
10
 
10
11
  export type SaveStatus = 'idle' | 'pending' | 'saving' | 'saved' | 'error' | 'conflict'
11
12
 
12
13
  export interface SaveState {
13
14
  status: SaveStatus
14
- lastSavedAt?: number
15
- message?: string
15
+ lastSavedAt?: number | undefined
16
+ message?: string | undefined
16
17
  /** Increments with every successful save. */
17
18
  seq: number
18
19
  }
@@ -96,7 +97,7 @@ export class AutosaveQueue {
96
97
  try {
97
98
  result = await this.opts.send(patch)
98
99
  } catch (err) {
99
- result = { ok: false, status: 0, message: err instanceof Error ? err.message : String(err) }
100
+ result = { ok: false, status: 0, message: errorText(err) }
100
101
  }
101
102
  this.inFlight = null
102
103
  if (result.ok) {
package/src/constants.ts CHANGED
@@ -5,6 +5,22 @@ export const DEFAULTS = {
5
5
  adminRoute: '/admin',
6
6
  } as const
7
7
 
8
+ /** The plugin's endpoints, under `${apiRoute}${routePrefix}`. One list for the plugin and every client. */
9
+ export const ROUTES = {
10
+ schema: '/schema',
11
+ enter: '/enter',
12
+ mode: '/mode',
13
+ exit: '/exit',
14
+ previewLink: '/preview-link',
15
+ preview: '/preview',
16
+ } as const
17
+
18
+ /**
19
+ * The Payload request-context key that asks a read for auto-mapping markers.
20
+ * `onpageContext()` sets it; the plugin's afterRead hook reads it.
21
+ */
22
+ export const CONTEXT_KEY = 'onpage'
23
+
8
24
  /** Cookies and headers used by the Next.js adapter and its proxy. */
9
25
  export const COOKIE = {
10
26
  /** Editor mode, bound to the signed-in session: `edit|view:<authCookie>:<hash>`. */
package/src/docref.ts CHANGED
@@ -6,11 +6,22 @@
6
6
  export type DocRef =
7
7
  { kind: 'collection'; slug: string; id: string | number } | { kind: 'global'; slug: string }
8
8
 
9
- /** Stable string key: "c:<slug>:<id>" or "g:<slug>". */
10
- export function refKey(ref: DocRef): string {
9
+ /**
10
+ * A document's stable key: "c:<slug>:<id>" or "g:<slug>". A template-literal
11
+ * type, so a field path or slug can't be passed where a document key belongs.
12
+ */
13
+ export type RefKey = `c:${string}:${string}` | `g:${string}`
14
+
15
+ /** A field (or row/list) of one document: "<refKey>|<path>". */
16
+ export type TargetKey = `${RefKey}|${string}`
17
+
18
+ export function refKey(ref: DocRef): RefKey {
11
19
  return ref.kind === 'global' ? `g:${ref.slug}` : `c:${ref.slug}:${ref.id}`
12
20
  }
13
21
 
22
+ /** Is this string a well-formed document key? */
23
+ export const isRefKey = (key: string): key is RefKey => parseRefKey(key) !== null
24
+
14
25
  export function parseRefKey(key: string): DocRef | null {
15
26
  if (key.startsWith('g:')) {
16
27
  const slug = key.slice(2)
@@ -20,13 +31,22 @@ export function parseRefKey(key: string): DocRef | null {
20
31
  const rest = key.slice(2)
21
32
  const i = rest.indexOf(':')
22
33
  if (i <= 0 || i === rest.length - 1) return null
23
- const slug = rest.slice(0, i)
24
- const raw = rest.slice(i + 1)
25
- return { kind: 'collection', slug, id: /^\d+$/.test(raw) ? Number(raw) : raw }
34
+ return collectionRef(rest.slice(0, i), rest.slice(i + 1))
26
35
  }
27
36
  return null
28
37
  }
29
38
 
39
+ /**
40
+ * A collection ref from an id read as text (a key, a URL, an attribute). Only a
41
+ * canonical safe integer becomes a number: "007" and ids past 2^53 stay text,
42
+ * so the document they name is the one that's opened. Servers that know the
43
+ * collection's id type should decide instead (the plugin does).
44
+ */
45
+ export function collectionRef(slug: string, id: string): DocRef {
46
+ const n = Number(id)
47
+ return { kind: 'collection', slug, id: Number.isSafeInteger(n) && String(n) === id ? n : id }
48
+ }
49
+
30
50
  /** Key for one field (or row/list) of one document: "<refKey>|<path>". */
31
- export const targetKey = (ref: DocRef | string, path: string): string =>
51
+ export const targetKey = (ref: DocRef | RefKey, path: string): TargetKey =>
32
52
  `${typeof ref === 'string' ? ref : refKey(ref)}|${path}`