@bendyline/docblocks 2.0.0 → 2.1.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 (286) hide show
  1. package/dist/{chunk-J32GU3F3.js → chunk-6IYMTYMQ.js} +249 -221
  2. package/dist/chunk-6IYMTYMQ.js.map +1 -0
  3. package/dist/{chunk-75UUF6C4.js → chunk-B56KWCSE.js} +2 -2
  4. package/dist/{chunk-RVQHY3XU.js → chunk-BNKV7MTO.js} +1 -1
  5. package/dist/{chunk-RVQHY3XU.js.map → chunk-BNKV7MTO.js.map} +1 -1
  6. package/dist/chunk-BXMF5YQJ.js +149 -0
  7. package/dist/chunk-BXMF5YQJ.js.map +1 -0
  8. package/dist/{chunk-PGR7LK6D.js → chunk-COYQXQK3.js} +14 -5
  9. package/dist/chunk-COYQXQK3.js.map +1 -0
  10. package/dist/{chunk-RQJRQF46.js → chunk-DN7A33LL.js} +42 -49
  11. package/dist/chunk-DN7A33LL.js.map +1 -0
  12. package/dist/chunk-FA7UNOXK.js +20 -0
  13. package/dist/chunk-FA7UNOXK.js.map +1 -0
  14. package/dist/chunk-GM5YXU4L.js +29 -0
  15. package/dist/chunk-GM5YXU4L.js.map +1 -0
  16. package/dist/{chunk-SI2LU2RP.js → chunk-JS6XFWQK.js} +2 -1
  17. package/dist/chunk-JS6XFWQK.js.map +1 -0
  18. package/dist/{chunk-EGNDADXB.js → chunk-MNSZ7EZN.js} +2 -2
  19. package/dist/chunk-P3DVZQ6S.js +228 -0
  20. package/dist/chunk-P3DVZQ6S.js.map +1 -0
  21. package/dist/chunk-P4WATND4.js +52 -0
  22. package/dist/chunk-P4WATND4.js.map +1 -0
  23. package/dist/chunk-RVPGQBWR.js +169 -0
  24. package/dist/chunk-RVPGQBWR.js.map +1 -0
  25. package/dist/chunk-U722UUFN.js +9 -0
  26. package/dist/chunk-U722UUFN.js.map +1 -0
  27. package/dist/{chunk-GCPBEMMH.js → chunk-VTCSF7VS.js} +11 -21
  28. package/dist/chunk-VTCSF7VS.js.map +1 -0
  29. package/dist/{chunk-2D7Y4IR3.js → chunk-WJKYY5QR.js} +123 -66
  30. package/dist/chunk-WJKYY5QR.js.map +1 -0
  31. package/dist/{chunk-5MYAICRE.js → chunk-XUML3MKV.js} +44 -56
  32. package/dist/chunk-XUML3MKV.js.map +1 -0
  33. package/dist/document/index.d.ts +358 -6
  34. package/dist/document/index.js +24 -3
  35. package/dist/document/index.js.map +1 -1
  36. package/dist/filesystem/electron.d.ts +73 -4
  37. package/dist/filesystem/electron.js +16 -3
  38. package/dist/filesystem/electron.js.map +1 -1
  39. package/dist/filesystem/index.d.ts +228 -22
  40. package/dist/filesystem/index.js +133 -19
  41. package/dist/filesystem/index.js.map +1 -1
  42. package/dist/filesystem/indexeddb.d.ts +284 -5
  43. package/dist/filesystem/indexeddb.js +22 -4
  44. package/dist/filesystem/indexeddb.js.map +1 -1
  45. package/dist/filesystem/memory.d.ts +152 -4
  46. package/dist/filesystem/memory.js +12 -3
  47. package/dist/filesystem/memory.js.map +1 -1
  48. package/dist/filesystem/native.d.ts +136 -4
  49. package/dist/filesystem/native.js +27 -3
  50. package/dist/filesystem/native.js.map +1 -1
  51. package/dist/host/index.d.ts +32 -9
  52. package/dist/host/index.js +26 -29
  53. package/dist/host/index.js.map +1 -1
  54. package/dist/index.d.ts +14 -10
  55. package/dist/index.js +204 -9
  56. package/dist/index.js.map +1 -1
  57. package/dist/mcp/index.d.ts +33 -4
  58. package/dist/mcp/index.js +31 -3
  59. package/dist/mcp/index.js.map +1 -1
  60. package/dist/mcp/zod.d.ts +637 -635
  61. package/dist/mcp/zod.js +700 -884
  62. package/dist/mcp/zod.js.map +1 -1
  63. package/dist/share/index.d.ts +43 -0
  64. package/dist/share/index.js +13 -0
  65. package/dist/share/index.js.map +1 -0
  66. package/dist/{types-CsX6EN2t.d.ts → types-BEg5SQ1_.d.ts} +1 -1
  67. package/dist/{types-eOlt9J7n.d.ts → types-CueK0tvU.d.ts} +34 -11
  68. package/dist/vscode/index.d.ts +220 -3
  69. package/dist/vscode/index.js +382 -2
  70. package/dist/vscode/index.js.map +1 -1
  71. package/dist/workspace/index.d.ts +141 -4
  72. package/dist/workspace/index.js +28 -2
  73. package/dist/workspace/index.js.map +1 -1
  74. package/package.json +9 -5
  75. package/dist/chunk-2D7Y4IR3.js.map +0 -1
  76. package/dist/chunk-5MYAICRE.js.map +0 -1
  77. package/dist/chunk-AYZ4HN5M.js +0 -20
  78. package/dist/chunk-AYZ4HN5M.js.map +0 -1
  79. package/dist/chunk-GCPBEMMH.js.map +0 -1
  80. package/dist/chunk-J32GU3F3.js.map +0 -1
  81. package/dist/chunk-PGR7LK6D.js.map +0 -1
  82. package/dist/chunk-RQJRQF46.js.map +0 -1
  83. package/dist/chunk-SI2LU2RP.js.map +0 -1
  84. package/dist/chunk-W5UUUII5.js +0 -142
  85. package/dist/chunk-W5UUUII5.js.map +0 -1
  86. package/dist/document/document-session.d.ts +0 -127
  87. package/dist/document/document-session.d.ts.map +0 -1
  88. package/dist/document/document-session.js +0 -749
  89. package/dist/document/document-session.js.map +0 -1
  90. package/dist/document/filesystem-target.d.ts +0 -17
  91. package/dist/document/filesystem-target.d.ts.map +0 -1
  92. package/dist/document/filesystem-target.js +0 -70
  93. package/dist/document/filesystem-target.js.map +0 -1
  94. package/dist/document/index.d.ts.map +0 -1
  95. package/dist/document/recovery-journal.d.ts +0 -125
  96. package/dist/document/recovery-journal.d.ts.map +0 -1
  97. package/dist/document/recovery-journal.js +0 -385
  98. package/dist/document/recovery-journal.js.map +0 -1
  99. package/dist/document/types.d.ts +0 -89
  100. package/dist/document/types.d.ts.map +0 -1
  101. package/dist/document/types.js +0 -9
  102. package/dist/document/types.js.map +0 -1
  103. package/dist/filesystem/commit-lock.d.ts +0 -3
  104. package/dist/filesystem/commit-lock.d.ts.map +0 -1
  105. package/dist/filesystem/commit-lock.js +0 -20
  106. package/dist/filesystem/commit-lock.js.map +0 -1
  107. package/dist/filesystem/dbk-workspace.d.ts +0 -34
  108. package/dist/filesystem/dbk-workspace.d.ts.map +0 -1
  109. package/dist/filesystem/dbk-workspace.js +0 -85
  110. package/dist/filesystem/dbk-workspace.js.map +0 -1
  111. package/dist/filesystem/electron-provider-v2.d.ts +0 -36
  112. package/dist/filesystem/electron-provider-v2.d.ts.map +0 -1
  113. package/dist/filesystem/electron-provider-v2.js +0 -503
  114. package/dist/filesystem/electron-provider-v2.js.map +0 -1
  115. package/dist/filesystem/electron-provider.d.ts +0 -35
  116. package/dist/filesystem/electron-provider.d.ts.map +0 -1
  117. package/dist/filesystem/electron-provider.js +0 -69
  118. package/dist/filesystem/electron-provider.js.map +0 -1
  119. package/dist/filesystem/electron.d.ts.map +0 -1
  120. package/dist/filesystem/file-media-provider.d.ts +0 -23
  121. package/dist/filesystem/file-media-provider.d.ts.map +0 -1
  122. package/dist/filesystem/file-media-provider.js +0 -85
  123. package/dist/filesystem/file-media-provider.js.map +0 -1
  124. package/dist/filesystem/filesystem-content-container.d.ts +0 -24
  125. package/dist/filesystem/filesystem-content-container.d.ts.map +0 -1
  126. package/dist/filesystem/filesystem-content-container.js +0 -153
  127. package/dist/filesystem/filesystem-content-container.js.map +0 -1
  128. package/dist/filesystem/fs-error.d.ts +0 -46
  129. package/dist/filesystem/fs-error.d.ts.map +0 -1
  130. package/dist/filesystem/fs-error.js +0 -170
  131. package/dist/filesystem/fs-error.js.map +0 -1
  132. package/dist/filesystem/index.d.ts.map +0 -1
  133. package/dist/filesystem/indexeddb-content-container.d.ts +0 -22
  134. package/dist/filesystem/indexeddb-content-container.d.ts.map +0 -1
  135. package/dist/filesystem/indexeddb-content-container.js +0 -100
  136. package/dist/filesystem/indexeddb-content-container.js.map +0 -1
  137. package/dist/filesystem/indexeddb-provider-v2.d.ts +0 -96
  138. package/dist/filesystem/indexeddb-provider-v2.d.ts.map +0 -1
  139. package/dist/filesystem/indexeddb-provider-v2.js +0 -1241
  140. package/dist/filesystem/indexeddb-provider-v2.js.map +0 -1
  141. package/dist/filesystem/indexeddb-provider.d.ts +0 -39
  142. package/dist/filesystem/indexeddb-provider.d.ts.map +0 -1
  143. package/dist/filesystem/indexeddb-provider.js +0 -145
  144. package/dist/filesystem/indexeddb-provider.js.map +0 -1
  145. package/dist/filesystem/indexeddb-store.d.ts +0 -34
  146. package/dist/filesystem/indexeddb-store.d.ts.map +0 -1
  147. package/dist/filesystem/indexeddb-store.js +0 -165
  148. package/dist/filesystem/indexeddb-store.js.map +0 -1
  149. package/dist/filesystem/indexeddb.d.ts.map +0 -1
  150. package/dist/filesystem/legacy-v2-adapter.d.ts +0 -62
  151. package/dist/filesystem/legacy-v2-adapter.d.ts.map +0 -1
  152. package/dist/filesystem/legacy-v2-adapter.js +0 -499
  153. package/dist/filesystem/legacy-v2-adapter.js.map +0 -1
  154. package/dist/filesystem/memory-provider-v2.d.ts +0 -92
  155. package/dist/filesystem/memory-provider-v2.d.ts.map +0 -1
  156. package/dist/filesystem/memory-provider-v2.js +0 -615
  157. package/dist/filesystem/memory-provider-v2.js.map +0 -1
  158. package/dist/filesystem/memory-provider.d.ts +0 -54
  159. package/dist/filesystem/memory-provider.d.ts.map +0 -1
  160. package/dist/filesystem/memory-provider.js +0 -132
  161. package/dist/filesystem/memory-provider.js.map +0 -1
  162. package/dist/filesystem/memory.d.ts.map +0 -1
  163. package/dist/filesystem/move-entry.d.ts +0 -9
  164. package/dist/filesystem/move-entry.d.ts.map +0 -1
  165. package/dist/filesystem/move-entry.js +0 -103
  166. package/dist/filesystem/move-entry.js.map +0 -1
  167. package/dist/filesystem/move-error.d.ts +0 -53
  168. package/dist/filesystem/move-error.d.ts.map +0 -1
  169. package/dist/filesystem/move-error.js +0 -99
  170. package/dist/filesystem/move-error.js.map +0 -1
  171. package/dist/filesystem/native-provider-v2.d.ts +0 -75
  172. package/dist/filesystem/native-provider-v2.d.ts.map +0 -1
  173. package/dist/filesystem/native-provider-v2.js +0 -849
  174. package/dist/filesystem/native-provider-v2.js.map +0 -1
  175. package/dist/filesystem/native-provider.d.ts +0 -53
  176. package/dist/filesystem/native-provider.d.ts.map +0 -1
  177. package/dist/filesystem/native-provider.js +0 -471
  178. package/dist/filesystem/native-provider.js.map +0 -1
  179. package/dist/filesystem/native.d.ts.map +0 -1
  180. package/dist/filesystem/types.d.ts +0 -83
  181. package/dist/filesystem/types.d.ts.map +0 -1
  182. package/dist/filesystem/types.js +0 -16
  183. package/dist/filesystem/types.js.map +0 -1
  184. package/dist/filesystem/v2.d.ts +0 -172
  185. package/dist/filesystem/v2.d.ts.map +0 -1
  186. package/dist/filesystem/v2.js +0 -16
  187. package/dist/filesystem/v2.js.map +0 -1
  188. package/dist/filesystem/workspace-path.d.ts +0 -21
  189. package/dist/filesystem/workspace-path.d.ts.map +0 -1
  190. package/dist/filesystem/workspace-path.js +0 -80
  191. package/dist/filesystem/workspace-path.js.map +0 -1
  192. package/dist/host/filesystem-v2.d.ts +0 -45
  193. package/dist/host/filesystem-v2.d.ts.map +0 -1
  194. package/dist/host/filesystem-v2.js +0 -13
  195. package/dist/host/filesystem-v2.js.map +0 -1
  196. package/dist/host/git.d.ts +0 -200
  197. package/dist/host/git.d.ts.map +0 -1
  198. package/dist/host/git.js +0 -15
  199. package/dist/host/git.js.map +0 -1
  200. package/dist/host/index.d.ts.map +0 -1
  201. package/dist/host/types.d.ts +0 -232
  202. package/dist/host/types.d.ts.map +0 -1
  203. package/dist/host/types.js +0 -10
  204. package/dist/host/types.js.map +0 -1
  205. package/dist/host/wire-policy.d.ts +0 -22
  206. package/dist/host/wire-policy.d.ts.map +0 -1
  207. package/dist/host/wire-policy.js +0 -92
  208. package/dist/host/wire-policy.js.map +0 -1
  209. package/dist/index.d.ts.map +0 -1
  210. package/dist/mcp/index.d.ts.map +0 -1
  211. package/dist/mcp/types.d.ts +0 -466
  212. package/dist/mcp/types.d.ts.map +0 -1
  213. package/dist/mcp/types.js +0 -25
  214. package/dist/mcp/types.js.map +0 -1
  215. package/dist/mcp/wire.d.ts +0 -29
  216. package/dist/mcp/wire.d.ts.map +0 -1
  217. package/dist/mcp/wire.js +0 -1046
  218. package/dist/mcp/wire.js.map +0 -1
  219. package/dist/mcp/zod.d.ts.map +0 -1
  220. package/dist/vscode/index.d.ts.map +0 -1
  221. package/dist/vscode/messages.d.ts +0 -204
  222. package/dist/vscode/messages.d.ts.map +0 -1
  223. package/dist/vscode/messages.js +0 -494
  224. package/dist/vscode/messages.js.map +0 -1
  225. package/dist/workspace/index.d.ts.map +0 -1
  226. package/dist/workspace/reconcile-electron.d.ts +0 -19
  227. package/dist/workspace/reconcile-electron.d.ts.map +0 -1
  228. package/dist/workspace/reconcile-electron.js +0 -42
  229. package/dist/workspace/reconcile-electron.js.map +0 -1
  230. package/dist/workspace/types.d.ts +0 -69
  231. package/dist/workspace/types.d.ts.map +0 -1
  232. package/dist/workspace/types.js +0 -2
  233. package/dist/workspace/types.js.map +0 -1
  234. package/dist/workspace/workspace-manager.d.ts +0 -47
  235. package/dist/workspace/workspace-manager.d.ts.map +0 -1
  236. package/dist/workspace/workspace-manager.js +0 -126
  237. package/dist/workspace/workspace-manager.js.map +0 -1
  238. package/src/document/document-session.ts +0 -834
  239. package/src/document/filesystem-target.ts +0 -109
  240. package/src/document/index.ts +0 -41
  241. package/src/document/recovery-journal.ts +0 -536
  242. package/src/document/types.ts +0 -116
  243. package/src/filesystem/commit-lock.ts +0 -29
  244. package/src/filesystem/dbk-workspace.ts +0 -135
  245. package/src/filesystem/electron-provider-v2.ts +0 -630
  246. package/src/filesystem/electron-provider.ts +0 -99
  247. package/src/filesystem/electron.ts +0 -3
  248. package/src/filesystem/file-media-provider.ts +0 -103
  249. package/src/filesystem/filesystem-content-container.ts +0 -164
  250. package/src/filesystem/fs-error.ts +0 -234
  251. package/src/filesystem/index.ts +0 -143
  252. package/src/filesystem/indexeddb-content-container.ts +0 -112
  253. package/src/filesystem/indexeddb-provider-v2.ts +0 -1740
  254. package/src/filesystem/indexeddb-provider.ts +0 -171
  255. package/src/filesystem/indexeddb-store.ts +0 -207
  256. package/src/filesystem/indexeddb.ts +0 -12
  257. package/src/filesystem/legacy-v2-adapter.ts +0 -779
  258. package/src/filesystem/memory-provider-v2.ts +0 -896
  259. package/src/filesystem/memory-provider.ts +0 -180
  260. package/src/filesystem/memory.ts +0 -15
  261. package/src/filesystem/move-entry.ts +0 -142
  262. package/src/filesystem/move-error.ts +0 -159
  263. package/src/filesystem/native-provider-v2.ts +0 -1165
  264. package/src/filesystem/native-provider.ts +0 -537
  265. package/src/filesystem/native.ts +0 -16
  266. package/src/filesystem/types.ts +0 -114
  267. package/src/filesystem/v2.ts +0 -231
  268. package/src/filesystem/workspace-path.ts +0 -92
  269. package/src/host/filesystem-v2.ts +0 -104
  270. package/src/host/git.ts +0 -246
  271. package/src/host/index.ts +0 -93
  272. package/src/host/types.ts +0 -274
  273. package/src/host/wire-policy.ts +0 -103
  274. package/src/index.ts +0 -10
  275. package/src/mcp/index.ts +0 -3
  276. package/src/mcp/types.ts +0 -594
  277. package/src/mcp/wire.ts +0 -1280
  278. package/src/mcp/zod.ts +0 -1000
  279. package/src/vscode/index.ts +0 -2
  280. package/src/vscode/messages.ts +0 -704
  281. package/src/workspace/index.ts +0 -17
  282. package/src/workspace/reconcile-electron.ts +0 -65
  283. package/src/workspace/types.ts +0 -67
  284. package/src/workspace/workspace-manager.ts +0 -151
  285. /package/dist/{chunk-75UUF6C4.js.map → chunk-B56KWCSE.js.map} +0 -0
  286. /package/dist/{chunk-EGNDADXB.js.map → chunk-MNSZ7EZN.js.map} +0 -0
