@plumix/core 0.5.0 → 0.7.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 (454) hide show
  1. package/dist/cache/embedded-tags.d.ts +5 -0
  2. package/dist/cache/embedded-tags.d.ts.map +1 -0
  3. package/dist/cache/embedded-tags.js +30 -0
  4. package/dist/cache/embedded-tags.js.map +1 -0
  5. package/dist/context/app.d.ts +12 -0
  6. package/dist/context/app.d.ts.map +1 -1
  7. package/dist/context/app.js +10 -4
  8. package/dist/context/app.js.map +1 -1
  9. package/dist/context/memo.d.ts +22 -0
  10. package/dist/context/memo.d.ts.map +1 -0
  11. package/dist/context/memo.js +27 -0
  12. package/dist/context/memo.js.map +1 -0
  13. package/dist/context/traced-slots.d.ts +17 -0
  14. package/dist/context/traced-slots.d.ts.map +1 -0
  15. package/dist/context/traced-slots.js +57 -0
  16. package/dist/context/traced-slots.js.map +1 -0
  17. package/dist/entries/read-service.d.ts +6 -0
  18. package/dist/entries/read-service.d.ts.map +1 -1
  19. package/dist/entries/read-service.js +19 -3
  20. package/dist/entries/read-service.js.map +1 -1
  21. package/dist/index.d.ts +6 -1
  22. package/dist/index.d.ts.map +1 -1
  23. package/dist/index.js +3 -0
  24. package/dist/index.js.map +1 -1
  25. package/dist/plugin/errors.d.ts +7 -1
  26. package/dist/plugin/errors.d.ts.map +1 -1
  27. package/dist/plugin/errors.js +5 -0
  28. package/dist/plugin/errors.js.map +1 -1
  29. package/dist/plugin/fields/builder.d.ts +106 -0
  30. package/dist/plugin/fields/builder.d.ts.map +1 -0
  31. package/dist/plugin/fields/builder.js +162 -0
  32. package/dist/plugin/fields/builder.js.map +1 -0
  33. package/dist/plugin/fields/color.d.ts +78 -18
  34. package/dist/plugin/fields/color.d.ts.map +1 -1
  35. package/dist/plugin/fields/color.js +116 -25
  36. package/dist/plugin/fields/color.js.map +1 -1
  37. package/dist/plugin/fields/condition.d.ts +40 -0
  38. package/dist/plugin/fields/condition.d.ts.map +1 -0
  39. package/dist/plugin/fields/condition.js +115 -0
  40. package/dist/plugin/fields/condition.js.map +1 -0
  41. package/dist/plugin/fields/contributions.d.ts +233 -0
  42. package/dist/plugin/fields/contributions.d.ts.map +1 -0
  43. package/dist/plugin/fields/contributions.js +1 -0
  44. package/dist/plugin/fields/contributions.js.map +1 -0
  45. package/dist/plugin/fields/entry.d.ts +24 -20
  46. package/dist/plugin/fields/entry.d.ts.map +1 -1
  47. package/dist/plugin/fields/entry.js +13 -21
  48. package/dist/plugin/fields/entry.js.map +1 -1
  49. package/dist/plugin/fields/errors.d.ts +23 -11
  50. package/dist/plugin/fields/errors.d.ts.map +1 -1
  51. package/dist/plugin/fields/errors.js +20 -13
  52. package/dist/plugin/fields/errors.js.map +1 -1
  53. package/dist/plugin/fields/group.d.ts +90 -0
  54. package/dist/plugin/fields/group.d.ts.map +1 -0
  55. package/dist/plugin/fields/group.js +124 -0
  56. package/dist/plugin/fields/group.js.map +1 -0
  57. package/dist/plugin/fields/index.d.ts +22 -45
  58. package/dist/plugin/fields/index.d.ts.map +1 -1
  59. package/dist/plugin/fields/index.js +25 -30
  60. package/dist/plugin/fields/index.js.map +1 -1
  61. package/dist/plugin/fields/json.d.ts +71 -9
  62. package/dist/plugin/fields/json.d.ts.map +1 -1
  63. package/dist/plugin/fields/json.js +110 -16
  64. package/dist/plugin/fields/json.js.map +1 -1
  65. package/dist/plugin/fields/link.d.ts +96 -0
  66. package/dist/plugin/fields/link.d.ts.map +1 -0
  67. package/dist/plugin/fields/link.js +160 -0
  68. package/dist/plugin/fields/link.js.map +1 -0
  69. package/dist/plugin/fields/number.d.ts +86 -13
  70. package/dist/plugin/fields/number.d.ts.map +1 -1
  71. package/dist/plugin/fields/number.js +133 -20
  72. package/dist/plugin/fields/number.js.map +1 -1
  73. package/dist/plugin/fields/range.d.ts +101 -17
  74. package/dist/plugin/fields/range.d.ts.map +1 -1
  75. package/dist/plugin/fields/range.js +153 -38
  76. package/dist/plugin/fields/range.js.map +1 -1
  77. package/dist/plugin/fields/reference.d.ts +171 -0
  78. package/dist/plugin/fields/reference.d.ts.map +1 -0
  79. package/dist/plugin/fields/reference.js +193 -0
  80. package/dist/plugin/fields/reference.js.map +1 -0
  81. package/dist/plugin/fields/repeater.d.ts +111 -8
  82. package/dist/plugin/fields/repeater.d.ts.map +1 -1
  83. package/dist/plugin/fields/repeater.js +157 -66
  84. package/dist/plugin/fields/repeater.js.map +1 -1
  85. package/dist/plugin/fields/richtext-validate.d.ts +7 -0
  86. package/dist/plugin/fields/richtext-validate.d.ts.map +1 -1
  87. package/dist/plugin/fields/richtext-validate.js +11 -5
  88. package/dist/plugin/fields/richtext-validate.js.map +1 -1
  89. package/dist/plugin/fields/richtext.d.ts +78 -12
  90. package/dist/plugin/fields/richtext.d.ts.map +1 -1
  91. package/dist/plugin/fields/richtext.js +121 -26
  92. package/dist/plugin/fields/richtext.js.map +1 -1
  93. package/dist/plugin/fields/select.d.ts +150 -10
  94. package/dist/plugin/fields/select.d.ts.map +1 -1
  95. package/dist/plugin/fields/select.js +205 -17
  96. package/dist/plugin/fields/select.js.map +1 -1
  97. package/dist/plugin/fields/sub-fields.d.ts +12 -0
  98. package/dist/plugin/fields/sub-fields.d.ts.map +1 -0
  99. package/dist/plugin/fields/sub-fields.js +62 -0
  100. package/dist/plugin/fields/sub-fields.js.map +1 -0
  101. package/dist/plugin/fields/temporal.d.ts +124 -0
  102. package/dist/plugin/fields/temporal.d.ts.map +1 -0
  103. package/dist/plugin/fields/temporal.js +180 -0
  104. package/dist/plugin/fields/temporal.js.map +1 -0
  105. package/dist/plugin/fields/term.d.ts +11 -16
  106. package/dist/plugin/fields/term.d.ts.map +1 -1
  107. package/dist/plugin/fields/term.js +11 -19
  108. package/dist/plugin/fields/term.js.map +1 -1
  109. package/dist/plugin/fields/toggle.d.ts +97 -0
  110. package/dist/plugin/fields/toggle.d.ts.map +1 -0
  111. package/dist/plugin/fields/toggle.js +135 -0
  112. package/dist/plugin/fields/toggle.js.map +1 -0
  113. package/dist/plugin/fields/user.d.ts +14 -26
  114. package/dist/plugin/fields/user.d.ts.map +1 -1
  115. package/dist/plugin/fields/user.js +11 -25
  116. package/dist/plugin/fields/user.js.map +1 -1
  117. package/dist/plugin/lookup.d.ts +74 -10
  118. package/dist/plugin/lookup.d.ts.map +1 -1
  119. package/dist/plugin/manifest.d.ts +319 -160
  120. package/dist/plugin/manifest.d.ts.map +1 -1
  121. package/dist/plugin/manifest.js +94 -4
  122. package/dist/plugin/manifest.js.map +1 -1
  123. package/dist/plugin/setup-context.d.ts +10 -4
  124. package/dist/plugin/setup-context.d.ts.map +1 -1
  125. package/dist/plugin/setup-context.js +10 -3
  126. package/dist/plugin/setup-context.js.map +1 -1
  127. package/dist/plugin/validation/meta-box-fields.d.ts.map +1 -1
  128. package/dist/plugin/validation/meta-box-fields.js +16 -0
  129. package/dist/plugin/validation/meta-box-fields.js.map +1 -1
  130. package/dist/route/render/asset-manifest.d.ts +1 -1
  131. package/dist/route/render/asset-manifest.d.ts.map +1 -1
  132. package/dist/route/render/asset-manifest.js +7 -1
  133. package/dist/route/render/asset-manifest.js.map +1 -1
  134. package/dist/route/render/build-resolved-entries.d.ts.map +1 -1
  135. package/dist/route/render/build-resolved-entries.js +25 -12
  136. package/dist/route/render/build-resolved-entries.js.map +1 -1
  137. package/dist/route/render/render-template.d.ts +1 -1
  138. package/dist/route/render/render-template.d.ts.map +1 -1
  139. package/dist/route/render/render-template.js +50 -23
  140. package/dist/route/render/render-template.js.map +1 -1
  141. package/dist/route/render/template-builders.d.ts +15 -10
  142. package/dist/route/render/template-builders.d.ts.map +1 -1
  143. package/dist/route/render/template-builders.js.map +1 -1
  144. package/dist/rpc/base.d.ts +7 -0
  145. package/dist/rpc/base.d.ts.map +1 -1
  146. package/dist/rpc/errors.d.ts +7 -0
  147. package/dist/rpc/errors.d.ts.map +1 -1
  148. package/dist/rpc/errors.js +16 -0
  149. package/dist/rpc/errors.js.map +1 -1
  150. package/dist/rpc/meta/core.d.ts +92 -14
  151. package/dist/rpc/meta/core.d.ts.map +1 -1
  152. package/dist/rpc/meta/core.js +524 -406
  153. package/dist/rpc/meta/core.js.map +1 -1
  154. package/dist/rpc/meta/field-messages.d.ts +67 -0
  155. package/dist/rpc/meta/field-messages.d.ts.map +1 -0
  156. package/dist/rpc/meta/field-messages.js +67 -0
  157. package/dist/rpc/meta/field-messages.js.map +1 -0
  158. package/dist/rpc/meta/field-pipeline.d.ts +52 -0
  159. package/dist/rpc/meta/field-pipeline.d.ts.map +1 -0
  160. package/dist/rpc/meta/field-pipeline.js +501 -0
  161. package/dist/rpc/meta/field-pipeline.js.map +1 -0
  162. package/dist/rpc/procedures/auth/allowed-domains/create.d.ts +7 -0
  163. package/dist/rpc/procedures/auth/allowed-domains/create.d.ts.map +1 -1
  164. package/dist/rpc/procedures/auth/allowed-domains/delete.d.ts +7 -0
  165. package/dist/rpc/procedures/auth/allowed-domains/delete.d.ts.map +1 -1
  166. package/dist/rpc/procedures/auth/allowed-domains/index.d.ts +28 -0
  167. package/dist/rpc/procedures/auth/allowed-domains/index.d.ts.map +1 -1
  168. package/dist/rpc/procedures/auth/allowed-domains/list.d.ts +7 -0
  169. package/dist/rpc/procedures/auth/allowed-domains/list.d.ts.map +1 -1
  170. package/dist/rpc/procedures/auth/allowed-domains/update.d.ts +7 -0
  171. package/dist/rpc/procedures/auth/allowed-domains/update.d.ts.map +1 -1
  172. package/dist/rpc/procedures/auth/api-tokens/admin-list.d.ts +7 -0
  173. package/dist/rpc/procedures/auth/api-tokens/admin-list.d.ts.map +1 -1
  174. package/dist/rpc/procedures/auth/api-tokens/admin-revoke.d.ts +7 -0
  175. package/dist/rpc/procedures/auth/api-tokens/admin-revoke.d.ts.map +1 -1
  176. package/dist/rpc/procedures/auth/api-tokens/create.d.ts +7 -0
  177. package/dist/rpc/procedures/auth/api-tokens/create.d.ts.map +1 -1
  178. package/dist/rpc/procedures/auth/api-tokens/index.d.ts +35 -0
  179. package/dist/rpc/procedures/auth/api-tokens/index.d.ts.map +1 -1
  180. package/dist/rpc/procedures/auth/api-tokens/list.d.ts +7 -0
  181. package/dist/rpc/procedures/auth/api-tokens/list.d.ts.map +1 -1
  182. package/dist/rpc/procedures/auth/api-tokens/revoke.d.ts +7 -0
  183. package/dist/rpc/procedures/auth/api-tokens/revoke.d.ts.map +1 -1
  184. package/dist/rpc/procedures/auth/credentials/delete.d.ts +7 -0
  185. package/dist/rpc/procedures/auth/credentials/delete.d.ts.map +1 -1
  186. package/dist/rpc/procedures/auth/credentials/index.d.ts +21 -0
  187. package/dist/rpc/procedures/auth/credentials/index.d.ts.map +1 -1
  188. package/dist/rpc/procedures/auth/credentials/list.d.ts +7 -0
  189. package/dist/rpc/procedures/auth/credentials/list.d.ts.map +1 -1
  190. package/dist/rpc/procedures/auth/credentials/rename.d.ts +7 -0
  191. package/dist/rpc/procedures/auth/credentials/rename.d.ts.map +1 -1
  192. package/dist/rpc/procedures/auth/device-flow/approve.d.ts +7 -0
  193. package/dist/rpc/procedures/auth/device-flow/approve.d.ts.map +1 -1
  194. package/dist/rpc/procedures/auth/device-flow/deny.d.ts +7 -0
  195. package/dist/rpc/procedures/auth/device-flow/deny.d.ts.map +1 -1
  196. package/dist/rpc/procedures/auth/device-flow/index.d.ts +21 -0
  197. package/dist/rpc/procedures/auth/device-flow/index.d.ts.map +1 -1
  198. package/dist/rpc/procedures/auth/device-flow/lookup.d.ts +7 -0
  199. package/dist/rpc/procedures/auth/device-flow/lookup.d.ts.map +1 -1
  200. package/dist/rpc/procedures/auth/index.d.ts +154 -0
  201. package/dist/rpc/procedures/auth/index.d.ts.map +1 -1
  202. package/dist/rpc/procedures/auth/login-links.d.ts +7 -0
  203. package/dist/rpc/procedures/auth/login-links.d.ts.map +1 -1
  204. package/dist/rpc/procedures/auth/mailer/index.d.ts +7 -0
  205. package/dist/rpc/procedures/auth/mailer/index.d.ts.map +1 -1
  206. package/dist/rpc/procedures/auth/mailer/test-send.d.ts +7 -0
  207. package/dist/rpc/procedures/auth/mailer/test-send.d.ts.map +1 -1
  208. package/dist/rpc/procedures/auth/oauth-providers.d.ts +7 -0
  209. package/dist/rpc/procedures/auth/oauth-providers.d.ts.map +1 -1
  210. package/dist/rpc/procedures/auth/session.d.ts +7 -0
  211. package/dist/rpc/procedures/auth/session.d.ts.map +1 -1
  212. package/dist/rpc/procedures/auth/sessions/index.d.ts +21 -0
  213. package/dist/rpc/procedures/auth/sessions/index.d.ts.map +1 -1
  214. package/dist/rpc/procedures/auth/sessions/list.d.ts +7 -0
  215. package/dist/rpc/procedures/auth/sessions/list.d.ts.map +1 -1
  216. package/dist/rpc/procedures/auth/sessions/revoke-others.d.ts +7 -0
  217. package/dist/rpc/procedures/auth/sessions/revoke-others.d.ts.map +1 -1
  218. package/dist/rpc/procedures/auth/sessions/revoke.d.ts +7 -0
  219. package/dist/rpc/procedures/auth/sessions/revoke.d.ts.map +1 -1
  220. package/dist/rpc/procedures/entry/activity.d.ts +7 -0
  221. package/dist/rpc/procedures/entry/activity.d.ts.map +1 -1
  222. package/dist/rpc/procedures/entry/bulk.d.ts +21 -0
  223. package/dist/rpc/procedures/entry/bulk.d.ts.map +1 -1
  224. package/dist/rpc/procedures/entry/create-preview-link.d.ts +7 -0
  225. package/dist/rpc/procedures/entry/create-preview-link.d.ts.map +1 -1
  226. package/dist/rpc/procedures/entry/create.d.ts +8 -1
  227. package/dist/rpc/procedures/entry/create.d.ts.map +1 -1
  228. package/dist/rpc/procedures/entry/create.js +8 -8
  229. package/dist/rpc/procedures/entry/create.js.map +1 -1
  230. package/dist/rpc/procedures/entry/dashboard.d.ts +14 -0
  231. package/dist/rpc/procedures/entry/dashboard.d.ts.map +1 -1
  232. package/dist/rpc/procedures/entry/delete-permanent.d.ts +7 -0
  233. package/dist/rpc/procedures/entry/delete-permanent.d.ts.map +1 -1
  234. package/dist/rpc/procedures/entry/discard-draft.d.ts +7 -0
  235. package/dist/rpc/procedures/entry/discard-draft.d.ts.map +1 -1
  236. package/dist/rpc/procedures/entry/duplicate.d.ts +7 -0
  237. package/dist/rpc/procedures/entry/duplicate.d.ts.map +1 -1
  238. package/dist/rpc/procedures/entry/duplicate.js +2 -2
  239. package/dist/rpc/procedures/entry/duplicate.js.map +1 -1
  240. package/dist/rpc/procedures/entry/get.d.ts +7 -0
  241. package/dist/rpc/procedures/entry/get.d.ts.map +1 -1
  242. package/dist/rpc/procedures/entry/get.js +2 -2
  243. package/dist/rpc/procedures/entry/get.js.map +1 -1
  244. package/dist/rpc/procedures/entry/index.d.ts +156 -2
  245. package/dist/rpc/procedures/entry/index.d.ts.map +1 -1
  246. package/dist/rpc/procedures/entry/list.d.ts +7 -0
  247. package/dist/rpc/procedures/entry/list.d.ts.map +1 -1
  248. package/dist/rpc/procedures/entry/lookup.d.ts +8 -2
  249. package/dist/rpc/procedures/entry/lookup.d.ts.map +1 -1
  250. package/dist/rpc/procedures/entry/lookup.js +74 -12
  251. package/dist/rpc/procedures/entry/lookup.js.map +1 -1
  252. package/dist/rpc/procedures/entry/meta.d.ts +37 -3
  253. package/dist/rpc/procedures/entry/meta.d.ts.map +1 -1
  254. package/dist/rpc/procedures/entry/meta.js +63 -7
  255. package/dist/rpc/procedures/entry/meta.js.map +1 -1
  256. package/dist/rpc/procedures/entry/publish.d.ts +7 -0
  257. package/dist/rpc/procedures/entry/publish.d.ts.map +1 -1
  258. package/dist/rpc/procedures/entry/publish.js +6 -4
  259. package/dist/rpc/procedures/entry/publish.js.map +1 -1
  260. package/dist/rpc/procedures/entry/refresh-block-loader.d.ts +7 -0
  261. package/dist/rpc/procedures/entry/refresh-block-loader.d.ts.map +1 -1
  262. package/dist/rpc/procedures/entry/restore.d.ts +7 -0
  263. package/dist/rpc/procedures/entry/restore.d.ts.map +1 -1
  264. package/dist/rpc/procedures/entry/revisions.d.ts +56 -0
  265. package/dist/rpc/procedures/entry/revisions.d.ts.map +1 -1
  266. package/dist/rpc/procedures/entry/schemas.d.ts +2 -2
  267. package/dist/rpc/procedures/entry/schemas.d.ts.map +1 -1
  268. package/dist/rpc/procedures/entry/schemas.js +9 -2
  269. package/dist/rpc/procedures/entry/schemas.js.map +1 -1
  270. package/dist/rpc/procedures/entry/trash.d.ts +7 -0
  271. package/dist/rpc/procedures/entry/trash.d.ts.map +1 -1
  272. package/dist/rpc/procedures/entry/update.d.ts +8 -1
  273. package/dist/rpc/procedures/entry/update.d.ts.map +1 -1
  274. package/dist/rpc/procedures/entry/update.js +77 -18
  275. package/dist/rpc/procedures/entry/update.js.map +1 -1
  276. package/dist/rpc/procedures/lookup/index.d.ts +14 -0
  277. package/dist/rpc/procedures/lookup/index.d.ts.map +1 -1
  278. package/dist/rpc/procedures/lookup/list.d.ts +7 -0
  279. package/dist/rpc/procedures/lookup/list.d.ts.map +1 -1
  280. package/dist/rpc/procedures/lookup/resolve.d.ts +7 -0
  281. package/dist/rpc/procedures/lookup/resolve.d.ts.map +1 -1
  282. package/dist/rpc/procedures/lookup/resolve.js +1 -1
  283. package/dist/rpc/procedures/lookup/resolve.js.map +1 -1
  284. package/dist/rpc/procedures/lookup.errors.d.ts +2 -1
  285. package/dist/rpc/procedures/lookup.errors.d.ts.map +1 -1
  286. package/dist/rpc/procedures/lookup.errors.js +3 -0
  287. package/dist/rpc/procedures/lookup.errors.js.map +1 -1
  288. package/dist/rpc/procedures/search/index.d.ts +7 -0
  289. package/dist/rpc/procedures/search/index.d.ts.map +1 -1
  290. package/dist/rpc/procedures/settings/get.d.ts +7 -0
  291. package/dist/rpc/procedures/settings/get.d.ts.map +1 -1
  292. package/dist/rpc/procedures/settings/index.d.ts +14 -0
  293. package/dist/rpc/procedures/settings/index.d.ts.map +1 -1
  294. package/dist/rpc/procedures/settings/upsert.d.ts +7 -0
  295. package/dist/rpc/procedures/settings/upsert.d.ts.map +1 -1
  296. package/dist/rpc/procedures/settings/upsert.js +9 -0
  297. package/dist/rpc/procedures/settings/upsert.js.map +1 -1
  298. package/dist/rpc/procedures/term/create.d.ts +7 -0
  299. package/dist/rpc/procedures/term/create.d.ts.map +1 -1
  300. package/dist/rpc/procedures/term/create.js +3 -3
  301. package/dist/rpc/procedures/term/create.js.map +1 -1
  302. package/dist/rpc/procedures/term/delete.d.ts +7 -0
  303. package/dist/rpc/procedures/term/delete.d.ts.map +1 -1
  304. package/dist/rpc/procedures/term/get.d.ts +7 -0
  305. package/dist/rpc/procedures/term/get.d.ts.map +1 -1
  306. package/dist/rpc/procedures/term/index.d.ts +35 -0
  307. package/dist/rpc/procedures/term/index.d.ts.map +1 -1
  308. package/dist/rpc/procedures/term/list.d.ts +7 -0
  309. package/dist/rpc/procedures/term/list.d.ts.map +1 -1
  310. package/dist/rpc/procedures/term/lookup.d.ts +7 -2
  311. package/dist/rpc/procedures/term/lookup.d.ts.map +1 -1
  312. package/dist/rpc/procedures/term/lookup.js +29 -8
  313. package/dist/rpc/procedures/term/lookup.js.map +1 -1
  314. package/dist/rpc/procedures/term/meta.d.ts +3 -2
  315. package/dist/rpc/procedures/term/meta.d.ts.map +1 -1
  316. package/dist/rpc/procedures/term/meta.js +7 -5
  317. package/dist/rpc/procedures/term/meta.js.map +1 -1
  318. package/dist/rpc/procedures/term/update.d.ts +7 -0
  319. package/dist/rpc/procedures/term/update.d.ts.map +1 -1
  320. package/dist/rpc/procedures/term/update.js +4 -4
  321. package/dist/rpc/procedures/term/update.js.map +1 -1
  322. package/dist/rpc/procedures/user/cancel-email-change.d.ts +7 -0
  323. package/dist/rpc/procedures/user/cancel-email-change.d.ts.map +1 -1
  324. package/dist/rpc/procedures/user/delete.d.ts +7 -0
  325. package/dist/rpc/procedures/user/delete.d.ts.map +1 -1
  326. package/dist/rpc/procedures/user/disable.d.ts +7 -0
  327. package/dist/rpc/procedures/user/disable.d.ts.map +1 -1
  328. package/dist/rpc/procedures/user/enable.d.ts +7 -0
  329. package/dist/rpc/procedures/user/enable.d.ts.map +1 -1
  330. package/dist/rpc/procedures/user/get.d.ts +7 -0
  331. package/dist/rpc/procedures/user/get.d.ts.map +1 -1
  332. package/dist/rpc/procedures/user/get.js +2 -2
  333. package/dist/rpc/procedures/user/get.js.map +1 -1
  334. package/dist/rpc/procedures/user/index.d.ts +77 -0
  335. package/dist/rpc/procedures/user/index.d.ts.map +1 -1
  336. package/dist/rpc/procedures/user/invite.d.ts +7 -0
  337. package/dist/rpc/procedures/user/invite.d.ts.map +1 -1
  338. package/dist/rpc/procedures/user/list.d.ts +7 -0
  339. package/dist/rpc/procedures/user/list.d.ts.map +1 -1
  340. package/dist/rpc/procedures/user/lookup.d.ts +6 -2
  341. package/dist/rpc/procedures/user/lookup.d.ts.map +1 -1
  342. package/dist/rpc/procedures/user/lookup.js +29 -0
  343. package/dist/rpc/procedures/user/lookup.js.map +1 -1
  344. package/dist/rpc/procedures/user/meta.d.ts +3 -2
  345. package/dist/rpc/procedures/user/meta.d.ts.map +1 -1
  346. package/dist/rpc/procedures/user/meta.js +7 -5
  347. package/dist/rpc/procedures/user/meta.js.map +1 -1
  348. package/dist/rpc/procedures/user/pending-email-change.d.ts +7 -0
  349. package/dist/rpc/procedures/user/pending-email-change.d.ts.map +1 -1
  350. package/dist/rpc/procedures/user/request-email-change.d.ts +7 -0
  351. package/dist/rpc/procedures/user/request-email-change.d.ts.map +1 -1
  352. package/dist/rpc/procedures/user/set-locale.d.ts +7 -0
  353. package/dist/rpc/procedures/user/set-locale.d.ts.map +1 -1
  354. package/dist/rpc/procedures/user/update.d.ts +7 -0
  355. package/dist/rpc/procedures/user/update.d.ts.map +1 -1
  356. package/dist/rpc/procedures/user/update.js +4 -4
  357. package/dist/rpc/procedures/user/update.js.map +1 -1
  358. package/dist/rpc/router.d.ts +457 -2
  359. package/dist/rpc/router.d.ts.map +1 -1
  360. package/dist/rpc/validation.d.ts +1 -0
  361. package/dist/rpc/validation.d.ts.map +1 -1
  362. package/dist/rpc/validation.js +1 -0
  363. package/dist/rpc/validation.js.map +1 -1
  364. package/dist/runtime/dispatcher.d.ts.map +1 -1
  365. package/dist/runtime/dispatcher.js +90 -39
  366. package/dist/runtime/dispatcher.js.map +1 -1
  367. package/dist/seo/feed.d.ts.map +1 -1
  368. package/dist/seo/feed.js +7 -1
  369. package/dist/seo/feed.js.map +1 -1
  370. package/dist/settings-core.js +1 -1
  371. package/dist/settings-core.js.map +1 -1
  372. package/dist/telemetry-otel.d.ts +29 -0
  373. package/dist/telemetry-otel.d.ts.map +1 -0
  374. package/dist/telemetry-otel.js +218 -0
  375. package/dist/telemetry-otel.js.map +1 -0
  376. package/dist/template-deps-core.d.ts.map +1 -1
  377. package/dist/template-deps-core.js +31 -14
  378. package/dist/template-deps-core.js.map +1 -1
  379. package/dist/template-deps.d.ts.map +1 -1
  380. package/dist/template-deps.js +12 -8
  381. package/dist/template-deps.js.map +1 -1
  382. package/dist/template-registry.d.ts +0 -16
  383. package/dist/template-registry.d.ts.map +1 -1
  384. package/dist/terms/read-service.js +2 -2
  385. package/dist/terms/read-service.js.map +1 -1
  386. package/dist/test/index.d.ts +3 -0
  387. package/dist/test/index.d.ts.map +1 -1
  388. package/dist/test/index.js +4 -0
  389. package/dist/test/index.js.map +1 -1
  390. package/dist/test/traced-context.d.ts +17 -0
  391. package/dist/test/traced-context.d.ts.map +1 -0
  392. package/dist/test/traced-context.js +28 -0
  393. package/dist/test/traced-context.js.map +1 -0
  394. package/package.json +6 -2
  395. package/dist/plugin/fields/checkbox.d.ts +0 -19
  396. package/dist/plugin/fields/checkbox.d.ts.map +0 -1
  397. package/dist/plugin/fields/checkbox.js +0 -20
  398. package/dist/plugin/fields/checkbox.js.map +0 -1
  399. package/dist/plugin/fields/date.d.ts +0 -24
  400. package/dist/plugin/fields/date.d.ts.map +0 -1
  401. package/dist/plugin/fields/date.js +0 -23
  402. package/dist/plugin/fields/date.js.map +0 -1
  403. package/dist/plugin/fields/datetime.d.ts +0 -26
  404. package/dist/plugin/fields/datetime.d.ts.map +0 -1
  405. package/dist/plugin/fields/datetime.js +0 -25
  406. package/dist/plugin/fields/datetime.js.map +0 -1
  407. package/dist/plugin/fields/email.d.ts +0 -17
  408. package/dist/plugin/fields/email.d.ts.map +0 -1
  409. package/dist/plugin/fields/email.js +0 -18
  410. package/dist/plugin/fields/email.js.map +0 -1
  411. package/dist/plugin/fields/entry-list.d.ts +0 -28
  412. package/dist/plugin/fields/entry-list.d.ts.map +0 -1
  413. package/dist/plugin/fields/entry-list.js +0 -31
  414. package/dist/plugin/fields/entry-list.js.map +0 -1
  415. package/dist/plugin/fields/multiselect.d.ts +0 -21
  416. package/dist/plugin/fields/multiselect.d.ts.map +0 -1
  417. package/dist/plugin/fields/multiselect.js +0 -43
  418. package/dist/plugin/fields/multiselect.js.map +0 -1
  419. package/dist/plugin/fields/password.d.ts +0 -24
  420. package/dist/plugin/fields/password.d.ts.map +0 -1
  421. package/dist/plugin/fields/password.js +0 -25
  422. package/dist/plugin/fields/password.js.map +0 -1
  423. package/dist/plugin/fields/radio.d.ts +0 -16
  424. package/dist/plugin/fields/radio.d.ts.map +0 -1
  425. package/dist/plugin/fields/radio.js +0 -17
  426. package/dist/plugin/fields/radio.js.map +0 -1
  427. package/dist/plugin/fields/repeater-validate.d.ts +0 -34
  428. package/dist/plugin/fields/repeater-validate.d.ts.map +0 -1
  429. package/dist/plugin/fields/repeater-validate.js +0 -104
  430. package/dist/plugin/fields/repeater-validate.js.map +0 -1
  431. package/dist/plugin/fields/term-list.d.ts +0 -27
  432. package/dist/plugin/fields/term-list.d.ts.map +0 -1
  433. package/dist/plugin/fields/term-list.js +0 -30
  434. package/dist/plugin/fields/term-list.js.map +0 -1
  435. package/dist/plugin/fields/text.d.ts +0 -37
  436. package/dist/plugin/fields/text.d.ts.map +0 -1
  437. package/dist/plugin/fields/text.js +0 -31
  438. package/dist/plugin/fields/text.js.map +0 -1
  439. package/dist/plugin/fields/textarea.d.ts +0 -20
  440. package/dist/plugin/fields/textarea.d.ts.map +0 -1
  441. package/dist/plugin/fields/textarea.js +0 -21
  442. package/dist/plugin/fields/textarea.js.map +0 -1
  443. package/dist/plugin/fields/time.d.ts +0 -24
  444. package/dist/plugin/fields/time.d.ts.map +0 -1
  445. package/dist/plugin/fields/time.js +0 -23
  446. package/dist/plugin/fields/time.js.map +0 -1
  447. package/dist/plugin/fields/url.d.ts +0 -17
  448. package/dist/plugin/fields/url.d.ts.map +0 -1
  449. package/dist/plugin/fields/url.js +0 -18
  450. package/dist/plugin/fields/url.js.map +0 -1
  451. package/dist/plugin/fields/user-list.d.ts +0 -29
  452. package/dist/plugin/fields/user-list.d.ts.map +0 -1
  453. package/dist/plugin/fields/user-list.js +0 -31
  454. package/dist/plugin/fields/user-list.js.map +0 -1