@@ -1,494 +0,0 @@
1
- /**
2
- * Typed message protocol between the extension host and webview.
3
- */
4
- import { HOST_WIRE_LIMITS, isBoundedString } from '../host/wire-policy.js';
5
- const MAX_REQUEST_ID = 2147483647;
6
- export const DOCBLOCKS_ACCENT_COLORS = [
7
- 'brown',
8
- 'green',
9
- 'blue',
10
- 'purple',
11
- 'maroon',
12
- 'orange',
13
- 'gray',
14
- ];
15
- /**
16
- * The webview boundary is untrusted at runtime. Keep malformed or stale
17
- * messages out of the document session instead of relying on a TypeScript
18
- * assertion in the extension host.
19
- */
20
- export function parseWebviewToExtensionMessage(value) {
21
- if (!isRecord(value) || typeof value.type !== 'string')
22
- return null;
23
- switch (value.type) {
24
- case 'ready':
25
- return hasOnlyKeys(value, ['type']) ? { type: 'ready' } : null;
26
- case 'setAutoSave':
27
- return hasOnlyKeys(value, ['type', 'enabled']) && typeof value.enabled === 'boolean'
28
- ? { type: 'setAutoSave', enabled: value.enabled }
29
- : null;
30
- case 'setAccentColor':
31
- return hasOnlyKeys(value, ['type', 'accentColor']) &&
32
- isDocBlocksAccentColor(value.accentColor)
33
- ? { type: 'setAccentColor', accentColor: value.accentColor }
34
- : null;
35
- case 'edit':
36
- return hasOnlyKeys(value, [
37
- 'type',
38
- 'content',
39
- 'sessionId',
40
- 'clientRevision',
41
- 'baseDocumentVersion',
42
- ]) &&
43
- hasBoundedString(value, 'content', HOST_WIRE_LIMITS.documentCharacters) &&
44
- isSessionEnvelope(value)
45
- ? {
46
- type: 'edit',
47
- content: value.content,
48
- sessionId: value.sessionId,
49
- clientRevision: value.clientRevision,
50
- baseDocumentVersion: value.baseDocumentVersion,
51
- }
52
- : null;
53
- case 'save':
54
- return hasOnlyKeys(value, [
55
- 'type',
56
- 'sessionId',
57
- 'requestId',
58
- 'clientRevision',
59
- 'baseDocumentVersion',
60
- ]) &&
61
- isSessionEnvelope(value) &&
62
- hasRequestId(value)
63
- ? {
64
- type: 'save',
65
- sessionId: value.sessionId,
66
- requestId: value.requestId,
67
- clientRevision: value.clientRevision,
68
- baseDocumentVersion: value.baseDocumentVersion,
69
- }
70
- : null;
71
- case 'resolveConflict':
72
- return hasOnlyKeys(value, ['type', 'sessionId', 'choice']) &&
73
- hasBoundedString(value, 'sessionId', HOST_WIRE_LIMITS.identifierCharacters, 1) &&
74
- (value.choice === 'use-local' || value.choice === 'use-external')
75
- ? { type: 'resolveConflict', sessionId: value.sessionId, choice: value.choice }
76
- : null;
77
- case 'resolveMedia':
78
- return hasOnlyKeys(value, ['type', 'requestId', 'ref']) &&
79
- hasRequestId(value) &&
80
- hasBoundedString(value, 'ref', HOST_WIRE_LIMITS.pathCharacters, 1)
81
- ? { type: 'resolveMedia', requestId: value.requestId, ref: value.ref }
82
- : null;
83
- case 'listMedia':
84
- return hasOnlyKeys(value, ['type', 'requestId']) && hasRequestId(value)
85
- ? { type: 'listMedia', requestId: value.requestId }
86
- : null;
87
- case 'addMedia':
88
- return hasOnlyKeys(value, ['type', 'requestId', 'name', 'dataBase64', 'mimeType']) &&
89
- hasRequestId(value) &&
90
- hasBoundedString(value, 'name', HOST_WIRE_LIMITS.pathCharacters, 1) &&
91
- hasBoundedString(value, 'dataBase64', HOST_WIRE_LIMITS.base64Characters) &&
92
- hasMimeType(value, 'mimeType')
93
- ? {
94
- type: 'addMedia',
95
- requestId: value.requestId,
96
- name: value.name,
97
- dataBase64: value.dataBase64,
98
- mimeType: value.mimeType,
99
- }
100
- : null;
101
- case 'removeMedia':
102
- return hasOnlyKeys(value, ['type', 'requestId', 'ref']) &&
103
- hasRequestId(value) &&
104
- hasBoundedString(value, 'ref', HOST_WIRE_LIMITS.pathCharacters, 1)
105
- ? { type: 'removeMedia', requestId: value.requestId, ref: value.ref }
106
- : null;
107
- case 'saveExport':
108
- return hasOnlyKeys(value, [
109
- 'type',
110
- 'requestId',
111
- 'filename',
112
- 'dataBase64',
113
- 'mimeType',
114
- 'grantId',
115
- ]) &&
116
- hasRequestId(value) &&
117
- hasSafeFilename(value, 'filename') &&
118
- hasBoundedString(value, 'dataBase64', HOST_WIRE_LIMITS.base64Characters) &&
119
- hasMimeType(value, 'mimeType') &&
120
- hasNullableBoundedString(value, 'grantId', HOST_WIRE_LIMITS.identifierCharacters, 1)
121
- ? {
122
- type: 'saveExport',
123
- requestId: value.requestId,
124
- filename: value.filename,
125
- dataBase64: value.dataBase64,
126
- mimeType: value.mimeType,
127
- grantId: value.grantId,
128
- }
129
- : null;
130
- case 'resolveExportTarget':
131
- return hasOnlyKeys(value, ['type', 'requestId', 'filename']) &&
132
- hasRequestId(value) &&
133
- hasSafeFilename(value, 'filename')
134
- ? { type: 'resolveExportTarget', requestId: value.requestId, filename: value.filename }
135
- : null;
136
- case 'pickExportTarget':
137
- return hasOnlyKeys(value, ['type', 'requestId', 'filename', 'currentGrantId']) &&
138
- hasRequestId(value) &&
139
- hasSafeFilename(value, 'filename') &&
140
- hasNullableBoundedString(value, 'currentGrantId', HOST_WIRE_LIMITS.identifierCharacters, 1)
141
- ? {
142
- type: 'pickExportTarget',
143
- requestId: value.requestId,
144
- filename: value.filename,
145
- currentGrantId: value.currentGrantId,
146
- }
147
- : null;
148
- case 'readWorkspaceFile':
149
- return hasOnlyKeys(value, ['type', 'requestId', 'path']) &&
150
- hasRequestId(value) &&
151
- hasBoundedString(value, 'path', HOST_WIRE_LIMITS.pathCharacters, 1)
152
- ? { type: 'readWorkspaceFile', requestId: value.requestId, path: value.path }
153
- : null;
154
- default:
155
- return null;
156
- }
157
- }
158
- /**
159
- * Validate host responses before they influence webview state. This protects
160
- * the browser side from protocol drift and from messages injected by another
161
- * script in the webview document; a TypeScript MessageEvent annotation is not
162
- * runtime validation.
163
- */
164
- export function parseExtensionToWebviewMessage(value) {
165
- if (!isRecord(value) || typeof value.type !== 'string')
166
- return null;
167
- switch (value.type) {
168
- case 'setContent':
169
- return hasOnlyKeys(value, [
170
- 'type',
171
- 'content',
172
- 'documentVersion',
173
- 'fileName',
174
- 'sessionId',
175
- 'sessionRevision',
176
- 'acknowledgedClientRevision',
177
- ]) &&
178
- hasBoundedString(value, 'content', HOST_WIRE_LIMITS.documentCharacters) &&
179
- hasNonNegativeInteger(value, 'documentVersion') &&
180
- hasBoundedString(value, 'fileName', HOST_WIRE_LIMITS.pathCharacters, 1) &&
181
- hasBoundedString(value, 'sessionId', HOST_WIRE_LIMITS.identifierCharacters, 1) &&
182
- hasNonNegativeInteger(value, 'sessionRevision') &&
183
- hasNonNegativeInteger(value, 'acknowledgedClientRevision')
184
- ? {
185
- type: 'setContent',
186
- content: value.content,
187
- documentVersion: value.documentVersion,
188
- fileName: value.fileName,
189
- sessionId: value.sessionId,
190
- sessionRevision: value.sessionRevision,
191
- acknowledgedClientRevision: value.acknowledgedClientRevision,
192
- }
193
- : null;
194
- case 'editAcknowledged':
195
- return hasOnlyKeys(value, [
196
- 'type',
197
- 'sessionId',
198
- 'clientRevision',
199
- 'sessionRevision',
200
- 'accepted',
201
- 'message',
202
- ]) &&
203
- hasBoundedString(value, 'sessionId', HOST_WIRE_LIMITS.identifierCharacters, 1) &&
204
- hasNonNegativeInteger(value, 'clientRevision') &&
205
- hasNonNegativeInteger(value, 'sessionRevision') &&
206
- typeof value.accepted === 'boolean' &&
207
- hasNullableBoundedString(value, 'message', HOST_WIRE_LIMITS.messageCharacters)
208
- ? {
209
- type: 'editAcknowledged',
210
- sessionId: value.sessionId,
211
- clientRevision: value.clientRevision,
212
- sessionRevision: value.sessionRevision,
213
- accepted: value.accepted,
214
- message: value.message,
215
- }
216
- : null;
217
- case 'sessionState': {
218
- if (!hasOnlyKeys(value, [
219
- 'type',
220
- 'sessionId',
221
- 'status',
222
- 'revision',
223
- 'persistedRevision',
224
- 'acknowledgedClientRevision',
225
- 'documentVersion',
226
- 'error',
227
- 'conflict',
228
- ]) ||
229
- !hasBoundedString(value, 'sessionId', HOST_WIRE_LIMITS.identifierCharacters, 1) ||
230
- !isDocumentSessionMessageStatus(value.status) ||
231
- !hasNonNegativeInteger(value, 'revision') ||
232
- !hasNonNegativeInteger(value, 'persistedRevision') ||
233
- value.persistedRevision > value.revision ||
234
- !hasNonNegativeInteger(value, 'acknowledgedClientRevision') ||
235
- !hasNonNegativeInteger(value, 'documentVersion') ||
236
- !hasNullableBoundedString(value, 'error', HOST_WIRE_LIMITS.messageCharacters)) {
237
- return null;
238
- }
239
- const conflict = parseDocumentConflictDetails(value.conflict);
240
- if (conflict === undefined ||
241
- (value.status === 'conflict' && conflict === null) ||
242
- (value.status !== 'conflict' && conflict !== null)) {
243
- return null;
244
- }
245
- return {
246
- type: 'sessionState',
247
- sessionId: value.sessionId,
248
- status: value.status,
249
- revision: value.revision,
250
- persistedRevision: value.persistedRevision,
251
- acknowledgedClientRevision: value.acknowledgedClientRevision,
252
- documentVersion: value.documentVersion,
253
- error: value.error,
254
- conflict,
255
- };
256
- }
257
- case 'saveResult':
258
- return hasOnlyKeys(value, [
259
- 'type',
260
- 'sessionId',
261
- 'requestId',
262
- 'ok',
263
- 'revision',
264
- 'persistedRevision',
265
- 'documentVersion',
266
- 'message',
267
- ]) &&
268
- hasBoundedString(value, 'sessionId', HOST_WIRE_LIMITS.identifierCharacters, 1) &&
269
- hasRequestId(value) &&
270
- typeof value.ok === 'boolean' &&
271
- hasNonNegativeInteger(value, 'revision') &&
272
- hasNonNegativeInteger(value, 'persistedRevision') &&
273
- value.persistedRevision <= value.revision &&
274
- hasNonNegativeInteger(value, 'documentVersion') &&
275
- hasNullableBoundedString(value, 'message', HOST_WIRE_LIMITS.messageCharacters)
276
- ? {
277
- type: 'saveResult',
278
- sessionId: value.sessionId,
279
- requestId: value.requestId,
280
- ok: value.ok,
281
- revision: value.revision,
282
- persistedRevision: value.persistedRevision,
283
- documentVersion: value.documentVersion,
284
- message: value.message,
285
- }
286
- : null;
287
- case 'themeChange':
288
- return hasOnlyKeys(value, ['type', 'theme']) &&
289
- (value.theme === 'light' || value.theme === 'dark')
290
- ? { type: 'themeChange', theme: value.theme }
291
- : null;
292
- case 'editorSettings': {
293
- if (!hasOnlyKeys(value, ['type', 'settings']))
294
- return null;
295
- const settings = parseVscodeEditorSettings(value.settings);
296
- return settings ? { type: 'editorSettings', settings } : null;
297
- }
298
- case 'mediaResolved':
299
- return hasOnlyKeys(value, ['type', 'requestId', 'url']) &&
300
- hasRequestId(value) &&
301
- isBoundedMediaDataUrl(value.url)
302
- ? { type: 'mediaResolved', requestId: value.requestId, url: value.url }
303
- : null;
304
- case 'mediaListed': {
305
- if (!hasOnlyKeys(value, ['type', 'requestId', 'entries']) || !hasRequestId(value)) {
306
- return null;
307
- }
308
- const entries = parseMediaEntries(value.entries);
309
- return entries ? { type: 'mediaListed', requestId: value.requestId, entries } : null;
310
- }
311
- case 'mediaAdded':
312
- return hasOnlyKeys(value, ['type', 'requestId', 'path']) &&
313
- hasRequestId(value) &&
314
- hasBoundedString(value, 'path', HOST_WIRE_LIMITS.pathCharacters, 1)
315
- ? { type: 'mediaAdded', requestId: value.requestId, path: value.path }
316
- : null;
317
- case 'mediaRemoved':
318
- return hasOnlyKeys(value, ['type', 'requestId']) && hasRequestId(value)
319
- ? { type: 'mediaRemoved', requestId: value.requestId }
320
- : null;
321
- case 'mediaError':
322
- case 'exportError':
323
- case 'workspaceFileError':
324
- return hasOnlyKeys(value, ['type', 'requestId', 'message']) &&
325
- hasRequestId(value) &&
326
- hasBoundedString(value, 'message', HOST_WIRE_LIMITS.messageCharacters, 1)
327
- ? { type: value.type, requestId: value.requestId, message: value.message }
328
- : null;
329
- case 'exportSaved':
330
- case 'exportTargetResolved':
331
- case 'exportTargetPicked': {
332
- if (!hasOnlyKeys(value, ['type', 'requestId', 'target']) || !hasRequestId(value)) {
333
- return null;
334
- }
335
- const target = parseExportTargetGrant(value.target);
336
- return target !== undefined ? { type: value.type, requestId: value.requestId, target } : null;
337
- }
338
- case 'workspaceFileRead':
339
- return hasOnlyKeys(value, ['type', 'requestId', 'dataBase64']) &&
340
- hasRequestId(value) &&
341
- hasNullableBoundedString(value, 'dataBase64', HOST_WIRE_LIMITS.base64Characters)
342
- ? { type: 'workspaceFileRead', requestId: value.requestId, dataBase64: value.dataBase64 }
343
- : null;
344
- default:
345
- return null;
346
- }
347
- }
348
- function parseExportTargetGrant(value) {
349
- if (value === null)
350
- return null;
351
- if (!isRecord(value) ||
352
- !hasOnlyKeys(value, ['grantId', 'displayLabel']) ||
353
- !hasBoundedString(value, 'grantId', HOST_WIRE_LIMITS.identifierCharacters, 1) ||
354
- !hasBoundedString(value, 'displayLabel', HOST_WIRE_LIMITS.pathCharacters, 1)) {
355
- return undefined;
356
- }
357
- return { grantId: value.grantId, displayLabel: value.displayLabel };
358
- }
359
- function parseDocumentConflictDetails(value) {
360
- if (value === null)
361
- return null;
362
- if (!isRecord(value) ||
363
- !hasOnlyKeys(value, [
364
- 'localBaseDocumentVersion',
365
- 'externalDocumentVersion',
366
- 'localBytes',
367
- 'externalBytes',
368
- 'localEditedAt',
369
- 'externalObservedAt',
370
- 'externalIsDirty',
371
- ]) ||
372
- !hasNonNegativeInteger(value, 'localBaseDocumentVersion') ||
373
- !hasNonNegativeInteger(value, 'externalDocumentVersion') ||
374
- !hasNonNegativeInteger(value, 'localBytes') ||
375
- !isNullableNonNegativeInteger(value.externalBytes) ||
376
- !isNullableNonNegativeInteger(value.localEditedAt) ||
377
- !isNullableNonNegativeInteger(value.externalObservedAt) ||
378
- (value.externalIsDirty !== null && typeof value.externalIsDirty !== 'boolean')) {
379
- return undefined;
380
- }
381
- return {
382
- localBaseDocumentVersion: value.localBaseDocumentVersion,
383
- externalDocumentVersion: value.externalDocumentVersion,
384
- localBytes: value.localBytes,
385
- externalBytes: value.externalBytes,
386
- localEditedAt: value.localEditedAt,
387
- externalObservedAt: value.externalObservedAt,
388
- externalIsDirty: value.externalIsDirty,
389
- };
390
- }
391
- function parseVscodeEditorSettings(value) {
392
- if (!isRecord(value) ||
393
- !hasOnlyKeys(value, ['autoSave', 'accentColor']) ||
394
- typeof value.autoSave !== 'boolean' ||
395
- !isDocBlocksAccentColor(value.accentColor)) {
396
- return null;
397
- }
398
- return { autoSave: value.autoSave, accentColor: value.accentColor };
399
- }
400
- export function isDocBlocksAccentColor(value) {
401
- return DOCBLOCKS_ACCENT_COLORS.some((color) => color === value);
402
- }
403
- function parseMediaEntries(value) {
404
- if (!Array.isArray(value) || value.length > HOST_WIRE_LIMITS.arrayEntries)
405
- return null;
406
- const entries = [];
407
- for (const entry of value) {
408
- if (!isRecord(entry) ||
409
- !hasOnlyKeys(entry, ['name', 'mimeType', 'size']) ||
410
- !hasBoundedString(entry, 'name', HOST_WIRE_LIMITS.pathCharacters, 1) ||
411
- !hasMimeType(entry, 'mimeType') ||
412
- !hasNonNegativeInteger(entry, 'size') ||
413
- entry.size > HOST_WIRE_LIMITS.binaryBytes) {
414
- return null;
415
- }
416
- entries.push({ name: entry.name, mimeType: entry.mimeType, size: entry.size });
417
- }
418
- return entries;
419
- }
420
- function isBoundedMediaDataUrl(value) {
421
- if (!isBoundedString(value, HOST_WIRE_LIMITS.base64Characters + 512, 1))
422
- return false;
423
- if (!value.startsWith('data:'))
424
- return false;
425
- const separator = value.indexOf(';base64,');
426
- return separator > 5 && separator <= HOST_WIRE_LIMITS.identifierCharacters;
427
- }
428
- function isDocumentSessionMessageStatus(value) {
429
- return (value === 'idle' ||
430
- value === 'saved' ||
431
- value === 'dirty' ||
432
- value === 'saving' ||
433
- value === 'error' ||
434
- value === 'conflict' ||
435
- value === 'closed');
436
- }
437
- function isSessionEnvelope(value) {
438
- return (hasBoundedString(value, 'sessionId', HOST_WIRE_LIMITS.identifierCharacters, 1) &&
439
- hasNonNegativeInteger(value, 'clientRevision') &&
440
- hasNonNegativeInteger(value, 'baseDocumentVersion'));
441
- }
442
- function hasRequestId(value) {
443
- return hasNonNegativeInteger(value, 'requestId') && value.requestId <= MAX_REQUEST_ID;
444
- }
445
- function hasBoundedString(value, key, maximumCharacters, minimumCharacters = 0) {
446
- return isBoundedString(value[key], maximumCharacters, minimumCharacters);
447
- }
448
- function hasNullableBoundedString(value, key, maximumCharacters, minimumCharacters = 0) {
449
- return value[key] === null || isBoundedString(value[key], maximumCharacters, minimumCharacters);
450
- }
451
- function hasNonNegativeInteger(value, key) {
452
- const entry = value[key];
453
- return typeof entry === 'number' && Number.isSafeInteger(entry) && entry >= 0;
454
- }
455
- function isNullableNonNegativeInteger(value) {
456
- return value === null || (typeof value === 'number' && Number.isSafeInteger(value) && value >= 0);
457
- }
458
- function isRecord(value) {
459
- return typeof value === 'object' && value !== null && !Array.isArray(value);
460
- }
461
- function hasOnlyKeys(value, keys) {
462
- const expected = new Set(keys);
463
- const actual = Object.keys(value);
464
- return actual.length === expected.size && actual.every((key) => expected.has(key));
465
- }
466
- function hasSafeFilename(value, key) {
467
- return isSafeExportFilename(value[key]);
468
- }
469
- export function isSafeExportFilename(value) {
470
- return (isBoundedString(value, 255, 1) &&
471
- value.trim() === value &&
472
- !/[\\/:*?"<>|]/.test(value) &&
473
- !hasControlCharacter(value) &&
474
- value !== '.' &&
475
- value !== '..' &&
476
- !value.endsWith('.') &&
477
- !value.endsWith(' '));
478
- }
479
- function hasControlCharacter(value) {
480
- for (let index = 0; index < value.length; index += 1) {
481
- const code = value.charCodeAt(index);
482
- if (code <= 0x1f || code === 0x7f)
483
- return true;
484
- }
485
- return false;
486
- }
487
- function hasMimeType(value, key) {
488
- return isSafeMimeType(value[key]);
489
- }
490
- export function isSafeMimeType(value) {
491
- return (isBoundedString(value, HOST_WIRE_LIMITS.identifierCharacters, 1) &&
492
- /^[A-Za-z0-9!#$&^_.+-]+\/[A-Za-z0-9!#$&^_.+-]+(?:\s*;\s*[A-Za-z0-9!#$&^_.+-]+=[^;\r\n]+)*$/.test(value));
493
- }
494
- //# sourceMappingURL=messages.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/vscode/messages.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workspace/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEvE,OAAO,EACL,cAAc,EACd,YAAY,EACZ,aAAa,EACb,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,0BAA0B,EAC1B,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,qCAAqC,EACrC,KAAK,+BAA+B,GACrC,MAAM,yBAAyB,CAAC"}
@@ -1,19 +0,0 @@
1
- import type { ElectronWorkspaceInfo, HostEnvironment } from '../host/types.js';
2
- import type { WorkspaceDescriptor } from './types.js';
3
- export interface ElectronWorkspaceReconciliation {
4
- /** Obsolete renderer descriptors to remove before attempting restoration. */
5
- readonly removeIds: readonly string[];
6
- /** Canonical main-authorized descriptors to insert or replace. */
7
- readonly upsert: readonly WorkspaceDescriptor[];
8
- /** Safe navigation migration for a local descriptor matched by root. */
9
- readonly idRemap: Readonly<Record<string, string>>;
10
- }
11
- /**
12
- * Reconcile renderer IndexedDB metadata with the main process authority list.
13
- * `hostWorkspaces` is authoritative: local Electron descriptors absent from
14
- * it cannot be opened safely and are removed. Root-path matching carries user
15
- * metadata across an id migration without treating that display path as
16
- * authority.
17
- */
18
- export declare function reconcileElectronWorkspaceDescriptors(local: readonly WorkspaceDescriptor[], hostWorkspaces: readonly ElectronWorkspaceInfo[], platform: HostEnvironment['platform'], now: string): ElectronWorkspaceReconciliation;
19
- //# sourceMappingURL=reconcile-electron.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reconcile-electron.d.ts","sourceRoot":"","sources":["../../src/workspace/reconcile-electron.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC/E,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,WAAW,+BAA+B;IAC9C,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAChD,wEAAwE;IACxE,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACpD;AAOD;;;;;;GAMG;AACH,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,SAAS,mBAAmB,EAAE,EACrC,cAAc,EAAE,SAAS,qBAAqB,EAAE,EAChD,QAAQ,EAAE,eAAe,CAAC,UAAU,CAAC,EACrC,GAAG,EAAE,MAAM,GACV,+BAA+B,CAmCjC"}
@@ -1,42 +0,0 @@
1
- function comparableRoot(rootPath, platform) {
2
- const normalized = rootPath.replace(/\\/gu, '/').replace(/\/+$/gu, '');
3
- return platform === 'win32' ? normalized.toLowerCase() : normalized;
4
- }
5
- /**
6
- * Reconcile renderer IndexedDB metadata with the main process authority list.
7
- * `hostWorkspaces` is authoritative: local Electron descriptors absent from
8
- * it cannot be opened safely and are removed. Root-path matching carries user
9
- * metadata across an id migration without treating that display path as
10
- * authority.
11
- */
12
- export function reconcileElectronWorkspaceDescriptors(local, hostWorkspaces, platform, now) {
13
- const electron = local.filter((workspace) => workspace.type === 'electron-native');
14
- const matchedLocalIds = new Set();
15
- const idRemap = {};
16
- const upsert = hostWorkspaces.map((hostWorkspace) => {
17
- const root = comparableRoot(hostWorkspace.rootPath, platform);
18
- const candidates = electron.filter((workspace) => workspace.rootPath && comparableRoot(workspace.rootPath, platform) === root);
19
- const matching = candidates.sort((left, right) => right.lastOpened.localeCompare(left.lastOpened))[0];
20
- if (matching) {
21
- matchedLocalIds.add(matching.id);
22
- if (matching.id !== hostWorkspace.id)
23
- idRemap[matching.id] = hostWorkspace.id;
24
- }
25
- return {
26
- id: hostWorkspace.id,
27
- name: matching?.name ?? hostWorkspace.name,
28
- type: 'electron-native',
29
- rootPath: hostWorkspace.rootPath,
30
- lastOpened: matching?.lastOpened ?? now,
31
- ...(matching?.versioningOverride ? { versioningOverride: matching.versioningOverride } : {}),
32
- };
33
- });
34
- const canonicalIds = new Set(hostWorkspaces.map((workspace) => workspace.id));
35
- const removeIds = electron
36
- .filter((workspace) => !canonicalIds.has(workspace.id) ||
37
- (matchedLocalIds.has(workspace.id) &&
38
- !upsert.some((candidate) => candidate.id === workspace.id)))
39
- .map((workspace) => workspace.id);
40
- return { removeIds, upsert, idRemap };
41
- }
42
- //# sourceMappingURL=reconcile-electron.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"reconcile-electron.js","sourceRoot":"","sources":["../../src/workspace/reconcile-electron.ts"],"names":[],"mappings":"AAYA,SAAS,cAAc,CAAC,QAAgB,EAAE,QAAqC;IAC7E,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IACvE,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qCAAqC,CACnD,KAAqC,EACrC,cAAgD,EAChD,QAAqC,EACrC,GAAW;IAEX,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,iBAAiB,CAAC,CAAC;IACnF,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAC1C,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC,aAAa,EAAuB,EAAE;QACvE,MAAM,IAAI,GAAG,cAAc,CAAC,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAChC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,IAAI,cAAc,CAAC,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,IAAI,CAC3F,CAAC;QACF,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC/C,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,CAChD,CAAC,CAAC,CAAC,CAAC;QACL,IAAI,QAAQ,EAAE,CAAC;YACb,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACjC,IAAI,QAAQ,CAAC,EAAE,KAAK,aAAa,CAAC,EAAE;gBAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,EAAE,CAAC;QAChF,CAAC;QACD,OAAO;YACL,EAAE,EAAE,aAAa,CAAC,EAAE;YACpB,IAAI,EAAE,QAAQ,EAAE,IAAI,IAAI,aAAa,CAAC,IAAI;YAC1C,IAAI,EAAE,iBAAiB;YACvB,QAAQ,EAAE,aAAa,CAAC,QAAQ;YAChC,UAAU,EAAE,QAAQ,EAAE,UAAU,IAAI,GAAG;YACvC,GAAG,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7F,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,QAAQ;SACvB,MAAM,CACL,CAAC,SAAS,EAAE,EAAE,CACZ,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QAC/B,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAChC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC,CAChE;SACA,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACpC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AACxC,CAAC"}