@@ -0,0 +1,40 @@
1
+ /** Comparison applied between a driver field's value and the rule. */
2
+ export type MetaFieldConditionOperator = "eq" | "neq" | "empty" | "not_empty" | "gt" | "lt" | "contains" | "not_contains" | "count_gt" | "count_lt";
3
+ /**
4
+ * One comparison against a driver field, addressed by its meta key.
5
+ * `value` is the JSON-serializable comparand; operators that don't
6
+ * compare against a value omit it.
7
+ */
8
+ export interface MetaFieldConditionRule {
9
+ readonly key: string;
10
+ readonly op: MetaFieldConditionOperator;
11
+ readonly value?: unknown;
12
+ }
13
+ /**
14
+ * OR-of-AND groups: the field is visible when any group passes, and a
15
+ * group passes when all of its rules do. `.visibleWhen(...rules)`
16
+ * authors the first group; each `.orVisibleWhen(...rules)` appends one.
17
+ */
18
+ export type MetaFieldCondition = readonly (readonly MetaFieldConditionRule[])[];
19
+ /**
20
+ * Evaluate a field's visibility against the sibling values of its box
21
+ * (form values in the admin, the incoming meta bag on the server). A
22
+ * field without a condition is always visible.
23
+ */
24
+ export declare function isFieldVisible(field: {
25
+ readonly visibleWhen?: MetaFieldCondition;
26
+ }, values: Readonly<Record<string, unknown>>): boolean;
27
+ /**
28
+ * Write-side companion to `isFieldVisible`: whether a field's key
29
+ * should be dropped from an incoming write. Condition-hidden fields
30
+ * skip validation entirely, because an editor can never fix a value
31
+ * behind an input they cannot see. Visibility is judged from the
32
+ * incoming bag (the admin submits the full form state), and only when
33
+ * the bag carries every referenced driver: a partial patch that omits
34
+ * a driver is validated as if visible rather than silently dropped on
35
+ * unknown driver state.
36
+ */
37
+ export declare function isConditionHidden(field: {
38
+ readonly visibleWhen?: MetaFieldCondition;
39
+ }, input: Readonly<Record<string, unknown>>): boolean;
40
+ //# sourceMappingURL=condition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition.d.ts","sourceRoot":"","sources":["../../../src/plugin/fields/condition.ts"],"names":[],"mappings":"AAQA,sEAAsE;AACtE,MAAM,MAAM,0BAA0B,GAClC,IAAI,GACJ,KAAK,GACL,OAAO,GACP,WAAW,GACX,IAAI,GACJ,IAAI,GACJ,UAAU,GACV,cAAc,GACd,UAAU,GACV,UAAU,CAAC;AAEf;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,EAAE,0BAA0B,CAAC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAC,SAAS,sBAAsB,EAAE,CAAC,EAAE,CAAC;AAEhF;;;;GAIG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAA;CAAE,EACpD,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACxC,OAAO,CAMT;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE;IAAE,QAAQ,CAAC,WAAW,CAAC,EAAE,kBAAkB,CAAA;CAAE,EACpD,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GACvC,OAAO,CAMT"}
@@ -0,0 +1,115 @@
1
+ // Conditional-visibility rule model for meta-box fields. Rules are
2
+ // plain wire objects addressing driver fields by key — authored via
3
+ // the typed condition factories on each fluent builder, serialized
4
+ // into the manifest untouched, and evaluated by the same
5
+ // `isFieldVisible` on both sides: the admin form (live show/hide as
6
+ // driver values change) and the server write pipeline (hidden fields
7
+ // skip validation).
8
+ /**
9
+ * Evaluate a field's visibility against the sibling values of its box
10
+ * (form values in the admin, the incoming meta bag on the server). A
11
+ * field without a condition is always visible.
12
+ */
13
+ export function isFieldVisible(field, values) {
14
+ const groups = field.visibleWhen;
15
+ if (groups === undefined || groups.length === 0)
16
+ return true;
17
+ return groups.some((group) => group.every((rule) => evaluateRule(rule, values[rule.key])));
18
+ }
19
+ /**
20
+ * Write-side companion to `isFieldVisible`: whether a field's key
21
+ * should be dropped from an incoming write. Condition-hidden fields
22
+ * skip validation entirely, because an editor can never fix a value
23
+ * behind an input they cannot see. Visibility is judged from the
24
+ * incoming bag (the admin submits the full form state), and only when
25
+ * the bag carries every referenced driver: a partial patch that omits
26
+ * a driver is validated as if visible rather than silently dropped on
27
+ * unknown driver state.
28
+ */
29
+ export function isConditionHidden(field, input) {
30
+ const groups = field.visibleWhen ?? [];
31
+ const driversPresent = groups.every((group) => group.every((rule) => rule.key in input));
32
+ return driversPresent && !isFieldVisible(field, input);
33
+ }
34
+ function evaluateRule(rule, value) {
35
+ switch (rule.op) {
36
+ case "eq":
37
+ return structurallyEqual(value, rule.value);
38
+ case "neq":
39
+ return !structurallyEqual(value, rule.value);
40
+ case "empty":
41
+ return isEmptyValue(value);
42
+ case "not_empty":
43
+ return !isEmptyValue(value);
44
+ case "gt":
45
+ return compareNumeric(value, rule.value, (a, b) => a > b);
46
+ case "lt":
47
+ return compareNumeric(value, rule.value, (a, b) => a < b);
48
+ case "contains":
49
+ return containsItem(value, rule.value);
50
+ case "not_contains":
51
+ return !containsItem(value, rule.value);
52
+ case "count_gt":
53
+ return compareNumeric(countOf(value), rule.value, (a, b) => a > b);
54
+ case "count_lt":
55
+ return compareNumeric(countOf(value), rule.value, (a, b) => a < b);
56
+ }
57
+ }
58
+ function containsItem(value, comparand) {
59
+ return (Array.isArray(value) &&
60
+ value.some((item) => structurallyEqual(item, comparand)));
61
+ }
62
+ // Multi-value drivers count their selections; anything else (including
63
+ // an absent value) counts as zero.
64
+ function countOf(value) {
65
+ return Array.isArray(value) ? value.length : 0;
66
+ }
67
+ // JSON-structural equality — rule comparands are JSON-serializable by
68
+ // construction (typed factories produce them from field value types),
69
+ // so array order and own enumerable keys are the identity. Objects
70
+ // compare key-order-insensitively.
71
+ function structurallyEqual(a, b) {
72
+ if (a === b)
73
+ return true;
74
+ if (Array.isArray(a) && Array.isArray(b)) {
75
+ return (a.length === b.length &&
76
+ a.every((item, i) => structurallyEqual(item, b[i])));
77
+ }
78
+ if (typeof a === "object" &&
79
+ typeof b === "object" &&
80
+ a !== null &&
81
+ b !== null &&
82
+ !Array.isArray(a) &&
83
+ !Array.isArray(b)) {
84
+ const aEntries = Object.entries(a);
85
+ if (aEntries.length !== Object.keys(b).length)
86
+ return false;
87
+ return aEntries.every(([key, item]) => key in b &&
88
+ structurallyEqual(item, b[key]));
89
+ }
90
+ return false;
91
+ }
92
+ // "No value yet" as an editor perceives it: unset, cleared input, or
93
+ // an empty multi-value selection. `false` / `0` are values.
94
+ function isEmptyValue(value) {
95
+ if (value === undefined || value === null || value === "")
96
+ return true;
97
+ return Array.isArray(value) && value.length === 0;
98
+ }
99
+ function compareNumeric(value, bound, cmp) {
100
+ const parsed = numericValueOf(value);
101
+ return (parsed !== undefined && typeof bound === "number" && cmp(parsed, bound));
102
+ }
103
+ // Numeric driver values may arrive as strings (an HTML number input's
104
+ // raw form value) — accept them, but never coerce blank to 0.
105
+ function numericValueOf(value) {
106
+ if (typeof value === "number" && Number.isFinite(value))
107
+ return value;
108
+ if (typeof value === "string" && value.trim() !== "") {
109
+ const parsed = Number(value);
110
+ if (Number.isFinite(parsed))
111
+ return parsed;
112
+ }
113
+ return undefined;
114
+ }
115
+ //# sourceMappingURL=condition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"condition.js","sourceRoot":"","sources":["../../../src/plugin/fields/condition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,233 @@
1
+ import type { EntryProjection, EntryTypeName, TermProjection, TermTaxonomyName } from "../../template-registry.js";
2
+ import type { MetaBoxFieldInput } from "../manifest.js";
3
+ /**
4
+ * The typed-meta contribution registries. A meta box (or settings
5
+ * group) registration is runtime-only — a `register*` call can't
6
+ * augment a global interface — so typed reads cost one derived
7
+ * declaration per box, merged from any package. The `EntryMeta` /
8
+ * `TermMeta` / `UserMeta` / `SettingsMeta` helpers author that
9
+ * declaration (see {@link EntryMeta} for the end-to-end walkthrough):
10
+ *
11
+ * ```ts
12
+ * const articleFields = [text("subtitle").maxLength(120)];
13
+ * declare module "plumix" {
14
+ * interface EntryMetaContributions {
15
+ * article: EntryMeta<"post", typeof articleFields>;
16
+ * }
17
+ * }
18
+ * ```
19
+ *
20
+ * `MetaOf<K>` then folds every contribution whose target set includes
21
+ * `K` into one closed record — no open index fallback, so a mistyped
22
+ * field name is a compile error at the read site. A box registered
23
+ * without a declaration simply doesn't contribute (its fields read as
24
+ * absent); any downstream package can supply the missing declaration
25
+ * via interface merging. When a declaration exists, the matching
26
+ * `register*` call is typechecked against it, so declaration and
27
+ * runtime can't drift silently.
28
+ */
29
+ /** Entry meta-box contributions, keyed by box id. `entryTypes` is a union of registered entry-type names. */
30
+ export interface EntryMetaContributions {
31
+ }
32
+ /** Term meta-box contributions, keyed by box id. `termTaxonomies` is a union of registered taxonomy names. */
33
+ export interface TermMetaContributions {
34
+ }
35
+ /** User meta-box contributions, keyed by box id. Users have a flat keyspace — every contribution applies. */
36
+ export interface UserMetaContributions {
37
+ }
38
+ /** Settings-group contributions, keyed by group name. */
39
+ export interface SettingsContributions {
40
+ }
41
+ /**
42
+ * The shape of one entry meta-box contribution: the target entry type(s)
43
+ * plus the fields array. A named alias so authors reach for a checked
44
+ * two-generic helper instead of hand-writing the `{ entryTypes; fields }`
45
+ * object — misspelling a property (`entryType`) would otherwise leave the
46
+ * contribution structurally valid but silently unmatched by the fold, so
47
+ * the fields read as *absent* with no error. `EntryTypes` is constrained
48
+ * to registered names, so an unknown entry type errors at the declaration
49
+ * itself rather than only at the `registerEntryMetaBox` call.
50
+ *
51
+ * The full path from declaring fields to typed template reads:
52
+ *
53
+ * ```ts
54
+ * import { text } from "plumix/fields";
55
+ * import type { EntryMeta } from "plumix";
56
+ *
57
+ * // 1. Author the fields as a named const so both the declaration and
58
+ * // the registration reference one source of truth.
59
+ * const articleFields = [text("subtitle"), text("heroCredit").required()];
60
+ *
61
+ * // 2. Declare the contribution — this is what crosses package
62
+ * // boundaries so a theme in another package sees the meta shape.
63
+ * declare module "plumix" {
64
+ * interface EntryMetaContributions {
65
+ * article: EntryMeta<"post", typeof articleFields>;
66
+ * }
67
+ * }
68
+ *
69
+ * // 3. Register the box; the call is typechecked against the declaration
70
+ * // above (anti-drift), so the two can't diverge silently.
71
+ * ctx.registerEntryMetaBox("article", {
72
+ * label: "Article",
73
+ * entryTypes: ["post"],
74
+ * fields: articleFields,
75
+ * });
76
+ *
77
+ * // 4. In the theme, a targeted template reads typed meta:
78
+ * // `forEntryType("post").template(({ entry }) => entry.meta.subtitle)`
79
+ * // — `subtitle` is `string | undefined`, a typo is a compile error.
80
+ * ```
81
+ */
82
+ export interface EntryMeta<EntryTypes extends EntryTypeName, Fields extends readonly MetaBoxFieldInput[]> {
83
+ entryTypes: EntryTypes;
84
+ fields: Fields;
85
+ }
86
+ /**
87
+ * The shape of one term meta-box contribution — target taxonomy(s) plus
88
+ * fields. The {@link EntryMeta} analogue over `termTaxonomies`; folds
89
+ * through {@link TermMetaOf} for `forTaxonomy(...).template(...)` reads.
90
+ */
91
+ export interface TermMeta<Taxonomies extends TermTaxonomyName, Fields extends readonly MetaBoxFieldInput[]> {
92
+ termTaxonomies: Taxonomies;
93
+ fields: Fields;
94
+ }
95
+ /**
96
+ * The shape of one user meta-box contribution. Users share a flat
97
+ * keyspace, so there is no target set — every declared contribution folds
98
+ * into {@link UserMetaOf}.
99
+ */
100
+ export interface UserMeta<Fields extends readonly MetaBoxFieldInput[]> {
101
+ fields: Fields;
102
+ }
103
+ /**
104
+ * The shape of one settings-group contribution, keyed by group name in
105
+ * {@link SettingsContributions}; folds through {@link SettingsOf}.
106
+ */
107
+ export interface SettingsMeta<Fields extends readonly MetaBoxFieldInput[]> {
108
+ fields: Fields;
109
+ }
110
+ interface TypedField {
111
+ readonly _key: string;
112
+ readonly _value: unknown;
113
+ readonly _stored: unknown;
114
+ }
115
+ type InferShape<F extends readonly MetaBoxFieldInput[], Prop extends "_value" | "_stored"> = {
116
+ [P in Extract<F[number], TypedField> as P["_key"]]: P[Prop];
117
+ };
118
+ /**
119
+ * The read-shape record a fields array declares: one property per
120
+ * fluent field, keyed by the literal key, typed by the phantom read
121
+ * type (defaults applied, references hydrated).
122
+ */
123
+ export type InferFields<F extends readonly MetaBoxFieldInput[]> = InferShape<F, "_value">;
124
+ /**
125
+ * The stored-shape record a fields array declares — what actually sits
126
+ * in the meta JSON. Distinct from {@link InferFields}: `.default()`
127
+ * narrows only the read shape (decode-time), and reference/temporal
128
+ * fields store ids / ISO strings rather than hydrated values.
129
+ */
130
+ export type InferStoredFields<F extends readonly MetaBoxFieldInput[]> = InferShape<F, "_stored">;
131
+ type UnionToIntersection<U> = (U extends unknown ? (u: U) => void : never) extends (i: infer I extends Record<string, unknown>) => void ? I : never;
132
+ type EmptyMeta = Record<never, never>;
133
+ type FoldRecords<R> = [R] extends [never] ? EmptyMeta : UnionToIntersection<R>;
134
+ type ScopedRecords<Contributions, K, P extends string, Prop extends "_value" | "_stored"> = {
135
+ [B in keyof Contributions]: Contributions[B] extends Record<P, infer T> & {
136
+ fields: infer F extends readonly MetaBoxFieldInput[];
137
+ } ? K extends T ? InferShape<F, Prop> : never : never;
138
+ }[keyof Contributions];
139
+ type AllRecords<Contributions, Prop extends "_value" | "_stored"> = {
140
+ [B in keyof Contributions]: Contributions[B] extends {
141
+ fields: infer F extends readonly MetaBoxFieldInput[];
142
+ } ? InferShape<F, Prop> : never;
143
+ }[keyof Contributions];
144
+ /** The folded read-shape meta record for an entry type. Types template `data.entry.meta` reads. */
145
+ export type MetaOf<K extends EntryTypeName> = FoldRecords<ScopedRecords<EntryMetaContributions, K, "entryTypes", "_value">>;
146
+ /** The folded stored-shape meta record for an entry type. Types `whereMeta` keys and values. */
147
+ export type StoredMetaOf<K extends EntryTypeName> = FoldRecords<ScopedRecords<EntryMetaContributions, K, "entryTypes", "_stored">>;
148
+ /** The folded read-shape meta record for a registered taxonomy. */
149
+ export type TermMetaOf<K extends TermTaxonomyName> = FoldRecords<ScopedRecords<TermMetaContributions, K, "termTaxonomies", "_value">>;
150
+ /** The folded stored-shape meta record for a taxonomy. Types term `whereMeta`. */
151
+ export type StoredTermMetaOf<K extends TermTaxonomyName> = FoldRecords<ScopedRecords<TermMetaContributions, K, "termTaxonomies", "_stored">>;
152
+ /** The folded read-shape user meta record — users have a flat keyspace, so every contribution applies. */
153
+ export type UserMetaOf = FoldRecords<AllRecords<UserMetaContributions, "_value">>;
154
+ /** The read-shape record of one settings group, by declared group name. */
155
+ export type SettingsOf<Name extends keyof SettingsContributions> = FoldRecords<AllRecords<Pick<SettingsContributions, Name>, "_value">>;
156
+ type FieldsMatch<A extends readonly MetaBoxFieldInput[], B extends readonly MetaBoxFieldInput[]> = [
157
+ InferFields<A>,
158
+ InferStoredFields<A>,
159
+ InferFields<B>,
160
+ InferStoredFields<B>
161
+ ] extends [
162
+ InferFields<B>,
163
+ InferStoredFields<B>,
164
+ InferFields<A>,
165
+ InferStoredFields<A>
166
+ ] ? true : false;
167
+ type FieldsDrift<O extends {
168
+ fields: readonly MetaBoxFieldInput[];
169
+ }, F extends readonly MetaBoxFieldInput[]> = FieldsMatch<O["fields"], F> extends true ? unknown : {
170
+ "drift — fields do not match the declared contribution": F;
171
+ };
172
+ /**
173
+ * The compile-time drift check `registerEntryMetaBox` intersects onto
174
+ * its options. With no declaration for `Id` it vanishes (`unknown`);
175
+ * with one, a mismatched target set or field set demands an impossible
176
+ * `"drift — …"` property, failing the call with a readable message.
177
+ * The comparison is over the inferred read + stored shapes, so the
178
+ * registration must pass literally-typed fields (the declared array
179
+ * itself, or an equivalent inline chain) — options widened to the base
180
+ * interface lose the phantoms and fail the check.
181
+ */
182
+ export type EntryMetaBoxDrift<Id extends string, O extends {
183
+ entryTypes: readonly string[];
184
+ fields: readonly MetaBoxFieldInput[];
185
+ }> = Id extends keyof EntryMetaContributions ? EntryMetaContributions[Id] extends {
186
+ entryTypes: infer T extends string;
187
+ fields: infer F extends readonly MetaBoxFieldInput[];
188
+ } ? (O["entryTypes"][number] extends T ? unknown : {
189
+ "drift — entryTypes lists an undeclared entry type": Exclude<O["entryTypes"][number], T>;
190
+ }) & ([Exclude<T, O["entryTypes"][number]>] extends [never] ? unknown : {
191
+ "drift — entryTypes is missing a declared entry type": Exclude<T, O["entryTypes"][number]>;
192
+ }) & FieldsDrift<O, F> : unknown : unknown;
193
+ /** The `registerTermMetaBox` analogue of {@link EntryMetaBoxDrift}, over `termTaxonomies`. */
194
+ export type TermMetaBoxDrift<Id extends string, O extends {
195
+ termTaxonomies: readonly string[];
196
+ fields: readonly MetaBoxFieldInput[];
197
+ }> = Id extends keyof TermMetaContributions ? TermMetaContributions[Id] extends {
198
+ termTaxonomies: infer T extends string;
199
+ fields: infer F extends readonly MetaBoxFieldInput[];
200
+ } ? (O["termTaxonomies"][number] extends T ? unknown : {
201
+ "drift — termTaxonomies lists an undeclared taxonomy": Exclude<O["termTaxonomies"][number], T>;
202
+ }) & ([Exclude<T, O["termTaxonomies"][number]>] extends [never] ? unknown : {
203
+ "drift — termTaxonomies is missing a declared taxonomy": Exclude<T, O["termTaxonomies"][number]>;
204
+ }) & FieldsDrift<O, F> : unknown : unknown;
205
+ type FieldsOnlyDrift<Contributions, Key, O extends {
206
+ fields: readonly MetaBoxFieldInput[];
207
+ }> = Key extends keyof Contributions ? Contributions[Key] extends {
208
+ fields: infer F extends readonly MetaBoxFieldInput[];
209
+ } ? FieldsDrift<O, F> : unknown : unknown;
210
+ /** Fields-only drift for `registerUserMetaBox` — users have no target set. */
211
+ export type UserMetaBoxDrift<Id extends string, O extends {
212
+ fields: readonly MetaBoxFieldInput[];
213
+ }> = FieldsOnlyDrift<UserMetaContributions, Id, O>;
214
+ /** Fields-only drift for `registerSettingsGroup`, keyed by group name. */
215
+ export type SettingsGroupDrift<Name extends string, O extends {
216
+ fields: readonly MetaBoxFieldInput[];
217
+ }> = FieldsOnlyDrift<SettingsContributions, Name, O>;
218
+ /**
219
+ * The entry a targeted template receives: the registered projection
220
+ * with `meta` replaced by the folded typed record. Replacement (not
221
+ * intersection) is what makes a mistyped field name a compile error —
222
+ * intersecting would keep the base open `Record<string, unknown>`
223
+ * index and read typos as `unknown`.
224
+ */
225
+ export type ResolvedEntryFor<K extends EntryTypeName> = Omit<EntryProjection<K>, "meta"> & {
226
+ readonly meta: MetaOf<K>;
227
+ };
228
+ /** The term a targeted template receives — projection with folded typed meta. */
229
+ export type ResolvedTermFor<K extends TermTaxonomyName> = Omit<TermProjection<K>, "meta"> & {
230
+ readonly meta: TermMetaOf<K>;
231
+ };
232
+ export {};
233
+ //# sourceMappingURL=contributions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contributions.d.ts","sourceRoot":"","sources":["../../../src/plugin/fields/contributions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=contributions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contributions.js","sourceRoot":"","sources":["../../../src/plugin/fields/contributions.ts"],"names":[],"mappings":""}
@@ -1,5 +1,5 @@
1
- import type { Label } from "../../i18n/label.js";
2
- import type { EntryReferenceMetaBoxField, MetaBoxFieldSpan } from "../manifest.js";
1
+ import type { EntryStatus } from "../../db/schema/entries.js";
2
+ import { ReferenceFieldBuilder } from "./reference.js";
3
3
  /**
4
4
  * Public scope shape for the `entry()` reference field. Carried on
5
5
  * the field's `referenceTarget.scope`; the entry `LookupAdapter`
@@ -10,31 +10,35 @@ export interface EntryFieldScope {
10
10
  /**
11
11
  * Restrict matches to these entry types. Required at the field
12
12
  * level — entry references without a type filter would surface
13
- * the entire content table to pickers.
13
+ * the entire content table to pickers. Seeded from the `entry()`
14
+ * constructor argument.
14
15
  */
15
16
  readonly entryTypes: readonly string[];
16
17
  /**
17
18
  * Whether to surface trashed entries. Default `false` — trashed
18
- * entries are usually invalid reference targets.
19
+ * entries are usually invalid reference targets. Set via
20
+ * `.includeTrashed()`.
19
21
  */
20
22
  readonly includeTrashed?: boolean;
21
- }
22
- export interface EntryFieldOptions {
23
- readonly key: string;
24
- readonly label: Label;
25
- readonly required?: boolean;
26
- readonly description?: Label;
27
- readonly default?: string;
28
- readonly span?: MetaBoxFieldSpan;
29
- readonly capability?: string;
30
- readonly entryTypes: readonly string[];
31
- readonly includeTrashed?: boolean;
23
+ /**
24
+ * Restrict matches to exactly this lifecycle status; supersedes the
25
+ * `includeTrashed` default. Public-render consumers (e.g. menu nav)
26
+ * pass `"published"` via `.status()` so drafts never surface; the
27
+ * admin picker leaves it unset and keeps admitting drafts/scheduled.
28
+ */
29
+ readonly status?: EntryStatus;
32
30
  }
33
31
  /**
34
- * Build a typed `entry` reference field. Storage is the bare entry
35
- * id; reads return the resolved label/subtitle (or `null` for
36
- * orphans). The admin renders a picker that calls the lookup RPC
37
- * with `{ kind: "entry", scope: { entryTypes, includeTrashed } }`.
32
+ * Build a typed `entry` reference field
33
+ * `entry("related", ["post"])`. The required entry-type scope is the
34
+ * constructor's second argument; `.includeTrashed()` / `.status()`
35
+ * refine it, `.multiple()` flips to an id array.
36
+ *
37
+ * Storage is the bare entry id (an id array under `.multiple()`).
38
+ * Reads hydrate to the entry summary by default (`.returns("id")`
39
+ * opts back to the bare id); single reads stay optional (a target can
40
+ * orphan). The admin renders a picker that calls the lookup RPC with
41
+ * `{ kind: "entry", scope }`.
38
42
  */
39
- export declare function entry(options: EntryFieldOptions): EntryReferenceMetaBoxField;
43
+ export declare function entry<K extends string>(key: K, entryTypes: readonly string[]): ReferenceFieldBuilder<"entry", K>;
40
44
  //# sourceMappingURL=entry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../../src/plugin/fields/entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,KAAK,EACV,0BAA0B,EAC1B,gBAAgB,EACjB,MAAM,gBAAgB,CAAC;AAExB;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC;;;OAGG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;CACnC;AAED;;;;;GAKG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,0BAA0B,CAiB5E"}
1
+ {"version":3,"file":"entry.d.ts","sourceRoot":"","sources":["../../../src/plugin/fields/entry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC;;;;OAIG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,KAAK,CAAC,CAAC,SAAS,MAAM,EACpC,GAAG,EAAE,CAAC,EACN,UAAU,EAAE,SAAS,MAAM,EAAE,GAC5B,qBAAqB,CAAC,OAAO,EAAE,CAAC,CAAC,CAEnC"}
@@ -1,25 +1,17 @@
1
+ import { ReferenceFieldBuilder } from "./reference.js";
1
2
  /**
2
- * Build a typed `entry` reference field. Storage is the bare entry
3
- * id; reads return the resolved label/subtitle (or `null` for
4
- * orphans). The admin renders a picker that calls the lookup RPC
5
- * with `{ kind: "entry", scope: { entryTypes, includeTrashed } }`.
3
+ * Build a typed `entry` reference field
4
+ * `entry("related", ["post"])`. The required entry-type scope is the
5
+ * constructor's second argument; `.includeTrashed()` / `.status()`
6
+ * refine it, `.multiple()` flips to an id array.
7
+ *
8
+ * Storage is the bare entry id (an id array under `.multiple()`).
9
+ * Reads hydrate to the entry summary by default (`.returns("id")`
10
+ * opts back to the bare id); single reads stay optional (a target can
11
+ * orphan). The admin renders a picker that calls the lookup RPC with
12
+ * `{ kind: "entry", scope }`.
6
13
  */
7
- export function entry(options) {
8
- const scope = {
9
- entryTypes: options.entryTypes,
10
- includeTrashed: options.includeTrashed,
11
- };
12
- return {
13
- key: options.key,
14
- label: options.label,
15
- type: "string",
16
- inputType: "entry",
17
- referenceTarget: { kind: "entry", scope },
18
- required: options.required,
19
- description: options.description,
20
- default: options.default,
21
- span: options.span,
22
- capability: options.capability,
23
- };
14
+ export function entry(key, entryTypes) {
15
+ return new ReferenceFieldBuilder("entry", key, { entryTypes });
24
16
  }
25
17
  //# sourceMappingURL=entry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../../src/plugin/fields/entry.ts"],"names":[],"mappings":"AAsCA;;;;;GAKG;AACH,MAAM,UAAU,KAAK,CAAC,OAA0B;IAC9C,MAAM,KAAK,GAAoB;QAC7B,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC;IACF,OAAO;QACL,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,OAAO;QAClB,eAAe,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;QACzC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,UAAU,EAAE,OAAO,CAAC,UAAU;KAC/B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"entry.js","sourceRoot":"","sources":["../../../src/plugin/fields/entry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AA+BvD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,KAAK,CACnB,GAAM,EACN,UAA6B;IAE7B,OAAO,IAAI,qBAAqB,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;AACjE,CAAC"}
@@ -1,8 +1,11 @@
1
- type FieldConfigErrorCode = "range_min_greater_than_max" | "repeater_nested_not_supported" | "repeater_sub_field_key_forbidden" | "repeater_sub_field_key_invalid" | "repeater_sub_field_duplicate";
1
+ type FieldConfigErrorCode = "range_min_greater_than_max" | "sub_field_key_forbidden" | "sub_field_key_invalid" | "sub_field_duplicate" | "sub_field_condition_not_supported" | "temporal_bound_invalid";
2
+ /** The composite field types that own a list of sub-fields. */
3
+ export type SubFieldContainer = "repeater" | "group";
2
4
  export declare class FieldConfigError extends Error {
3
5
  readonly code: FieldConfigErrorCode;
4
6
  readonly fieldKey: string | undefined;
5
- readonly repeaterKey: string | undefined;
7
+ readonly container: SubFieldContainer | undefined;
8
+ readonly containerKey: string | undefined;
6
9
  readonly subFieldKey: string | undefined;
7
10
  readonly min: number | undefined;
8
11
  readonly max: number | undefined;
@@ -13,23 +16,32 @@ export declare class FieldConfigError extends Error {
13
16
  min: number;
14
17
  max: number;
15
18
  }): FieldConfigError;
16
- static repeaterNestedNotSupported(ctx: {
17
- repeaterKey: string;
19
+ static subFieldKeyForbidden(ctx: {
20
+ container: SubFieldContainer;
21
+ containerKey: string;
18
22
  subFieldKey: string;
19
23
  }): FieldConfigError;
20
- static repeaterSubFieldKeyForbidden(ctx: {
21
- repeaterKey: string;
24
+ static subFieldKeyInvalid(ctx: {
25
+ container: SubFieldContainer;
26
+ containerKey: string;
22
27
  subFieldKey: string;
28
+ pattern: string;
23
29
  }): FieldConfigError;
24
- static repeaterSubFieldKeyInvalid(ctx: {
25
- repeaterKey: string;
30
+ static subFieldDuplicate(ctx: {
31
+ container: SubFieldContainer;
32
+ containerKey: string;
26
33
  subFieldKey: string;
27
- pattern: string;
28
34
  }): FieldConfigError;
29
- static repeaterSubFieldDuplicate(ctx: {
30
- repeaterKey: string;
35
+ static subFieldCondition(ctx: {
36
+ container: SubFieldContainer;
37
+ containerKey: string;
31
38
  subFieldKey: string;
32
39
  }): FieldConfigError;
40
+ static temporalBoundInvalid(ctx: {
41
+ fieldKey: string;
42
+ bound: "min" | "max";
43
+ value: string;
44
+ }): FieldConfigError;
33
45
  }
34
46
  export {};
35
47
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/plugin/fields/errors.ts"],"names":[],"mappings":"AAAA,KAAK,oBAAoB,GACrB,4BAA4B,GAC5B,+BAA+B,GAC/B,kCAAkC,GAClC,gCAAgC,GAChC,8BAA8B,CAAC;AAWnC,qBAAa,gBAAiB,SAAQ,KAAK;IAKzC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC,OAAO;IAeP,MAAM,CAAC,sBAAsB,CAAC,GAAG,EAAE;QACjC,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,GAAG,gBAAgB;IAQpB,MAAM,CAAC,0BAA0B,CAAC,GAAG,EAAE;QACrC,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,gBAAgB;IASpB,MAAM,CAAC,4BAA4B,CAAC,GAAG,EAAE;QACvC,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,gBAAgB;IASpB,MAAM,CAAC,0BAA0B,CAAC,GAAG,EAAE;QACrC,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,gBAAgB;IASpB,MAAM,CAAC,yBAAyB,CAAC,GAAG,EAAE;QACpC,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,gBAAgB;CAOrB"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/plugin/fields/errors.ts"],"names":[],"mappings":"AAAA,KAAK,oBAAoB,GACrB,4BAA4B,GAC5B,yBAAyB,GACzB,uBAAuB,GACvB,qBAAqB,GACrB,mCAAmC,GACnC,wBAAwB,CAAC;AAE7B,+DAA+D;AAC/D,MAAM,MAAM,iBAAiB,GAAG,UAAU,GAAG,OAAO,CAAC;AAYrD,qBAAa,gBAAiB,SAAQ,KAAK;IAKzC,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAErC,OAAO;IAgBP,MAAM,CAAC,sBAAsB,CAAC,GAAG,EAAE;QACjC,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;KACb,GAAG,gBAAgB;IAQpB,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE;QAC/B,SAAS,EAAE,iBAAiB,CAAC;QAC7B,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,gBAAgB;IASpB,MAAM,CAAC,kBAAkB,CAAC,GAAG,EAAE;QAC7B,SAAS,EAAE,iBAAiB,CAAC;QAC7B,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,GAAG,gBAAgB;IASpB,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE;QAC5B,SAAS,EAAE,iBAAiB,CAAC;QAC7B,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,gBAAgB;IASpB,MAAM,CAAC,iBAAiB,CAAC,GAAG,EAAE;QAC5B,SAAS,EAAE,iBAAiB,CAAC;QAC7B,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;KACrB,GAAG,gBAAgB;IASpB,MAAM,CAAC,oBAAoB,CAAC,GAAG,EAAE;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,KAAK,GAAG,KAAK,CAAC;QACrB,KAAK,EAAE,MAAM,CAAC;KACf,GAAG,gBAAgB;CAQrB"}