@aglyn/aglyn 1.0.0-beta.143

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 (963) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +11 -0
  3. package/package.json +66 -0
  4. package/src/index.d.ts +25 -0
  5. package/src/index.js +26 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/aglyn.d.ts +31 -0
  8. package/src/lib/aglyn.js +114 -0
  9. package/src/lib/aglyn.js.map +1 -0
  10. package/src/lib/app-utils/abuse-report.d.ts +193 -0
  11. package/src/lib/app-utils/abuse-report.js +321 -0
  12. package/src/lib/app-utils/abuse-report.js.map +1 -0
  13. package/src/lib/app-utils/accept-negotiation.d.ts +129 -0
  14. package/src/lib/app-utils/accept-negotiation.js +266 -0
  15. package/src/lib/app-utils/accept-negotiation.js.map +1 -0
  16. package/src/lib/app-utils/account-emails.d.ts +263 -0
  17. package/src/lib/app-utils/account-emails.js +264 -0
  18. package/src/lib/app-utils/account-emails.js.map +1 -0
  19. package/src/lib/app-utils/actions.d.ts +717 -0
  20. package/src/lib/app-utils/actions.js +1031 -0
  21. package/src/lib/app-utils/actions.js.map +1 -0
  22. package/src/lib/app-utils/activity-presenter.d.ts +152 -0
  23. package/src/lib/app-utils/activity-presenter.js +326 -0
  24. package/src/lib/app-utils/activity-presenter.js.map +1 -0
  25. package/src/lib/app-utils/advertising-tag-mounts.d.ts +133 -0
  26. package/src/lib/app-utils/advertising-tag-mounts.js +118 -0
  27. package/src/lib/app-utils/advertising-tag-mounts.js.map +1 -0
  28. package/src/lib/app-utils/advertising-tags.d.ts +307 -0
  29. package/src/lib/app-utils/advertising-tags.js +525 -0
  30. package/src/lib/app-utils/advertising-tags.js.map +1 -0
  31. package/src/lib/app-utils/agent-api-catalog.d.ts +94 -0
  32. package/src/lib/app-utils/agent-api-catalog.js +106 -0
  33. package/src/lib/app-utils/agent-api-catalog.js.map +1 -0
  34. package/src/lib/app-utils/agent-openapi.d.ts +103 -0
  35. package/src/lib/app-utils/agent-openapi.js +1128 -0
  36. package/src/lib/app-utils/agent-openapi.js.map +1 -0
  37. package/src/lib/app-utils/analytics-beacon.d.ts +154 -0
  38. package/src/lib/app-utils/analytics-beacon.js +152 -0
  39. package/src/lib/app-utils/analytics-beacon.js.map +1 -0
  40. package/src/lib/app-utils/analytics-environment.d.ts +133 -0
  41. package/src/lib/app-utils/analytics-environment.js +152 -0
  42. package/src/lib/app-utils/analytics-environment.js.map +1 -0
  43. package/src/lib/app-utils/analytics-events.d.ts +744 -0
  44. package/src/lib/app-utils/analytics-events.js +650 -0
  45. package/src/lib/app-utils/analytics-events.js.map +1 -0
  46. package/src/lib/app-utils/analytics-link-clicks.d.ts +102 -0
  47. package/src/lib/app-utils/analytics-link-clicks.js +267 -0
  48. package/src/lib/app-utils/analytics-link-clicks.js.map +1 -0
  49. package/src/lib/app-utils/analytics-path-key.d.ts +46 -0
  50. package/src/lib/app-utils/analytics-path-key.js +46 -0
  51. package/src/lib/app-utils/analytics-path-key.js.map +1 -0
  52. package/src/lib/app-utils/api-adapter.d.ts +47 -0
  53. package/src/lib/app-utils/api-adapter.js +367 -0
  54. package/src/lib/app-utils/api-adapter.js.map +1 -0
  55. package/src/lib/app-utils/api-idempotency.d.ts +169 -0
  56. package/src/lib/app-utils/api-idempotency.js +213 -0
  57. package/src/lib/app-utils/api-idempotency.js.map +1 -0
  58. package/src/lib/app-utils/api-plugins.d.ts +210 -0
  59. package/src/lib/app-utils/api-plugins.js +221 -0
  60. package/src/lib/app-utils/api-plugins.js.map +1 -0
  61. package/src/lib/app-utils/assist-credits.d.ts +482 -0
  62. package/src/lib/app-utils/assist-credits.js +509 -0
  63. package/src/lib/app-utils/assist-credits.js.map +1 -0
  64. package/src/lib/app-utils/attribution-attribute.d.ts +34 -0
  65. package/src/lib/app-utils/attribution-attribute.js +34 -0
  66. package/src/lib/app-utils/attribution-attribute.js.map +1 -0
  67. package/src/lib/app-utils/attribution-guard.d.ts +130 -0
  68. package/src/lib/app-utils/attribution-guard.js +410 -0
  69. package/src/lib/app-utils/attribution-guard.js.map +1 -0
  70. package/src/lib/app-utils/author-css.d.ts +123 -0
  71. package/src/lib/app-utils/author-css.js +275 -0
  72. package/src/lib/app-utils/author-css.js.map +1 -0
  73. package/src/lib/app-utils/author-html-markdown.d.ts +31 -0
  74. package/src/lib/app-utils/author-html-markdown.js +497 -0
  75. package/src/lib/app-utils/author-html-markdown.js.map +1 -0
  76. package/src/lib/app-utils/author-html.d.ts +135 -0
  77. package/src/lib/app-utils/author-html.js +1037 -0
  78. package/src/lib/app-utils/author-html.js.map +1 -0
  79. package/src/lib/app-utils/automation-placeholders.d.ts +72 -0
  80. package/src/lib/app-utils/automation-placeholders.js +207 -0
  81. package/src/lib/app-utils/automation-placeholders.js.map +1 -0
  82. package/src/lib/app-utils/bandwidth-cap.d.ts +183 -0
  83. package/src/lib/app-utils/bandwidth-cap.js +193 -0
  84. package/src/lib/app-utils/bandwidth-cap.js.map +1 -0
  85. package/src/lib/app-utils/binding-token-catalog.d.ts +82 -0
  86. package/src/lib/app-utils/binding-token-catalog.js +293 -0
  87. package/src/lib/app-utils/binding-token-catalog.js.map +1 -0
  88. package/src/lib/app-utils/binding-tokens.d.ts +157 -0
  89. package/src/lib/app-utils/binding-tokens.js +251 -0
  90. package/src/lib/app-utils/binding-tokens.js.map +1 -0
  91. package/src/lib/app-utils/breadcrumb-json-ld.d.ts +57 -0
  92. package/src/lib/app-utils/breadcrumb-json-ld.js +67 -0
  93. package/src/lib/app-utils/breadcrumb-json-ld.js.map +1 -0
  94. package/src/lib/app-utils/campaign-attribution.d.ts +117 -0
  95. package/src/lib/app-utils/campaign-attribution.js +162 -0
  96. package/src/lib/app-utils/campaign-attribution.js.map +1 -0
  97. package/src/lib/app-utils/campaign-forwarding.d.ts +220 -0
  98. package/src/lib/app-utils/campaign-forwarding.js +332 -0
  99. package/src/lib/app-utils/campaign-forwarding.js.map +1 -0
  100. package/src/lib/app-utils/campaign-membership.d.ts +109 -0
  101. package/src/lib/app-utils/campaign-membership.js +176 -0
  102. package/src/lib/app-utils/campaign-membership.js.map +1 -0
  103. package/src/lib/app-utils/campaign-touch.d.ts +206 -0
  104. package/src/lib/app-utils/campaign-touch.js +326 -0
  105. package/src/lib/app-utils/campaign-touch.js.map +1 -0
  106. package/src/lib/app-utils/child-contract-compose.d.ts +28 -0
  107. package/src/lib/app-utils/child-contract-compose.js +140 -0
  108. package/src/lib/app-utils/child-contract-compose.js.map +1 -0
  109. package/src/lib/app-utils/child-contract.d.ts +129 -0
  110. package/src/lib/app-utils/child-contract.js +153 -0
  111. package/src/lib/app-utils/child-contract.js.map +1 -0
  112. package/src/lib/app-utils/collection-delete.d.ts +113 -0
  113. package/src/lib/app-utils/collection-delete.js +120 -0
  114. package/src/lib/app-utils/collection-delete.js.map +1 -0
  115. package/src/lib/app-utils/collection-entries.d.ts +833 -0
  116. package/src/lib/app-utils/collection-entries.js +1285 -0
  117. package/src/lib/app-utils/collection-entries.js.map +1 -0
  118. package/src/lib/app-utils/collection-entry-date.d.ts +129 -0
  119. package/src/lib/app-utils/collection-entry-date.js +183 -0
  120. package/src/lib/app-utils/collection-entry-date.js.map +1 -0
  121. package/src/lib/app-utils/collection-kind.d.ts +55 -0
  122. package/src/lib/app-utils/collection-kind.js +69 -0
  123. package/src/lib/app-utils/collection-kind.js.map +1 -0
  124. package/src/lib/app-utils/collection-slug.d.ts +79 -0
  125. package/src/lib/app-utils/collection-slug.js +70 -0
  126. package/src/lib/app-utils/collection-slug.js.map +1 -0
  127. package/src/lib/app-utils/compose-layout-nodes.d.ts +147 -0
  128. package/src/lib/app-utils/compose-layout-nodes.js +261 -0
  129. package/src/lib/app-utils/compose-layout-nodes.js.map +1 -0
  130. package/src/lib/app-utils/compose-layout-props.d.ts +71 -0
  131. package/src/lib/app-utils/compose-layout-props.js +61 -0
  132. package/src/lib/app-utils/compose-layout-props.js.map +1 -0
  133. package/src/lib/app-utils/compose-reusable-components.d.ts +504 -0
  134. package/src/lib/app-utils/compose-reusable-components.js +1366 -0
  135. package/src/lib/app-utils/compose-reusable-components.js.map +1 -0
  136. package/src/lib/app-utils/compress.d.ts +35 -0
  137. package/src/lib/app-utils/compress.js +38 -0
  138. package/src/lib/app-utils/compress.js.map +1 -0
  139. package/src/lib/app-utils/consent-banner-ui.d.ts +226 -0
  140. package/src/lib/app-utils/consent-banner-ui.js +583 -0
  141. package/src/lib/app-utils/consent-banner-ui.js.map +1 -0
  142. package/src/lib/app-utils/consent-groups.d.ts +189 -0
  143. package/src/lib/app-utils/consent-groups.js +219 -0
  144. package/src/lib/app-utils/consent-groups.js.map +1 -0
  145. package/src/lib/app-utils/consent-preferences-dialog.d.ts +58 -0
  146. package/src/lib/app-utils/consent-preferences-dialog.js +106 -0
  147. package/src/lib/app-utils/consent-preferences-dialog.js.map +1 -0
  148. package/src/lib/app-utils/console-record-links.d.ts +163 -0
  149. package/src/lib/app-utils/console-record-links.js +178 -0
  150. package/src/lib/app-utils/console-record-links.js.map +1 -0
  151. package/src/lib/app-utils/console-routes.d.ts +658 -0
  152. package/src/lib/app-utils/console-routes.js +489 -0
  153. package/src/lib/app-utils/console-routes.js.map +1 -0
  154. package/src/lib/app-utils/console-widget-slot-context.d.ts +46 -0
  155. package/src/lib/app-utils/console-widget-slot-context.js +23 -0
  156. package/src/lib/app-utils/console-widget-slot-context.js.map +1 -0
  157. package/src/lib/app-utils/contact-custom-fields.d.ts +191 -0
  158. package/src/lib/app-utils/contact-custom-fields.js +349 -0
  159. package/src/lib/app-utils/contact-custom-fields.js.map +1 -0
  160. package/src/lib/app-utils/contact-holder.d.ts +52 -0
  161. package/src/lib/app-utils/contact-holder.js +98 -0
  162. package/src/lib/app-utils/contact-holder.js.map +1 -0
  163. package/src/lib/app-utils/contact-merge.d.ts +136 -0
  164. package/src/lib/app-utils/contact-merge.js +379 -0
  165. package/src/lib/app-utils/contact-merge.js.map +1 -0
  166. package/src/lib/app-utils/contacts.d.ts +554 -0
  167. package/src/lib/app-utils/contacts.js +401 -0
  168. package/src/lib/app-utils/contacts.js.map +1 -0
  169. package/src/lib/app-utils/content-author-profile.d.ts +68 -0
  170. package/src/lib/app-utils/content-author-profile.js +118 -0
  171. package/src/lib/app-utils/content-author-profile.js.map +1 -0
  172. package/src/lib/app-utils/content-authors.d.ts +662 -0
  173. package/src/lib/app-utils/content-authors.js +771 -0
  174. package/src/lib/app-utils/content-authors.js.map +1 -0
  175. package/src/lib/app-utils/content-schema-type.d.ts +81 -0
  176. package/src/lib/app-utils/content-schema-type.js +87 -0
  177. package/src/lib/app-utils/content-schema-type.js.map +1 -0
  178. package/src/lib/app-utils/contexts.d.ts +35 -0
  179. package/src/lib/app-utils/contexts.js +35 -0
  180. package/src/lib/app-utils/contexts.js.map +1 -0
  181. package/src/lib/app-utils/create-resource-uid.d.ts +18 -0
  182. package/src/lib/app-utils/create-resource-uid.js +23 -0
  183. package/src/lib/app-utils/create-resource-uid.js.map +1 -0
  184. package/src/lib/app-utils/crm-booking.d.ts +75 -0
  185. package/src/lib/app-utils/crm-booking.js +133 -0
  186. package/src/lib/app-utils/crm-booking.js.map +1 -0
  187. package/src/lib/app-utils/crm-csv.d.ts +232 -0
  188. package/src/lib/app-utils/crm-csv.js +432 -0
  189. package/src/lib/app-utils/crm-csv.js.map +1 -0
  190. package/src/lib/app-utils/crm-digest.d.ts +179 -0
  191. package/src/lib/app-utils/crm-digest.js +271 -0
  192. package/src/lib/app-utils/crm-digest.js.map +1 -0
  193. package/src/lib/app-utils/crm-email-templates.d.ts +172 -0
  194. package/src/lib/app-utils/crm-email-templates.js +382 -0
  195. package/src/lib/app-utils/crm-email-templates.js.map +1 -0
  196. package/src/lib/app-utils/crm-inbound.d.ts +245 -0
  197. package/src/lib/app-utils/crm-inbound.js +407 -0
  198. package/src/lib/app-utils/crm-inbound.js.map +1 -0
  199. package/src/lib/app-utils/crm-kinds.d.ts +73 -0
  200. package/src/lib/app-utils/crm-kinds.js +92 -0
  201. package/src/lib/app-utils/crm-kinds.js.map +1 -0
  202. package/src/lib/app-utils/crm-next-activity.d.ts +107 -0
  203. package/src/lib/app-utils/crm-next-activity.js +140 -0
  204. package/src/lib/app-utils/crm-next-activity.js.map +1 -0
  205. package/src/lib/app-utils/crm-reports.d.ts +479 -0
  206. package/src/lib/app-utils/crm-reports.js +680 -0
  207. package/src/lib/app-utils/crm-reports.js.map +1 -0
  208. package/src/lib/app-utils/crm-task-reminders.d.ts +129 -0
  209. package/src/lib/app-utils/crm-task-reminders.js +139 -0
  210. package/src/lib/app-utils/crm-task-reminders.js.map +1 -0
  211. package/src/lib/app-utils/crm.d.ts +1546 -0
  212. package/src/lib/app-utils/crm.js +1814 -0
  213. package/src/lib/app-utils/crm.js.map +1 -0
  214. package/src/lib/app-utils/csp-report.d.ts +84 -0
  215. package/src/lib/app-utils/csp-report.js +177 -0
  216. package/src/lib/app-utils/csp-report.js.map +1 -0
  217. package/src/lib/app-utils/csv-import.d.ts +192 -0
  218. package/src/lib/app-utils/csv-import.js +279 -0
  219. package/src/lib/app-utils/csv-import.js.map +1 -0
  220. package/src/lib/app-utils/dataset-csv.d.ts +109 -0
  221. package/src/lib/app-utils/dataset-csv.js +235 -0
  222. package/src/lib/app-utils/dataset-csv.js.map +1 -0
  223. package/src/lib/app-utils/dataset-models.d.ts +194 -0
  224. package/src/lib/app-utils/dataset-models.js +409 -0
  225. package/src/lib/app-utils/dataset-models.js.map +1 -0
  226. package/src/lib/app-utils/dataset-query.d.ts +57 -0
  227. package/src/lib/app-utils/dataset-query.js +126 -0
  228. package/src/lib/app-utils/dataset-query.js.map +1 -0
  229. package/src/lib/app-utils/datasets.d.ts +136 -0
  230. package/src/lib/app-utils/datasets.js +177 -0
  231. package/src/lib/app-utils/datasets.js.map +1 -0
  232. package/src/lib/app-utils/decompress.d.ts +36 -0
  233. package/src/lib/app-utils/decompress.js +32 -0
  234. package/src/lib/app-utils/decompress.js.map +1 -0
  235. package/src/lib/app-utils/dedicated-sending-domain.d.ts +47 -0
  236. package/src/lib/app-utils/dedicated-sending-domain.js +114 -0
  237. package/src/lib/app-utils/dedicated-sending-domain.js.map +1 -0
  238. package/src/lib/app-utils/deferred-image.d.ts +86 -0
  239. package/src/lib/app-utils/deferred-image.js +83 -0
  240. package/src/lib/app-utils/deferred-image.js.map +1 -0
  241. package/src/lib/app-utils/definition-canvas-tree.d.ts +61 -0
  242. package/src/lib/app-utils/definition-canvas-tree.js +126 -0
  243. package/src/lib/app-utils/definition-canvas-tree.js.map +1 -0
  244. package/src/lib/app-utils/deployment-shape.d.ts +167 -0
  245. package/src/lib/app-utils/deployment-shape.js +238 -0
  246. package/src/lib/app-utils/deployment-shape.js.map +1 -0
  247. package/src/lib/app-utils/detect-template-placeholders.d.ts +30 -0
  248. package/src/lib/app-utils/detect-template-placeholders.js +53 -0
  249. package/src/lib/app-utils/detect-template-placeholders.js.map +1 -0
  250. package/src/lib/app-utils/dmca-counter-notice.d.ts +185 -0
  251. package/src/lib/app-utils/dmca-counter-notice.js +277 -0
  252. package/src/lib/app-utils/dmca-counter-notice.js.map +1 -0
  253. package/src/lib/app-utils/docs-deflection.d.ts +156 -0
  254. package/src/lib/app-utils/docs-deflection.js +547 -0
  255. package/src/lib/app-utils/docs-deflection.js.map +1 -0
  256. package/src/lib/app-utils/docs-help.d.ts +57 -0
  257. package/src/lib/app-utils/docs-help.generated.d.ts +303 -0
  258. package/src/lib/app-utils/docs-help.generated.js +867 -0
  259. package/src/lib/app-utils/docs-help.generated.js.map +1 -0
  260. package/src/lib/app-utils/docs-help.js +46 -0
  261. package/src/lib/app-utils/docs-help.js.map +1 -0
  262. package/src/lib/app-utils/docs-index.generated.d.ts +29 -0
  263. package/src/lib/app-utils/docs-index.generated.js +8388 -0
  264. package/src/lib/app-utils/docs-index.generated.js.map +1 -0
  265. package/src/lib/app-utils/docs-retrieval.d.ts +67 -0
  266. package/src/lib/app-utils/docs-retrieval.js +188 -0
  267. package/src/lib/app-utils/docs-retrieval.js.map +1 -0
  268. package/src/lib/app-utils/document-landmark.d.ts +50 -0
  269. package/src/lib/app-utils/document-landmark.js +100 -0
  270. package/src/lib/app-utils/document-landmark.js.map +1 -0
  271. package/src/lib/app-utils/duplicate-resource.d.ts +101 -0
  272. package/src/lib/app-utils/duplicate-resource.js +206 -0
  273. package/src/lib/app-utils/duplicate-resource.js.map +1 -0
  274. package/src/lib/app-utils/dynamic-list-rule.d.ts +471 -0
  275. package/src/lib/app-utils/dynamic-list-rule.js +914 -0
  276. package/src/lib/app-utils/dynamic-list-rule.js.map +1 -0
  277. package/src/lib/app-utils/element-animation.d.ts +200 -0
  278. package/src/lib/app-utils/element-animation.js +233 -0
  279. package/src/lib/app-utils/element-animation.js.map +1 -0
  280. package/src/lib/app-utils/element-hidden-style.d.ts +46 -0
  281. package/src/lib/app-utils/element-hidden-style.js +48 -0
  282. package/src/lib/app-utils/element-hidden-style.js.map +1 -0
  283. package/src/lib/app-utils/element-ui.d.ts +243 -0
  284. package/src/lib/app-utils/element-ui.js +459 -0
  285. package/src/lib/app-utils/element-ui.js.map +1 -0
  286. package/src/lib/app-utils/email-starter-policy.d.ts +160 -0
  287. package/src/lib/app-utils/email-starter-policy.js +327 -0
  288. package/src/lib/app-utils/email-starter-policy.js.map +1 -0
  289. package/src/lib/app-utils/email-topics.d.ts +310 -0
  290. package/src/lib/app-utils/email-topics.js +336 -0
  291. package/src/lib/app-utils/email-topics.js.map +1 -0
  292. package/src/lib/app-utils/enabled-plugins-context.d.ts +100 -0
  293. package/src/lib/app-utils/enabled-plugins-context.js +113 -0
  294. package/src/lib/app-utils/enabled-plugins-context.js.map +1 -0
  295. package/src/lib/app-utils/ensure-canvas-root.d.ts +38 -0
  296. package/src/lib/app-utils/ensure-canvas-root.js +61 -0
  297. package/src/lib/app-utils/ensure-canvas-root.js.map +1 -0
  298. package/src/lib/app-utils/entity-picker-context.d.ts +199 -0
  299. package/src/lib/app-utils/entity-picker-context.js +93 -0
  300. package/src/lib/app-utils/entity-picker-context.js.map +1 -0
  301. package/src/lib/app-utils/error-beacon.d.ts +107 -0
  302. package/src/lib/app-utils/error-beacon.js +296 -0
  303. package/src/lib/app-utils/error-beacon.js.map +1 -0
  304. package/src/lib/app-utils/expand-repeatables.d.ts +172 -0
  305. package/src/lib/app-utils/expand-repeatables.js +299 -0
  306. package/src/lib/app-utils/expand-repeatables.js.map +1 -0
  307. package/src/lib/app-utils/foreign-script.d.ts +82 -0
  308. package/src/lib/app-utils/foreign-script.js +102 -0
  309. package/src/lib/app-utils/foreign-script.js.map +1 -0
  310. package/src/lib/app-utils/form-abuse-ceiling.d.ts +146 -0
  311. package/src/lib/app-utils/form-abuse-ceiling.js +158 -0
  312. package/src/lib/app-utils/form-abuse-ceiling.js.map +1 -0
  313. package/src/lib/app-utils/form-contract.d.ts +198 -0
  314. package/src/lib/app-utils/form-contract.js +282 -0
  315. package/src/lib/app-utils/form-contract.js.map +1 -0
  316. package/src/lib/app-utils/form-dataset-binding.d.ts +50 -0
  317. package/src/lib/app-utils/form-dataset-binding.js +74 -0
  318. package/src/lib/app-utils/form-dataset-binding.js.map +1 -0
  319. package/src/lib/app-utils/forms.d.ts +727 -0
  320. package/src/lib/app-utils/forms.js +777 -0
  321. package/src/lib/app-utils/forms.js.map +1 -0
  322. package/src/lib/app-utils/functions.d.ts +188 -0
  323. package/src/lib/app-utils/functions.js +529 -0
  324. package/src/lib/app-utils/functions.js.map +1 -0
  325. package/src/lib/app-utils/guarded-version-save.d.ts +91 -0
  326. package/src/lib/app-utils/guarded-version-save.js +131 -0
  327. package/src/lib/app-utils/guarded-version-save.js.map +1 -0
  328. package/src/lib/app-utils/health-report.d.ts +1766 -0
  329. package/src/lib/app-utils/health-report.js +2072 -0
  330. package/src/lib/app-utils/health-report.js.map +1 -0
  331. package/src/lib/app-utils/host-naming.d.ts +135 -0
  332. package/src/lib/app-utils/host-naming.js +188 -0
  333. package/src/lib/app-utils/host-naming.js.map +1 -0
  334. package/src/lib/app-utils/host-permissions.d.ts +76 -0
  335. package/src/lib/app-utils/host-permissions.js +119 -0
  336. package/src/lib/app-utils/host-permissions.js.map +1 -0
  337. package/src/lib/app-utils/host-tokens.d.ts +228 -0
  338. package/src/lib/app-utils/host-tokens.js +304 -0
  339. package/src/lib/app-utils/host-tokens.js.map +1 -0
  340. package/src/lib/app-utils/idp-profile.d.ts +83 -0
  341. package/src/lib/app-utils/idp-profile.js +268 -0
  342. package/src/lib/app-utils/idp-profile.js.map +1 -0
  343. package/src/lib/app-utils/image-upload-types.d.ts +49 -0
  344. package/src/lib/app-utils/image-upload-types.js +86 -0
  345. package/src/lib/app-utils/image-upload-types.js.map +1 -0
  346. package/src/lib/app-utils/index.d.ts +18 -0
  347. package/src/lib/app-utils/index.js +23 -0
  348. package/src/lib/app-utils/index.js.map +1 -0
  349. package/src/lib/app-utils/internal-traffic.d.ts +197 -0
  350. package/src/lib/app-utils/internal-traffic.js +288 -0
  351. package/src/lib/app-utils/internal-traffic.js.map +1 -0
  352. package/src/lib/app-utils/lineal-order.d.ts +62 -0
  353. package/src/lib/app-utils/lineal-order.js +65 -0
  354. package/src/lib/app-utils/lineal-order.js.map +1 -0
  355. package/src/lib/app-utils/link-references.d.ts +36 -0
  356. package/src/lib/app-utils/link-references.js +89 -0
  357. package/src/lib/app-utils/link-references.js.map +1 -0
  358. package/src/lib/app-utils/link-target-search-context.d.ts +123 -0
  359. package/src/lib/app-utils/link-target-search-context.js +221 -0
  360. package/src/lib/app-utils/link-target-search-context.js.map +1 -0
  361. package/src/lib/app-utils/list-assignment-policy.d.ts +169 -0
  362. package/src/lib/app-utils/list-assignment-policy.js +170 -0
  363. package/src/lib/app-utils/list-assignment-policy.js.map +1 -0
  364. package/src/lib/app-utils/list-import.d.ts +158 -0
  365. package/src/lib/app-utils/list-import.js +332 -0
  366. package/src/lib/app-utils/list-import.js.map +1 -0
  367. package/src/lib/app-utils/llms-txt.d.ts +104 -0
  368. package/src/lib/app-utils/llms-txt.js +144 -0
  369. package/src/lib/app-utils/llms-txt.js.map +1 -0
  370. package/src/lib/app-utils/local-storage-budget.d.ts +75 -0
  371. package/src/lib/app-utils/local-storage-budget.js +153 -0
  372. package/src/lib/app-utils/local-storage-budget.js.map +1 -0
  373. package/src/lib/app-utils/lockdown.d.ts +698 -0
  374. package/src/lib/app-utils/lockdown.js +929 -0
  375. package/src/lib/app-utils/lockdown.js.map +1 -0
  376. package/src/lib/app-utils/margin-utilization.d.ts +267 -0
  377. package/src/lib/app-utils/margin-utilization.js +351 -0
  378. package/src/lib/app-utils/margin-utilization.js.map +1 -0
  379. package/src/lib/app-utils/markdown-lite.d.ts +297 -0
  380. package/src/lib/app-utils/markdown-lite.js +705 -0
  381. package/src/lib/app-utils/markdown-lite.js.map +1 -0
  382. package/src/lib/app-utils/marketing-consent.d.ts +704 -0
  383. package/src/lib/app-utils/marketing-consent.js +783 -0
  384. package/src/lib/app-utils/marketing-consent.js.map +1 -0
  385. package/src/lib/app-utils/marketplace-listing-visibility.d.ts +120 -0
  386. package/src/lib/app-utils/marketplace-listing-visibility.js +139 -0
  387. package/src/lib/app-utils/marketplace-listing-visibility.js.map +1 -0
  388. package/src/lib/app-utils/marketplace-overrides.d.ts +271 -0
  389. package/src/lib/app-utils/marketplace-overrides.js +462 -0
  390. package/src/lib/app-utils/marketplace-overrides.js.map +1 -0
  391. package/src/lib/app-utils/marketplace-provenance.d.ts +150 -0
  392. package/src/lib/app-utils/marketplace-provenance.js +136 -0
  393. package/src/lib/app-utils/marketplace-provenance.js.map +1 -0
  394. package/src/lib/app-utils/marketplace-theme.d.ts +237 -0
  395. package/src/lib/app-utils/marketplace-theme.js +525 -0
  396. package/src/lib/app-utils/marketplace-theme.js.map +1 -0
  397. package/src/lib/app-utils/marketplace-update-state.d.ts +119 -0
  398. package/src/lib/app-utils/marketplace-update-state.js +132 -0
  399. package/src/lib/app-utils/marketplace-update-state.js.map +1 -0
  400. package/src/lib/app-utils/marketplace-verification.d.ts +95 -0
  401. package/src/lib/app-utils/marketplace-verification.js +81 -0
  402. package/src/lib/app-utils/marketplace-verification.js.map +1 -0
  403. package/src/lib/app-utils/measure-node-map.d.ts +76 -0
  404. package/src/lib/app-utils/measure-node-map.js +111 -0
  405. package/src/lib/app-utils/measure-node-map.js.map +1 -0
  406. package/src/lib/app-utils/media-alt.d.ts +55 -0
  407. package/src/lib/app-utils/media-alt.js +58 -0
  408. package/src/lib/app-utils/media-alt.js.map +1 -0
  409. package/src/lib/app-utils/media-asset-facts.d.ts +125 -0
  410. package/src/lib/app-utils/media-asset-facts.js +467 -0
  411. package/src/lib/app-utils/media-asset-facts.js.map +1 -0
  412. package/src/lib/app-utils/media-cdn-scope.d.ts +65 -0
  413. package/src/lib/app-utils/media-cdn-scope.js +75 -0
  414. package/src/lib/app-utils/media-cdn-scope.js.map +1 -0
  415. package/src/lib/app-utils/media-folders.d.ts +161 -0
  416. package/src/lib/app-utils/media-folders.js +230 -0
  417. package/src/lib/app-utils/media-folders.js.map +1 -0
  418. package/src/lib/app-utils/media-metadata.d.ts +277 -0
  419. package/src/lib/app-utils/media-metadata.js +388 -0
  420. package/src/lib/app-utils/media-metadata.js.map +1 -0
  421. package/src/lib/app-utils/media-picker-context.d.ts +93 -0
  422. package/src/lib/app-utils/media-picker-context.js +26 -0
  423. package/src/lib/app-utils/media-picker-context.js.map +1 -0
  424. package/src/lib/app-utils/media-quarantine.d.ts +247 -0
  425. package/src/lib/app-utils/media-quarantine.js +323 -0
  426. package/src/lib/app-utils/media-quarantine.js.map +1 -0
  427. package/src/lib/app-utils/media-ref.d.ts +661 -0
  428. package/src/lib/app-utils/media-ref.js +1055 -0
  429. package/src/lib/app-utils/media-ref.js.map +1 -0
  430. package/src/lib/app-utils/media-takedown-reach.d.ts +126 -0
  431. package/src/lib/app-utils/media-takedown-reach.js +143 -0
  432. package/src/lib/app-utils/media-takedown-reach.js.map +1 -0
  433. package/src/lib/app-utils/member-email-aliases.d.ts +180 -0
  434. package/src/lib/app-utils/member-email-aliases.js +217 -0
  435. package/src/lib/app-utils/member-email-aliases.js.map +1 -0
  436. package/src/lib/app-utils/merge-node-sx.d.ts +47 -0
  437. package/src/lib/app-utils/merge-node-sx.js +123 -0
  438. package/src/lib/app-utils/merge-node-sx.js.map +1 -0
  439. package/src/lib/app-utils/name-match.d.ts +155 -0
  440. package/src/lib/app-utils/name-match.js +175 -0
  441. package/src/lib/app-utils/name-match.js.map +1 -0
  442. package/src/lib/app-utils/name-search.d.ts +117 -0
  443. package/src/lib/app-utils/name-search.js +145 -0
  444. package/src/lib/app-utils/name-search.js.map +1 -0
  445. package/src/lib/app-utils/node-capabilities.d.ts +85 -0
  446. package/src/lib/app-utils/node-capabilities.js +88 -0
  447. package/src/lib/app-utils/node-capabilities.js.map +1 -0
  448. package/src/lib/app-utils/node-definition-sanitizer.d.ts +164 -0
  449. package/src/lib/app-utils/node-definition-sanitizer.js +402 -0
  450. package/src/lib/app-utils/node-definition-sanitizer.js.map +1 -0
  451. package/src/lib/app-utils/node-identity.d.ts +47 -0
  452. package/src/lib/app-utils/node-identity.js +50 -0
  453. package/src/lib/app-utils/node-identity.js.map +1 -0
  454. package/src/lib/app-utils/node-interactions.d.ts +102 -0
  455. package/src/lib/app-utils/node-interactions.js +192 -0
  456. package/src/lib/app-utils/node-interactions.js.map +1 -0
  457. package/src/lib/app-utils/node-url-policy.d.ts +54 -0
  458. package/src/lib/app-utils/node-url-policy.js +72 -0
  459. package/src/lib/app-utils/node-url-policy.js.map +1 -0
  460. package/src/lib/app-utils/notifications.d.ts +71 -0
  461. package/src/lib/app-utils/notifications.js +101 -0
  462. package/src/lib/app-utils/notifications.js.map +1 -0
  463. package/src/lib/app-utils/onboarding-deep-link.d.ts +120 -0
  464. package/src/lib/app-utils/onboarding-deep-link.js +142 -0
  465. package/src/lib/app-utils/onboarding-deep-link.js.map +1 -0
  466. package/src/lib/app-utils/operator-identity.d.ts +207 -0
  467. package/src/lib/app-utils/operator-identity.js +186 -0
  468. package/src/lib/app-utils/operator-identity.js.map +1 -0
  469. package/src/lib/app-utils/org-billing-doc.d.ts +231 -0
  470. package/src/lib/app-utils/org-billing-doc.js +238 -0
  471. package/src/lib/app-utils/org-billing-doc.js.map +1 -0
  472. package/src/lib/app-utils/org-override-reason.d.ts +100 -0
  473. package/src/lib/app-utils/org-override-reason.js +116 -0
  474. package/src/lib/app-utils/org-override-reason.js.map +1 -0
  475. package/src/lib/app-utils/org-permissions.d.ts +194 -0
  476. package/src/lib/app-utils/org-permissions.js +357 -0
  477. package/src/lib/app-utils/org-permissions.js.map +1 -0
  478. package/src/lib/app-utils/org-roles.d.ts +72 -0
  479. package/src/lib/app-utils/org-roles.js +131 -0
  480. package/src/lib/app-utils/org-roles.js.map +1 -0
  481. package/src/lib/app-utils/organizations.d.ts +407 -0
  482. package/src/lib/app-utils/organizations.js +511 -0
  483. package/src/lib/app-utils/organizations.js.map +1 -0
  484. package/src/lib/app-utils/page-header-actions-context.d.ts +83 -0
  485. package/src/lib/app-utils/page-header-actions-context.js +58 -0
  486. package/src/lib/app-utils/page-header-actions-context.js.map +1 -0
  487. package/src/lib/app-utils/page-header-record-context.d.ts +80 -0
  488. package/src/lib/app-utils/page-header-record-context.js +64 -0
  489. package/src/lib/app-utils/page-header-record-context.js.map +1 -0
  490. package/src/lib/app-utils/page-markdown.d.ts +103 -0
  491. package/src/lib/app-utils/page-markdown.js +385 -0
  492. package/src/lib/app-utils/page-markdown.js.map +1 -0
  493. package/src/lib/app-utils/paid-media-source.d.ts +90 -0
  494. package/src/lib/app-utils/paid-media-source.js +184 -0
  495. package/src/lib/app-utils/paid-media-source.js.map +1 -0
  496. package/src/lib/app-utils/palette-sx.d.ts +34 -0
  497. package/src/lib/app-utils/palette-sx.js +150 -0
  498. package/src/lib/app-utils/palette-sx.js.map +1 -0
  499. package/src/lib/app-utils/password-policy.d.ts +47 -0
  500. package/src/lib/app-utils/password-policy.js +46 -0
  501. package/src/lib/app-utils/password-policy.js.map +1 -0
  502. package/src/lib/app-utils/payments-configured.d.ts +84 -0
  503. package/src/lib/app-utils/payments-configured.js +88 -0
  504. package/src/lib/app-utils/payments-configured.js.map +1 -0
  505. package/src/lib/app-utils/person-erasure.d.ts +126 -0
  506. package/src/lib/app-utils/person-erasure.js +121 -0
  507. package/src/lib/app-utils/person-erasure.js.map +1 -0
  508. package/src/lib/app-utils/person-key.d.ts +32 -0
  509. package/src/lib/app-utils/person-key.js +62 -0
  510. package/src/lib/app-utils/person-key.js.map +1 -0
  511. package/src/lib/app-utils/plan-entitlements.d.ts +2756 -0
  512. package/src/lib/app-utils/plan-entitlements.js +4085 -0
  513. package/src/lib/app-utils/plan-entitlements.js.map +1 -0
  514. package/src/lib/app-utils/platform-ad-conversions.d.ts +122 -0
  515. package/src/lib/app-utils/platform-ad-conversions.js +174 -0
  516. package/src/lib/app-utils/platform-ad-conversions.js.map +1 -0
  517. package/src/lib/app-utils/platform-advertising-tags.d.ts +139 -0
  518. package/src/lib/app-utils/platform-advertising-tags.js +203 -0
  519. package/src/lib/app-utils/platform-advertising-tags.js.map +1 -0
  520. package/src/lib/app-utils/platform-brand.d.ts +151 -0
  521. package/src/lib/app-utils/platform-brand.js +175 -0
  522. package/src/lib/app-utils/platform-brand.js.map +1 -0
  523. package/src/lib/app-utils/platform-consent-default.d.ts +142 -0
  524. package/src/lib/app-utils/platform-consent-default.js +295 -0
  525. package/src/lib/app-utils/platform-consent-default.js.map +1 -0
  526. package/src/lib/app-utils/platform-marketing-consent.d.ts +151 -0
  527. package/src/lib/app-utils/platform-marketing-consent.js +182 -0
  528. package/src/lib/app-utils/platform-marketing-consent.js.map +1 -0
  529. package/src/lib/app-utils/platform-marketing-host.d.ts +33 -0
  530. package/src/lib/app-utils/platform-marketing-host.js +97 -0
  531. package/src/lib/app-utils/platform-marketing-host.js.map +1 -0
  532. package/src/lib/app-utils/platform-visitor-consent.d.ts +252 -0
  533. package/src/lib/app-utils/platform-visitor-consent.js +533 -0
  534. package/src/lib/app-utils/platform-visitor-consent.js.map +1 -0
  535. package/src/lib/app-utils/plugin-api-cross-origin.d.ts +61 -0
  536. package/src/lib/app-utils/plugin-api-cross-origin.js +202 -0
  537. package/src/lib/app-utils/plugin-api-cross-origin.js.map +1 -0
  538. package/src/lib/app-utils/plugin-api-rate-limit.d.ts +192 -0
  539. package/src/lib/app-utils/plugin-api-rate-limit.js +270 -0
  540. package/src/lib/app-utils/plugin-api-rate-limit.js.map +1 -0
  541. package/src/lib/app-utils/plugin-artifact-path.d.ts +32 -0
  542. package/src/lib/app-utils/plugin-artifact-path.js +33 -0
  543. package/src/lib/app-utils/plugin-artifact-path.js.map +1 -0
  544. package/src/lib/app-utils/plugin-bundle-checks.d.ts +148 -0
  545. package/src/lib/app-utils/plugin-bundle-checks.js +989 -0
  546. package/src/lib/app-utils/plugin-bundle-checks.js.map +1 -0
  547. package/src/lib/app-utils/plugin-manifest.d.ts +516 -0
  548. package/src/lib/app-utils/plugin-manifest.js +687 -0
  549. package/src/lib/app-utils/plugin-manifest.js.map +1 -0
  550. package/src/lib/app-utils/published-legal-pages.d.ts +71 -0
  551. package/src/lib/app-utils/published-legal-pages.js +90 -0
  552. package/src/lib/app-utils/published-legal-pages.js.map +1 -0
  553. package/src/lib/app-utils/publisher-agreement.d.ts +254 -0
  554. package/src/lib/app-utils/publisher-agreement.js +274 -0
  555. package/src/lib/app-utils/publisher-agreement.js.map +1 -0
  556. package/src/lib/app-utils/publisher-attestation.d.ts +99 -0
  557. package/src/lib/app-utils/publisher-attestation.js +158 -0
  558. package/src/lib/app-utils/publisher-attestation.js.map +1 -0
  559. package/src/lib/app-utils/recipient-email-render.d.ts +216 -0
  560. package/src/lib/app-utils/recipient-email-render.js +221 -0
  561. package/src/lib/app-utils/recipient-email-render.js.map +1 -0
  562. package/src/lib/app-utils/redispatch-caught-error.d.ts +38 -0
  563. package/src/lib/app-utils/redispatch-caught-error.js +46 -0
  564. package/src/lib/app-utils/redispatch-caught-error.js.map +1 -0
  565. package/src/lib/app-utils/registering-plugin.d.ts +19 -0
  566. package/src/lib/app-utils/registering-plugin.js +38 -0
  567. package/src/lib/app-utils/registering-plugin.js.map +1 -0
  568. package/src/lib/app-utils/release-flags.d.ts +283 -0
  569. package/src/lib/app-utils/release-flags.js +518 -0
  570. package/src/lib/app-utils/release-flags.js.map +1 -0
  571. package/src/lib/app-utils/repair-canvas-nodes.d.ts +130 -0
  572. package/src/lib/app-utils/repair-canvas-nodes.js +298 -0
  573. package/src/lib/app-utils/repair-canvas-nodes.js.map +1 -0
  574. package/src/lib/app-utils/repeat-infringer.d.ts +166 -0
  575. package/src/lib/app-utils/repeat-infringer.js +188 -0
  576. package/src/lib/app-utils/repeat-infringer.js.map +1 -0
  577. package/src/lib/app-utils/repeat-sources.d.ts +115 -0
  578. package/src/lib/app-utils/repeat-sources.js +86 -0
  579. package/src/lib/app-utils/repeat-sources.js.map +1 -0
  580. package/src/lib/app-utils/request-geo.d.ts +114 -0
  581. package/src/lib/app-utils/request-geo.js +247 -0
  582. package/src/lib/app-utils/request-geo.js.map +1 -0
  583. package/src/lib/app-utils/request-ip.d.ts +213 -0
  584. package/src/lib/app-utils/request-ip.js +344 -0
  585. package/src/lib/app-utils/request-ip.js.map +1 -0
  586. package/src/lib/app-utils/resolve-named-tokens.d.ts +26 -0
  587. package/src/lib/app-utils/resolve-named-tokens.js +59 -0
  588. package/src/lib/app-utils/resolve-named-tokens.js.map +1 -0
  589. package/src/lib/app-utils/responsive-typography-sx.d.ts +77 -0
  590. package/src/lib/app-utils/responsive-typography-sx.js +122 -0
  591. package/src/lib/app-utils/responsive-typography-sx.js.map +1 -0
  592. package/src/lib/app-utils/reusable-component-keys.d.ts +135 -0
  593. package/src/lib/app-utils/reusable-component-keys.js +140 -0
  594. package/src/lib/app-utils/reusable-component-keys.js.map +1 -0
  595. package/src/lib/app-utils/reusable-prop-values.d.ts +199 -0
  596. package/src/lib/app-utils/reusable-prop-values.js +494 -0
  597. package/src/lib/app-utils/reusable-prop-values.js.map +1 -0
  598. package/src/lib/app-utils/safe-json-ld.d.ts +29 -0
  599. package/src/lib/app-utils/safe-json-ld.js +37 -0
  600. package/src/lib/app-utils/safe-json-ld.js.map +1 -0
  601. package/src/lib/app-utils/sanitize-svg.d.ts +55 -0
  602. package/src/lib/app-utils/sanitize-svg.js +460 -0
  603. package/src/lib/app-utils/sanitize-svg.js.map +1 -0
  604. package/src/lib/app-utils/scheme-sx.d.ts +84 -0
  605. package/src/lib/app-utils/scheme-sx.js +148 -0
  606. package/src/lib/app-utils/scheme-sx.js.map +1 -0
  607. package/src/lib/app-utils/scope-tokens.d.ts +249 -0
  608. package/src/lib/app-utils/scope-tokens.js +331 -0
  609. package/src/lib/app-utils/scope-tokens.js.map +1 -0
  610. package/src/lib/app-utils/screen-link-context-value.d.ts +57 -0
  611. package/src/lib/app-utils/screen-link-context-value.js +43 -0
  612. package/src/lib/app-utils/screen-link-context-value.js.map +1 -0
  613. package/src/lib/app-utils/screen-link-context.d.ts +185 -0
  614. package/src/lib/app-utils/screen-link-context.js +304 -0
  615. package/src/lib/app-utils/screen-link-context.js.map +1 -0
  616. package/src/lib/app-utils/screen-link-value.d.ts +269 -0
  617. package/src/lib/app-utils/screen-link-value.js +384 -0
  618. package/src/lib/app-utils/screen-link-value.js.map +1 -0
  619. package/src/lib/app-utils/screen-route.d.ts +669 -0
  620. package/src/lib/app-utils/screen-route.js +751 -0
  621. package/src/lib/app-utils/screen-route.js.map +1 -0
  622. package/src/lib/app-utils/screen-seo-fields.d.ts +37 -0
  623. package/src/lib/app-utils/screen-seo-fields.js +42 -0
  624. package/src/lib/app-utils/screen-seo-fields.js.map +1 -0
  625. package/src/lib/app-utils/search-indexing.d.ts +162 -0
  626. package/src/lib/app-utils/search-indexing.js +207 -0
  627. package/src/lib/app-utils/search-indexing.js.map +1 -0
  628. package/src/lib/app-utils/seo-listing-fields.d.ts +70 -0
  629. package/src/lib/app-utils/seo-listing-fields.js +75 -0
  630. package/src/lib/app-utils/seo-listing-fields.js.map +1 -0
  631. package/src/lib/app-utils/seo-locale.d.ts +119 -0
  632. package/src/lib/app-utils/seo-locale.js +133 -0
  633. package/src/lib/app-utils/seo-locale.js.map +1 -0
  634. package/src/lib/app-utils/seo-title-variables.d.ts +149 -0
  635. package/src/lib/app-utils/seo-title-variables.js +190 -0
  636. package/src/lib/app-utils/seo-title-variables.js.map +1 -0
  637. package/src/lib/app-utils/seo-title.d.ts +70 -0
  638. package/src/lib/app-utils/seo-title.js +117 -0
  639. package/src/lib/app-utils/seo-title.js.map +1 -0
  640. package/src/lib/app-utils/server.d.ts +174 -0
  641. package/src/lib/app-utils/server.js +314 -0
  642. package/src/lib/app-utils/server.js.map +1 -0
  643. package/src/lib/app-utils/site-context.d.ts +106 -0
  644. package/src/lib/app-utils/site-context.js +100 -0
  645. package/src/lib/app-utils/site-context.js.map +1 -0
  646. package/src/lib/app-utils/sitemap.d.ts +117 -0
  647. package/src/lib/app-utils/sitemap.js +183 -0
  648. package/src/lib/app-utils/sitemap.js.map +1 -0
  649. package/src/lib/app-utils/social-image.d.ts +112 -0
  650. package/src/lib/app-utils/social-image.js +191 -0
  651. package/src/lib/app-utils/social-image.js.map +1 -0
  652. package/src/lib/app-utils/starter-templates.d.ts +99 -0
  653. package/src/lib/app-utils/starter-templates.js +579 -0
  654. package/src/lib/app-utils/starter-templates.js.map +1 -0
  655. package/src/lib/app-utils/stored-nodes.d.ts +120 -0
  656. package/src/lib/app-utils/stored-nodes.js +174 -0
  657. package/src/lib/app-utils/stored-nodes.js.map +1 -0
  658. package/src/lib/app-utils/strip-undefined.d.ts +59 -0
  659. package/src/lib/app-utils/strip-undefined.js +95 -0
  660. package/src/lib/app-utils/strip-undefined.js.map +1 -0
  661. package/src/lib/app-utils/stripe-deployment-mode.d.ts +47 -0
  662. package/src/lib/app-utils/stripe-deployment-mode.js +70 -0
  663. package/src/lib/app-utils/stripe-deployment-mode.js.map +1 -0
  664. package/src/lib/app-utils/support-tiers.d.ts +108 -0
  665. package/src/lib/app-utils/support-tiers.js +201 -0
  666. package/src/lib/app-utils/support-tiers.js.map +1 -0
  667. package/src/lib/app-utils/timezone-geo-hint.d.ts +36 -0
  668. package/src/lib/app-utils/timezone-geo-hint.js +180 -0
  669. package/src/lib/app-utils/timezone-geo-hint.js.map +1 -0
  670. package/src/lib/app-utils/upload-cors.d.ts +155 -0
  671. package/src/lib/app-utils/upload-cors.js +254 -0
  672. package/src/lib/app-utils/upload-cors.js.map +1 -0
  673. package/src/lib/app-utils/upload-inspection.d.ts +159 -0
  674. package/src/lib/app-utils/upload-inspection.js +539 -0
  675. package/src/lib/app-utils/upload-inspection.js.map +1 -0
  676. package/src/lib/app-utils/url-slug.d.ts +40 -0
  677. package/src/lib/app-utils/url-slug.js +42 -0
  678. package/src/lib/app-utils/url-slug.js.map +1 -0
  679. package/src/lib/app-utils/usage-budget.d.ts +429 -0
  680. package/src/lib/app-utils/usage-budget.js +421 -0
  681. package/src/lib/app-utils/usage-budget.js.map +1 -0
  682. package/src/lib/app-utils/variables.d.ts +96 -0
  683. package/src/lib/app-utils/variables.js +233 -0
  684. package/src/lib/app-utils/variables.js.map +1 -0
  685. package/src/lib/app-utils/video-asset-facts.d.ts +61 -0
  686. package/src/lib/app-utils/video-asset-facts.js +70 -0
  687. package/src/lib/app-utils/video-asset-facts.js.map +1 -0
  688. package/src/lib/app-utils/video-object.d.ts +89 -0
  689. package/src/lib/app-utils/video-object.js +245 -0
  690. package/src/lib/app-utils/video-object.js.map +1 -0
  691. package/src/lib/app-utils/visitor-consent.d.ts +757 -0
  692. package/src/lib/app-utils/visitor-consent.js +981 -0
  693. package/src/lib/app-utils/visitor-consent.js.map +1 -0
  694. package/src/lib/app-utils/visitor-record-ceiling.d.ts +223 -0
  695. package/src/lib/app-utils/visitor-record-ceiling.js +215 -0
  696. package/src/lib/app-utils/visitor-record-ceiling.js.map +1 -0
  697. package/src/lib/app-utils/web-vitals-rum.d.ts +53 -0
  698. package/src/lib/app-utils/web-vitals-rum.js +278 -0
  699. package/src/lib/app-utils/web-vitals-rum.js.map +1 -0
  700. package/src/lib/app-utils/webhook-delivery.d.ts +324 -0
  701. package/src/lib/app-utils/webhook-delivery.js +413 -0
  702. package/src/lib/app-utils/webhook-delivery.js.map +1 -0
  703. package/src/lib/app-utils/where-used.d.ts +57 -0
  704. package/src/lib/app-utils/where-used.js +59 -0
  705. package/src/lib/app-utils/where-used.js.map +1 -0
  706. package/src/lib/app-utils/wistia-embed.d.ts +86 -0
  707. package/src/lib/app-utils/wistia-embed.js +119 -0
  708. package/src/lib/app-utils/wistia-embed.js.map +1 -0
  709. package/src/lib/app-utils/workflows.d.ts +136 -0
  710. package/src/lib/app-utils/workflows.js +346 -0
  711. package/src/lib/app-utils/workflows.js.map +1 -0
  712. package/src/lib/canvas-manager/canvas-manager-tree.d.ts +109 -0
  713. package/src/lib/canvas-manager/canvas-manager-tree.js +139 -0
  714. package/src/lib/canvas-manager/canvas-manager-tree.js.map +1 -0
  715. package/src/lib/canvas-manager/canvas-manager.d.ts +549 -0
  716. package/src/lib/canvas-manager/canvas-manager.js +1311 -0
  717. package/src/lib/canvas-manager/canvas-manager.js.map +1 -0
  718. package/src/lib/canvas-manager/index.d.ts +20 -0
  719. package/src/lib/canvas-manager/index.js +21 -0
  720. package/src/lib/canvas-manager/index.js.map +1 -0
  721. package/src/lib/canvas-manager/stores/index.d.ts +17 -0
  722. package/src/lib/canvas-manager/stores/index.js +18 -0
  723. package/src/lib/canvas-manager/stores/index.js.map +1 -0
  724. package/src/lib/canvas-manager/stores/node.store.d.ts +30 -0
  725. package/src/lib/canvas-manager/stores/node.store.js +45 -0
  726. package/src/lib/canvas-manager/stores/node.store.js.map +1 -0
  727. package/src/lib/components-manager/components-manager.d.ts +56 -0
  728. package/src/lib/components-manager/components-manager.js +191 -0
  729. package/src/lib/components-manager/components-manager.js.map +1 -0
  730. package/src/lib/components-manager/index.d.ts +18 -0
  731. package/src/lib/components-manager/index.js +19 -0
  732. package/src/lib/components-manager/index.js.map +1 -0
  733. package/src/lib/emit-manager/emit-manager.d.ts +56 -0
  734. package/src/lib/emit-manager/emit-manager.js +60 -0
  735. package/src/lib/emit-manager/emit-manager.js.map +1 -0
  736. package/src/lib/emit-manager/index.d.ts +18 -0
  737. package/src/lib/emit-manager/index.js +19 -0
  738. package/src/lib/emit-manager/index.js.map +1 -0
  739. package/src/lib/foundation/constants/_internal.d.ts +18 -0
  740. package/src/lib/foundation/constants/_internal.js +62 -0
  741. package/src/lib/foundation/constants/_internal.js.map +1 -0
  742. package/src/lib/foundation/constants/app.d.ts +23 -0
  743. package/src/lib/foundation/constants/app.js +25 -0
  744. package/src/lib/foundation/constants/app.js.map +1 -0
  745. package/src/lib/foundation/constants/canvas.d.ts +18 -0
  746. package/src/lib/foundation/constants/canvas.js +18 -0
  747. package/src/lib/foundation/constants/canvas.js.map +1 -0
  748. package/src/lib/foundation/constants/components.d.ts +54 -0
  749. package/src/lib/foundation/constants/components.js +61 -0
  750. package/src/lib/foundation/constants/components.js.map +1 -0
  751. package/src/lib/foundation/constants/shared.d.ts +50 -0
  752. package/src/lib/foundation/constants/shared.js +49 -0
  753. package/src/lib/foundation/constants/shared.js.map +1 -0
  754. package/src/lib/foundation/constants/symbol.d.ts +63 -0
  755. package/src/lib/foundation/constants/symbol.js +75 -0
  756. package/src/lib/foundation/constants/symbol.js.map +1 -0
  757. package/src/lib/foundation/definitions/components.types.d.ts +372 -0
  758. package/src/lib/foundation/definitions/components.types.js +180 -0
  759. package/src/lib/foundation/definitions/components.types.js.map +1 -0
  760. package/src/lib/foundation/definitions/contact.types.d.ts +73 -0
  761. package/src/lib/foundation/definitions/contact.types.js +107 -0
  762. package/src/lib/foundation/definitions/contact.types.js.map +1 -0
  763. package/src/lib/foundation/definitions/host-content-collections.d.ts +137 -0
  764. package/src/lib/foundation/definitions/host-content-collections.js +219 -0
  765. package/src/lib/foundation/definitions/host-content-collections.js.map +1 -0
  766. package/src/lib/foundation/definitions/org-billing.types.d.ts +1361 -0
  767. package/src/lib/foundation/definitions/org-billing.types.js +77 -0
  768. package/src/lib/foundation/definitions/org-billing.types.js.map +1 -0
  769. package/src/lib/foundation/definitions/organization.types.d.ts +307 -0
  770. package/src/lib/foundation/definitions/organization.types.js +42 -0
  771. package/src/lib/foundation/definitions/organization.types.js.map +1 -0
  772. package/src/lib/foundation/definitions/platform.types.d.ts +1326 -0
  773. package/src/lib/foundation/definitions/platform.types.js +124 -0
  774. package/src/lib/foundation/definitions/platform.types.js.map +1 -0
  775. package/src/lib/foundation/definitions/property-kinds.d.ts +189 -0
  776. package/src/lib/foundation/definitions/property-kinds.js +565 -0
  777. package/src/lib/foundation/definitions/property-kinds.js.map +1 -0
  778. package/src/lib/foundation/definitions/shared.d.ts +23 -0
  779. package/src/lib/foundation/definitions/shared.js +18 -0
  780. package/src/lib/foundation/definitions/shared.js.map +1 -0
  781. package/src/lib/foundation/definitions/write-deny-coverage.util.d.ts +249 -0
  782. package/src/lib/foundation/definitions/write-deny-coverage.util.js +499 -0
  783. package/src/lib/foundation/definitions/write-deny-coverage.util.js.map +1 -0
  784. package/src/lib/foundation/index.d.ts +32 -0
  785. package/src/lib/foundation/index.js +67 -0
  786. package/src/lib/foundation/index.js.map +1 -0
  787. package/src/lib/lifecycle.d.ts +24 -0
  788. package/src/lib/lifecycle.js +39 -0
  789. package/src/lib/lifecycle.js.map +1 -0
  790. package/src/lib/mst/common.d.ts +17 -0
  791. package/src/lib/mst/common.js +23 -0
  792. package/src/lib/mst/common.js.map +1 -0
  793. package/src/lib/mst/index.d.ts +19 -0
  794. package/src/lib/mst/index.js +20 -0
  795. package/src/lib/mst/index.js.map +1 -0
  796. package/src/lib/mst/json.d.ts +22 -0
  797. package/src/lib/mst/json.js +23 -0
  798. package/src/lib/mst/json.js.map +1 -0
  799. package/src/lib/mst/types.d.ts +20 -0
  800. package/src/lib/mst/types.js +18 -0
  801. package/src/lib/mst/types.js.map +1 -0
  802. package/src/lib/plugin-manager/billing-webhook-hooks.d.ts +77 -0
  803. package/src/lib/plugin-manager/billing-webhook-hooks.js +55 -0
  804. package/src/lib/plugin-manager/billing-webhook-hooks.js.map +1 -0
  805. package/src/lib/plugin-manager/commerce-zone-props.d.ts +172 -0
  806. package/src/lib/plugin-manager/commerce-zone-props.js +31 -0
  807. package/src/lib/plugin-manager/commerce-zone-props.js.map +1 -0
  808. package/src/lib/plugin-manager/custom-fields.d.ts +60 -0
  809. package/src/lib/plugin-manager/custom-fields.js +39 -0
  810. package/src/lib/plugin-manager/custom-fields.js.map +1 -0
  811. package/src/lib/plugin-manager/editor-sessions.d.ts +109 -0
  812. package/src/lib/plugin-manager/editor-sessions.js +137 -0
  813. package/src/lib/plugin-manager/editor-sessions.js.map +1 -0
  814. package/src/lib/plugin-manager/enabled-plugins.d.ts +438 -0
  815. package/src/lib/plugin-manager/enabled-plugins.js +403 -0
  816. package/src/lib/plugin-manager/enabled-plugins.js.map +1 -0
  817. package/src/lib/plugin-manager/feature-plugins.d.ts +1314 -0
  818. package/src/lib/plugin-manager/feature-plugins.js +609 -0
  819. package/src/lib/plugin-manager/feature-plugins.js.map +1 -0
  820. package/src/lib/plugin-manager/first-party-plugins.generated.d.ts +11 -0
  821. package/src/lib/plugin-manager/first-party-plugins.generated.js +149 -0
  822. package/src/lib/plugin-manager/first-party-plugins.generated.js.map +1 -0
  823. package/src/lib/plugin-manager/index.d.ts +42 -0
  824. package/src/lib/plugin-manager/index.js +46 -0
  825. package/src/lib/plugin-manager/index.js.map +1 -0
  826. package/src/lib/plugin-manager/install-presets.d.ts +93 -0
  827. package/src/lib/plugin-manager/install-presets.js +86 -0
  828. package/src/lib/plugin-manager/install-presets.js.map +1 -0
  829. package/src/lib/plugin-manager/media-delivery-provider.d.ts +124 -0
  830. package/src/lib/plugin-manager/media-delivery-provider.js +53 -0
  831. package/src/lib/plugin-manager/media-delivery-provider.js.map +1 -0
  832. package/src/lib/plugin-manager/order-fulfilment.d.ts +142 -0
  833. package/src/lib/plugin-manager/order-fulfilment.js +104 -0
  834. package/src/lib/plugin-manager/order-fulfilment.js.map +1 -0
  835. package/src/lib/plugin-manager/plugin-activity-actions.d.ts +122 -0
  836. package/src/lib/plugin-manager/plugin-activity-actions.js +140 -0
  837. package/src/lib/plugin-manager/plugin-activity-actions.js.map +1 -0
  838. package/src/lib/plugin-manager/plugin-bridge.d.ts +98 -0
  839. package/src/lib/plugin-manager/plugin-bridge.js +154 -0
  840. package/src/lib/plugin-manager/plugin-bridge.js.map +1 -0
  841. package/src/lib/plugin-manager/plugin-config.d.ts +148 -0
  842. package/src/lib/plugin-manager/plugin-config.js +228 -0
  843. package/src/lib/plugin-manager/plugin-config.js.map +1 -0
  844. package/src/lib/plugin-manager/plugin-console-crons.d.ts +139 -0
  845. package/src/lib/plugin-manager/plugin-console-crons.js +177 -0
  846. package/src/lib/plugin-manager/plugin-console-crons.js.map +1 -0
  847. package/src/lib/plugin-manager/plugin-contact-capture.d.ts +220 -0
  848. package/src/lib/plugin-manager/plugin-contact-capture.js +89 -0
  849. package/src/lib/plugin-manager/plugin-contact-capture.js.map +1 -0
  850. package/src/lib/plugin-manager/plugin-contributions.d.ts +244 -0
  851. package/src/lib/plugin-manager/plugin-contributions.js +283 -0
  852. package/src/lib/plugin-manager/plugin-contributions.js.map +1 -0
  853. package/src/lib/plugin-manager/plugin-entitlement-keys.d.ts +169 -0
  854. package/src/lib/plugin-manager/plugin-entitlement-keys.js +84 -0
  855. package/src/lib/plugin-manager/plugin-entitlement-keys.js.map +1 -0
  856. package/src/lib/plugin-manager/plugin-entitlements.d.ts +181 -0
  857. package/src/lib/plugin-manager/plugin-entitlements.js +188 -0
  858. package/src/lib/plugin-manager/plugin-entitlements.js.map +1 -0
  859. package/src/lib/plugin-manager/plugin-events.d.ts +145 -0
  860. package/src/lib/plugin-manager/plugin-events.js +79 -0
  861. package/src/lib/plugin-manager/plugin-events.js.map +1 -0
  862. package/src/lib/plugin-manager/plugin-figures.d.ts +251 -0
  863. package/src/lib/plugin-manager/plugin-figures.js +252 -0
  864. package/src/lib/plugin-manager/plugin-figures.js.map +1 -0
  865. package/src/lib/plugin-manager/plugin-host-collections.d.ts +146 -0
  866. package/src/lib/plugin-manager/plugin-host-collections.js +116 -0
  867. package/src/lib/plugin-manager/plugin-host-collections.js.map +1 -0
  868. package/src/lib/plugin-manager/plugin-jobs.d.ts +130 -0
  869. package/src/lib/plugin-manager/plugin-jobs.js +182 -0
  870. package/src/lib/plugin-manager/plugin-jobs.js.map +1 -0
  871. package/src/lib/plugin-manager/plugin-loader.d.ts +86 -0
  872. package/src/lib/plugin-manager/plugin-loader.js +223 -0
  873. package/src/lib/plugin-manager/plugin-loader.js.map +1 -0
  874. package/src/lib/plugin-manager/plugin-manager.d.ts +95 -0
  875. package/src/lib/plugin-manager/plugin-manager.js +343 -0
  876. package/src/lib/plugin-manager/plugin-manager.js.map +1 -0
  877. package/src/lib/plugin-manager/plugin-metered-lines.d.ts +97 -0
  878. package/src/lib/plugin-manager/plugin-metered-lines.js +123 -0
  879. package/src/lib/plugin-manager/plugin-metered-lines.js.map +1 -0
  880. package/src/lib/plugin-manager/plugin-org-erasure.d.ts +52 -0
  881. package/src/lib/plugin-manager/plugin-org-erasure.js +100 -0
  882. package/src/lib/plugin-manager/plugin-org-erasure.js.map +1 -0
  883. package/src/lib/plugin-manager/plugin-permissions.d.ts +69 -0
  884. package/src/lib/plugin-manager/plugin-permissions.js +77 -0
  885. package/src/lib/plugin-manager/plugin-permissions.js.map +1 -0
  886. package/src/lib/plugin-manager/plugin-person-erasure.d.ts +58 -0
  887. package/src/lib/plugin-manager/plugin-person-erasure.js +109 -0
  888. package/src/lib/plugin-manager/plugin-person-erasure.js.map +1 -0
  889. package/src/lib/plugin-manager/plugin-record-cards.d.ts +99 -0
  890. package/src/lib/plugin-manager/plugin-record-cards.js +59 -0
  891. package/src/lib/plugin-manager/plugin-record-cards.js.map +1 -0
  892. package/src/lib/plugin-manager/plugin-record-facts.d.ts +111 -0
  893. package/src/lib/plugin-manager/plugin-record-facts.js +51 -0
  894. package/src/lib/plugin-manager/plugin-record-facts.js.map +1 -0
  895. package/src/lib/plugin-manager/plugin-record-routes.d.ts +129 -0
  896. package/src/lib/plugin-manager/plugin-record-routes.js +93 -0
  897. package/src/lib/plugin-manager/plugin-record-routes.js.map +1 -0
  898. package/src/lib/plugin-manager/plugin-record-timeline.d.ts +147 -0
  899. package/src/lib/plugin-manager/plugin-record-timeline.js +39 -0
  900. package/src/lib/plugin-manager/plugin-record-timeline.js.map +1 -0
  901. package/src/lib/plugin-manager/plugin-resource-drafts.d.ts +137 -0
  902. package/src/lib/plugin-manager/plugin-resource-drafts.js +51 -0
  903. package/src/lib/plugin-manager/plugin-resource-drafts.js.map +1 -0
  904. package/src/lib/plugin-manager/plugin-services.d.ts +94 -0
  905. package/src/lib/plugin-manager/plugin-services.js +153 -0
  906. package/src/lib/plugin-manager/plugin-services.js.map +1 -0
  907. package/src/lib/plugin-manager/plugin-styles-ui.d.ts +71 -0
  908. package/src/lib/plugin-manager/plugin-styles-ui.js +80 -0
  909. package/src/lib/plugin-manager/plugin-styles-ui.js.map +1 -0
  910. package/src/lib/plugin-manager/plugin-styles.d.ts +176 -0
  911. package/src/lib/plugin-manager/plugin-styles.js +186 -0
  912. package/src/lib/plugin-manager/plugin-styles.js.map +1 -0
  913. package/src/lib/plugin-manager/plugin-subprocessors.d.ts +135 -0
  914. package/src/lib/plugin-manager/plugin-subprocessors.js +129 -0
  915. package/src/lib/plugin-manager/plugin-subprocessors.js.map +1 -0
  916. package/src/lib/plugin-manager/plugin-tax-profile.d.ts +84 -0
  917. package/src/lib/plugin-manager/plugin-tax-profile.js +39 -0
  918. package/src/lib/plugin-manager/plugin-tax-profile.js.map +1 -0
  919. package/src/lib/plugin-manager/plugin-user-erasure.d.ts +53 -0
  920. package/src/lib/plugin-manager/plugin-user-erasure.js +84 -0
  921. package/src/lib/plugin-manager/plugin-user-erasure.js.map +1 -0
  922. package/src/lib/plugin-manager/plugin-zones.d.ts +121 -0
  923. package/src/lib/plugin-manager/plugin-zones.js +74 -0
  924. package/src/lib/plugin-manager/plugin-zones.js.map +1 -0
  925. package/src/lib/plugin-manager/realm-plugins.d.ts +112 -0
  926. package/src/lib/plugin-manager/realm-plugins.js +196 -0
  927. package/src/lib/plugin-manager/realm-plugins.js.map +1 -0
  928. package/src/lib/plugin-manager/realm-server.d.ts +54 -0
  929. package/src/lib/plugin-manager/realm-server.js +88 -0
  930. package/src/lib/plugin-manager/realm-server.js.map +1 -0
  931. package/src/lib/plugin-manager/record-zone-props.d.ts +126 -0
  932. package/src/lib/plugin-manager/record-zone-props.js +31 -0
  933. package/src/lib/plugin-manager/record-zone-props.js.map +1 -0
  934. package/src/lib/plugin-manager/site-page-hooks.d.ts +102 -0
  935. package/src/lib/plugin-manager/site-page-hooks.js +114 -0
  936. package/src/lib/plugin-manager/site-page-hooks.js.map +1 -0
  937. package/src/lib/plugin-manager/site-runtime.d.ts +57 -0
  938. package/src/lib/plugin-manager/site-runtime.js +25 -0
  939. package/src/lib/plugin-manager/site-runtime.js.map +1 -0
  940. package/src/lib/plugin-manager/usage-alert-contributors.d.ts +115 -0
  941. package/src/lib/plugin-manager/usage-alert-contributors.js +106 -0
  942. package/src/lib/plugin-manager/usage-alert-contributors.js.map +1 -0
  943. package/src/lib/types/ast.d.ts +199 -0
  944. package/src/lib/types/ast.js +20 -0
  945. package/src/lib/types/ast.js.map +1 -0
  946. package/src/lib/types/index.d.ts +20 -0
  947. package/src/lib/types/index.js +21 -0
  948. package/src/lib/types/index.js.map +1 -0
  949. package/src/lib/types/nodes.d.ts +608 -0
  950. package/src/lib/types/nodes.js +28 -0
  951. package/src/lib/types/nodes.js.map +1 -0
  952. package/src/lib/types/routing.d.ts +17 -0
  953. package/src/lib/types/routing.js +18 -0
  954. package/src/lib/types/routing.js.map +1 -0
  955. package/src/lib/types/screen.d.ts +23 -0
  956. package/src/lib/types/screen.js +18 -0
  957. package/src/lib/types/screen.js.map +1 -0
  958. package/src/lib/utils.d.ts +25 -0
  959. package/src/lib/utils.js +42 -0
  960. package/src/lib/utils.js.map +1 -0
  961. package/src/server.d.ts +37 -0
  962. package/src/server.js +55 -0
  963. package/src/server.js.map +1 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/plugin-manager/plugin-services.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Typed plugin service registry (AGL-2940).\n *\n * A plugin that wants OTHER plugins to extend it — a provider behind a\n * contract, a tool a generator can call, a generator kind — declares a\n * contract token here, and any plugin (first-party or marketplace) registers\n * an implementation against the token. The declaring plugin resolves the\n * implementations when it needs them and never imports the plugin that\n * supplied one, so the dependency runs only from an adopter to a contract.\n *\n * `registerBillingWebhookHandler` and `registerSiteRuntime` are the\n * precedent: one registry per extension seam, filled at registration time,\n * read lazily. What those cannot do is carry a TYPE for the thing registered\n * beyond their one shape, and each new seam meant a new module in core. A\n * contract token carries the implementation type with it, so a seam another\n * plugin invents needs no core edit at all.\n *\n * Attribution follows every other registry: the owner is the plugin whose\n * register fn is running (`setRegisteringPluginId`), or the `pluginId` the\n * caller names for a registration made at module scope, where the loader's\n * marker is not yet set. An implementation with no owner is refused —\n * ownership is what lets a duplicate single-service registration name both\n * claimants rather than silently taking the later one.\n */\n\nimport { getRegisteringPluginId } from '../app-utils/registering-plugin'\n\n/**\n * A contract token. `T` is the implementation type and is carried at the\n * type level only; `__type` never holds a value.\n */\nexport interface PluginServiceContract<T> {\n readonly id: string\n /**\n * Whether more than one plugin may register against the contract. A\n * single-implementation contract (`false`) is a slot — an AI provider\n * routing table, a payment processor — where a second registration from a\n * different plugin is a conflict, not a list. A multiple contract is a set\n * every implementation joins.\n */\n readonly multiple: boolean\n readonly __type?: T\n}\n\nexport interface PluginServiceRegistration<T> {\n contractId: string\n pluginId: string\n /**\n * Which of a plugin's implementations this is, on a multiple contract\n * where one plugin registers several (two provider adapters from one\n * plugin). Absent when the plugin registers one.\n */\n key?: string\n impl: T\n /** Higher resolves first among several implementations; default 0. */\n priority: number\n}\n\nconst contracts = new Map<string, PluginServiceContract<unknown>>()\nconst registrations = new Map<string, PluginServiceRegistration<unknown>[]>()\n\n/**\n * Declares a contract. Idempotent by id for the same `multiple` setting, so\n * a hot reload or a second surface re-evaluating the declaring module gets\n * the token back; declaring the same id with a DIFFERENT setting is a\n * programming error and throws, because two plugins would then disagree\n * about whether the seam is a slot or a set.\n */\nexport function definePluginServiceContract<T>(\n id: string,\n options: { multiple: boolean },\n): PluginServiceContract<T> {\n const key = id.trim()\n if (!key) throw new Error('a plugin service contract needs an id')\n const existing = contracts.get(key)\n if (existing) {\n if (existing.multiple !== options.multiple) {\n throw new Error(\n `plugin service contract \"${key}\" is already defined with ` +\n `multiple=${existing.multiple}; cannot redefine it with ` +\n `multiple=${options.multiple}`,\n )\n }\n return existing as PluginServiceContract<T>\n }\n const contract: PluginServiceContract<T> = { id: key, multiple: options.multiple }\n contracts.set(key, contract)\n return contract\n}\n\nfunction requireContract<T>(contract: PluginServiceContract<T>): PluginServiceContract<T> {\n const known = contracts.get(contract.id)\n if (!known) {\n throw new Error(\n `plugin service contract \"${contract.id}\" is not defined; call ` +\n 'definePluginServiceContract before registering against it',\n )\n }\n return known as PluginServiceContract<T>\n}\n\n/**\n * Registers an implementation. The owner is the loader's marker when a\n * register fn is running, else `options.pluginId`; a registration with\n * neither throws.\n *\n * Re-registration by the SAME plugin under the same `key` replaces its\n * previous entry (hot reload, a second surface, a repeated init); a plugin\n * registering several implementations on a multiple contract tells them\n * apart with `key`. On a single-implementation contract a registration\n * from a DIFFERENT plugin throws naming both, and the incumbent keeps\n * serving.\n */\nexport function registerPluginService<T>(\n contract: PluginServiceContract<T>,\n impl: T,\n options?: { pluginId?: string; priority?: number; key?: string },\n): void {\n const known = requireContract(contract)\n const pluginId = (getRegisteringPluginId() ?? options?.pluginId ?? '').trim()\n if (!pluginId) {\n throw new Error(\n `plugin service \"${known.id}\" registered with no owner: pass ` +\n '{ pluginId } when registering outside a plugin register fn',\n )\n }\n const key = options?.key?.trim() || undefined\n const list = registrations.get(known.id) ?? []\n const foreign = list.find((entry) => entry.pluginId !== pluginId)\n if (!known.multiple && foreign) {\n throw new Error(\n `plugin service \"${known.id}\" is a single-implementation contract ` +\n `already registered by \"${foreign.pluginId}\"; refused \"${pluginId}\"`,\n )\n }\n const kept = list.filter(\n (entry) => !(entry.pluginId === pluginId && (entry.key ?? null) === (key ?? null)),\n )\n kept.push({\n contractId: known.id,\n pluginId,\n ...(key ? { key } : {}),\n impl,\n priority: options?.priority ?? 0,\n })\n registrations.set(known.id, kept)\n}\n\n/**\n * Every implementation of a contract, highest priority first and\n * registration order within a priority. Empty when nothing registered.\n */\nexport function resolvePluginServices<T>(\n contract: PluginServiceContract<T>,\n): PluginServiceRegistration<T>[] {\n const known = requireContract(contract)\n const list = (registrations.get(known.id) ?? []) as PluginServiceRegistration<T>[]\n return [...list].sort((a, b) => b.priority - a.priority)\n}\n\n/**\n * The one implementation of a single contract — or, on a multiple\n * contract, the highest-priority one — or `undefined`.\n */\nexport function resolvePluginService<T>(\n contract: PluginServiceContract<T>,\n): T | undefined {\n return resolvePluginServices(contract)[0]?.impl\n}\n\n/** Whether any plugin has registered against the contract. */\nexport function hasPluginService<T>(contract: PluginServiceContract<T>): boolean {\n return (registrations.get(requireContract(contract).id) ?? []).length > 0\n}\n\n/** Every declared contract id, for diagnostics. */\nexport function listPluginServiceContracts(): string[] {\n return [...contracts.keys()]\n}\n\n/**\n * Drops a plugin's registrations across every contract — what the loader's\n * reverse (a bundle unloading) would call, and what a spec calls to give\n * one fake plugin back its slot.\n */\nexport function unregisterPluginServices(pluginId: string): void {\n for (const [id, list] of registrations) {\n registrations.set(\n id,\n list.filter((entry) => entry.pluginId !== pluginId),\n )\n }\n}\n\n/** Test seam: forget every registration; contracts stay defined. */\nexport function resetPluginServicesForTests(): void {\n registrations.clear()\n}\n"],"names":["getRegisteringPluginId","contracts","Map","registrations","definePluginServiceContract","id","options","key","trim","Error","existing","get","multiple","contract","set","requireContract","known","registerPluginService","impl","pluginId","undefined","list","foreign","find","entry","kept","filter","push","contractId","priority","resolvePluginServices","sort","a","b","resolvePluginService","hasPluginService","length","listPluginServiceContracts","keys","unregisterPluginServices","resetPluginServicesForTests","clear"],"mappings":"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"}
@@ -0,0 +1,71 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * The React half of the plugin stylesheet route (AGL-2486). Its registry twin
19
+ * is `plugin-styles.ts`.
20
+ *
21
+ * ## Why this is a separate file, and NOT on the `@aglyn/aglyn` barrel
22
+ *
23
+ * It was one file to begin with, and that took the dev server to a 500 on
24
+ * every route. `plugin-manager/index.ts` is re-exported by `lib/aglyn.ts`,
25
+ * which `src/server.ts` re-exports in turn — so anything in the plugin-manager
26
+ * barrel is reachable from a SERVER route, and a module calling a client-only
27
+ * React hook (`useSyncExternalStore`) is not. Same family as the recorded
28
+ * `plugin-manager` → `app-utils/api-plugins` cycle: the barrel is the hazard,
29
+ * and the fix is to keep the shared state in a leaf both sides can import and
30
+ * leave the client-only piece off the barrel entirely.
31
+ *
32
+ * So: the REGISTRY (`registerPluginStyles`, `capturePluginStyles`, the store)
33
+ * is plain TypeScript with no React import and stays on the barrel, because
34
+ * `realm-plugins.ts` — which is isomorphic — has to call the capture. This
35
+ * component is deep-imported instead:
36
+ *
37
+ * import { PluginStyles } from '@aglyn/aglyn/plugin-manager/plugin-styles-ui'
38
+ *
39
+ * exactly as `app-utils/consent-banner-ui` already is. Do not add it to
40
+ * `plugin-manager/index.ts`; that is the change that breaks every route.
41
+ *
42
+ * If a route starts 500ing right after you touch this, RESTART the dev server
43
+ * before doubting the edit — Turbopack serves the stale server chunk and
44
+ * neither an edit nor a hard reload clears it.
45
+ *
46
+ * No `'use client'` directive: inside @aglyn/aglyn the directive splits the
47
+ * bundler into a duplicate module graph and the second canvas singleton
48
+ * renders the tenant blank (AGL-52). Every importer is itself a client module.
49
+ */
50
+ import { type ReactElement } from 'react';
51
+ import { type PluginStylesScope } from './plugin-styles';
52
+ /**
53
+ * Renders every plugin stylesheet that belongs on this surface, as plain
54
+ * `<style>` children — so they land wherever the tree lands: the document on
55
+ * the published tenant and in Preview, inside the closed shadow root on the
56
+ * besigner canvas.
57
+ *
58
+ * Unlayered by construction, which is the whole point: that is the slot a
59
+ * plugin's CSS occupies on the published page, and reproducing the SLOT is
60
+ * what makes the editor agree with the published page about which rule wins.
61
+ * Do not route this through an emotion cache — the layered cache would put
62
+ * plugin CSS inside `@layer mui`, where it would start LOSING to component
63
+ * defaults it currently beats.
64
+ *
65
+ * Subscribed rather than read once: realm bundles load asynchronously (post
66
+ * hydration on the tenant, alongside the console shell in the editor), so the
67
+ * canvas is routinely mounted before any plugin has registered anything.
68
+ */
69
+ export declare function PluginStyles(props?: {
70
+ scope?: PluginStylesScope;
71
+ }): ReactElement;
@@ -0,0 +1,80 @@
1
+ import { jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * @license
4
+ * Copyright 2026 Aglyn LLC
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */ /**
18
+ * The React half of the plugin stylesheet route (AGL-2486). Its registry twin
19
+ * is `plugin-styles.ts`.
20
+ *
21
+ * ## Why this is a separate file, and NOT on the `@aglyn/aglyn` barrel
22
+ *
23
+ * It was one file to begin with, and that took the dev server to a 500 on
24
+ * every route. `plugin-manager/index.ts` is re-exported by `lib/aglyn.ts`,
25
+ * which `src/server.ts` re-exports in turn — so anything in the plugin-manager
26
+ * barrel is reachable from a SERVER route, and a module calling a client-only
27
+ * React hook (`useSyncExternalStore`) is not. Same family as the recorded
28
+ * `plugin-manager` → `app-utils/api-plugins` cycle: the barrel is the hazard,
29
+ * and the fix is to keep the shared state in a leaf both sides can import and
30
+ * leave the client-only piece off the barrel entirely.
31
+ *
32
+ * So: the REGISTRY (`registerPluginStyles`, `capturePluginStyles`, the store)
33
+ * is plain TypeScript with no React import and stays on the barrel, because
34
+ * `realm-plugins.ts` — which is isomorphic — has to call the capture. This
35
+ * component is deep-imported instead:
36
+ *
37
+ * import { PluginStyles } from '@aglyn/aglyn/plugin-manager/plugin-styles-ui'
38
+ *
39
+ * exactly as `app-utils/consent-banner-ui` already is. Do not add it to
40
+ * `plugin-manager/index.ts`; that is the change that breaks every route.
41
+ *
42
+ * If a route starts 500ing right after you touch this, RESTART the dev server
43
+ * before doubting the edit — Turbopack serves the stale server chunk and
44
+ * neither an edit nor a hard reload clears it.
45
+ *
46
+ * No `'use client'` directive: inside @aglyn/aglyn the directive splits the
47
+ * bundler into a duplicate module graph and the second canvas singleton
48
+ * renders the tenant blank (AGL-52). Every importer is itself a client module.
49
+ */ import { useSyncExternalStore } from "react";
50
+ import { listPluginStyles, subscribeToPluginStyles } from "./plugin-styles.js";
51
+ /**
52
+ * Renders every plugin stylesheet that belongs on this surface, as plain
53
+ * `<style>` children — so they land wherever the tree lands: the document on
54
+ * the published tenant and in Preview, inside the closed shadow root on the
55
+ * besigner canvas.
56
+ *
57
+ * Unlayered by construction, which is the whole point: that is the slot a
58
+ * plugin's CSS occupies on the published page, and reproducing the SLOT is
59
+ * what makes the editor agree with the published page about which rule wins.
60
+ * Do not route this through an emotion cache — the layered cache would put
61
+ * plugin CSS inside `@layer mui`, where it would start LOSING to component
62
+ * defaults it currently beats.
63
+ *
64
+ * Subscribed rather than read once: realm bundles load asynchronously (post
65
+ * hydration on the tenant, alongside the console shell in the editor), so the
66
+ * canvas is routinely mounted before any plugin has registered anything.
67
+ */ export function PluginStyles(props) {
68
+ var _ref;
69
+ const scope = (_ref = props == null ? void 0 : props.scope) != null ? _ref : 'document';
70
+ const all = useSyncExternalStore(subscribeToPluginStyles, listPluginStyles, listPluginStyles);
71
+ const visible = all.filter((sheet)=>scope === 'shadow' || !sheet.mirrored);
72
+ return /*#__PURE__*/ _jsx(_Fragment, {
73
+ children: visible.map((sheet)=>/*#__PURE__*/ _jsx("style", {
74
+ "data-aglyn-plugin-styles": `${sheet.pluginId}:${sheet.styleId}`,
75
+ children: sheet.css
76
+ }, `${sheet.pluginId}\x00${sheet.styleId}`))
77
+ });
78
+ }
79
+
80
+ //# sourceMappingURL=plugin-styles-ui.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/plugin-manager/plugin-styles-ui.tsx"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The React half of the plugin stylesheet route (AGL-2486). Its registry twin\n * is `plugin-styles.ts`.\n *\n * ## Why this is a separate file, and NOT on the `@aglyn/aglyn` barrel\n *\n * It was one file to begin with, and that took the dev server to a 500 on\n * every route. `plugin-manager/index.ts` is re-exported by `lib/aglyn.ts`,\n * which `src/server.ts` re-exports in turn — so anything in the plugin-manager\n * barrel is reachable from a SERVER route, and a module calling a client-only\n * React hook (`useSyncExternalStore`) is not. Same family as the recorded\n * `plugin-manager` → `app-utils/api-plugins` cycle: the barrel is the hazard,\n * and the fix is to keep the shared state in a leaf both sides can import and\n * leave the client-only piece off the barrel entirely.\n *\n * So: the REGISTRY (`registerPluginStyles`, `capturePluginStyles`, the store)\n * is plain TypeScript with no React import and stays on the barrel, because\n * `realm-plugins.ts` — which is isomorphic — has to call the capture. This\n * component is deep-imported instead:\n *\n * import { PluginStyles } from '@aglyn/aglyn/plugin-manager/plugin-styles-ui'\n *\n * exactly as `app-utils/consent-banner-ui` already is. Do not add it to\n * `plugin-manager/index.ts`; that is the change that breaks every route.\n *\n * If a route starts 500ing right after you touch this, RESTART the dev server\n * before doubting the edit — Turbopack serves the stale server chunk and\n * neither an edit nor a hard reload clears it.\n *\n * No `'use client'` directive: inside @aglyn/aglyn the directive splits the\n * bundler into a duplicate module graph and the second canvas singleton\n * renders the tenant blank (AGL-52). Every importer is itself a client module.\n */\n\nimport { type ReactElement, useSyncExternalStore } from 'react'\nimport {\n listPluginStyles,\n type PluginStylesScope,\n subscribeToPluginStyles,\n} from './plugin-styles'\n\n/**\n * Renders every plugin stylesheet that belongs on this surface, as plain\n * `<style>` children — so they land wherever the tree lands: the document on\n * the published tenant and in Preview, inside the closed shadow root on the\n * besigner canvas.\n *\n * Unlayered by construction, which is the whole point: that is the slot a\n * plugin's CSS occupies on the published page, and reproducing the SLOT is\n * what makes the editor agree with the published page about which rule wins.\n * Do not route this through an emotion cache — the layered cache would put\n * plugin CSS inside `@layer mui`, where it would start LOSING to component\n * defaults it currently beats.\n *\n * Subscribed rather than read once: realm bundles load asynchronously (post\n * hydration on the tenant, alongside the console shell in the editor), so the\n * canvas is routinely mounted before any plugin has registered anything.\n */\nexport function PluginStyles(props?: {\n scope?: PluginStylesScope\n}): ReactElement {\n const scope = props?.scope ?? 'document'\n const all = useSyncExternalStore(\n subscribeToPluginStyles,\n listPluginStyles,\n listPluginStyles,\n )\n const visible = all.filter((sheet) => scope === 'shadow' || !sheet.mirrored)\n return (\n <>\n {visible.map((sheet) => (\n <style\n key={`${sheet.pluginId}\\x00${sheet.styleId}`}\n data-aglyn-plugin-styles={`${sheet.pluginId}:${sheet.styleId}`}\n >\n {sheet.css}\n </style>\n ))}\n </>\n )\n}\n"],"names":["useSyncExternalStore","listPluginStyles","subscribeToPluginStyles","PluginStyles","props","scope","all","visible","filter","sheet","mirrored","map","style","data-aglyn-plugin-styles","pluginId","styleId","css"],"mappings":";AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgCC,GAED,SAA4BA,oBAAoB,QAAQ,QAAO;AAC/D,SACEC,gBAAgB,EAEhBC,uBAAuB,QAClB,qBAAiB;AAExB;;;;;;;;;;;;;;;;CAgBC,GACD,OAAO,SAASC,aAAaC,KAE5B;;IACC,MAAMC,gBAAQD,yBAAAA,MAAOC,KAAK,mBAAI;IAC9B,MAAMC,MAAMN,qBACVE,yBACAD,kBACAA;IAEF,MAAMM,UAAUD,IAAIE,MAAM,CAAC,CAACC,QAAUJ,UAAU,YAAY,CAACI,MAAMC,QAAQ;IAC3E,qBACE;kBACGH,QAAQI,GAAG,CAAC,CAACF,sBACZ,KAACG;gBAECC,4BAA0B,GAAGJ,MAAMK,QAAQ,CAAC,CAAC,EAAEL,MAAMM,OAAO,EAAE;0BAE7DN,MAAMO,GAAG;eAHL,GAAGP,MAAMK,QAAQ,CAAC,IAAI,EAAEL,MAAMM,OAAO,EAAE;;AAQtD"}
@@ -0,0 +1,176 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * Plugin stylesheet registry (AGL-2486) — the route a plugin's raw CSS takes
19
+ * onto EVERY surface that renders site content, so the besigner canvas shows
20
+ * what the published page will show.
21
+ *
22
+ * ## The divergence this closes, as measured
23
+ *
24
+ * `8dc718ed4` layered the canvas emotion cache so CSS that never touches
25
+ * emotion resolves against `@layer mui` the same way on both surfaces. It
26
+ * left one route open, and named it: a plugin's CSS has no way into the
27
+ * canvas at all. Measured 2026-08-23 in a real browser, injecting the SAME
28
+ * rule the SAME way a bundle's CSS injector does
29
+ * (`document.head.appendChild(<style>)`), against a stand-in emotion rule of
30
+ * specificity 0-1-0 inside `@layer mui`, with a 0-0-1 plugin selector:
31
+ *
32
+ * | | published tenant | besigner canvas |
33
+ * | -- | -- | -- |
34
+ * | emotion rule alone | `rgb(9,9,9)` | `rgb(9,9,9)` |
35
+ * | plugin CSS via `document.head` | **`rgb(1,2,3)` — wins** | `rgb(9,9,9)` — **no effect at all** |
36
+ * | plugin CSS in the shadow root | n/a | `rgb(1,2,3)` — wins |
37
+ * | control: plugin CSS wrapped in `@layer mui` | `rgb(9,9,9)` — loses | `rgb(9,9,9)` — loses |
38
+ *
39
+ * The canvas shadow root is `mode: 'closed'` with `:host { all: initial }`
40
+ * and no `adoptedStyleSheets`, so a document-level rule cannot cross into it
41
+ * — not a specificity loss, a total miss. On the published page the same rule
42
+ * beats every MUI and `sx` declaration UNCONDITIONALLY, because an unlayered
43
+ * normal declaration outranks every layered one. Two opposite outcomes from
44
+ * one plugin. That is "what you see is not what you publish".
45
+ *
46
+ * The control row is the load-bearing half: wrapped in `@layer mui` the
47
+ * identical rule LOSES on both surfaces, so the win is the layer and not
48
+ * insertion order — and the canvas now agrees with the published page on
49
+ * both the win and the loss.
50
+ *
51
+ * ## The shape of the fix
52
+ *
53
+ * Registered CSS is rendered by `PluginStyles` — the React half, which lives
54
+ * in the sibling `plugin-styles-ui.tsx` and is deep-imported rather than
55
+ * exported from this barrel, because a client-only hook on a barrel that
56
+ * `src/server.ts` re-exports 500s every server route (that is not
57
+ * hypothetical: it is how this shipped the first time). It renders each sheet
58
+ * as a plain `<style>` child of the site-content root — the same position, and the same unlayered
59
+ * cascade slot, that a Custom HTML `css` block already occupies
60
+ * (`custom-html.tsx`). On the tenant that root is the document; on the canvas
61
+ * it is inside the closed shadow root. One component, one order, one outcome.
62
+ *
63
+ * Two writers, because a route nothing writes to is not a fix:
64
+ *
65
+ * - `registerPluginStyles` is the sanctioned API, on the realm host ABI
66
+ * (the host hands bundles the whole `aglyn` namespace) and available to
67
+ * first-party plugins by import.
68
+ * - {@link capturePluginStyles} brackets a realm bundle's module evaluation
69
+ * and `register()` call and picks up any `<style>` it appends to
70
+ * `document.head` itself — which is exactly what every bundler's CSS
71
+ * injector emits for an `import './styles.css'`. Those are registered as
72
+ * MIRRORS: the original element is left alone, so anything a plugin styles
73
+ * on the console side keeps working, and only shadow surfaces render the
74
+ * copy (the document already has the original).
75
+ *
76
+ * ## What this deliberately does NOT do
77
+ *
78
+ * It does not remove or neutralise the plugin's own `document.head` element.
79
+ * A realm plugin can register console surfaces as well as site components,
80
+ * and CSS it injected for its console panel must keep applying there. The
81
+ * consequence — a realm bundle can still restyle console chrome through its
82
+ * own `document.head` write — is unchanged by this file and is not a boundary
83
+ * CSS was ever holding: a realm bundle is staff-reviewed, signed code running
84
+ * in the app realm with the host's React, so it can already do anything the
85
+ * console can. See [[project_plugin_sandbox_boundary]].
86
+ *
87
+ * What the NEW route adds is strictly less power than that: on the canvas it
88
+ * lands inside a closed shadow root, so it cannot match a console element at
89
+ * all, and it is scheme-filtered on the way in.
90
+ */
91
+ export interface PluginStyleSheet {
92
+ /** Owning plugin id — the listing id for a realm bundle. */
93
+ pluginId: string;
94
+ /** Stable id within the plugin; re-registering the pair replaces. */
95
+ styleId: string;
96
+ /** CSS text, already through {@link sanitizeAuthorCss}. */
97
+ css: string;
98
+ /**
99
+ * True when these rules ALSO exist as a live `<style>` in the host
100
+ * document, because {@link capturePluginStyles} mirrored them rather than
101
+ * moving them. Document surfaces must not render a mirror — the original
102
+ * already applies there and a second copy would only double the bytes.
103
+ * Shadow surfaces must, because nothing in the document reaches them.
104
+ */
105
+ mirrored: boolean;
106
+ }
107
+ export interface RegisterPluginStylesInput {
108
+ pluginId: string;
109
+ /** Defaults to `'default'`; give distinct ids to register several sheets. */
110
+ styleId?: string;
111
+ css: string;
112
+ }
113
+ /** Where `PluginStyles` is rendering, which decides mirror handling. */
114
+ export type PluginStylesScope = 'document' | 'shadow';
115
+ /**
116
+ * Registers (or replaces) one plugin stylesheet.
117
+ *
118
+ * The CSS is scheme-filtered by {@link sanitizeAuthorCss} — the same
119
+ * function the published Custom HTML path uses — so an `http:` or unknown
120
+ * scheme in a `url()` becomes `about:invalid` and contacts nobody. Hosts are
121
+ * deliberately not restricted; that is the AGL-1725 warn-and-disclose
122
+ * decision, and applying a different rule here would mean a plugin's CSS
123
+ * rendered differently from an author's.
124
+ *
125
+ * Registering identical CSS again is a no-op (no re-render), so a plugin may
126
+ * call this on every render without thinking about it.
127
+ *
128
+ * Do NOT wrap your rules in `@layer mui`. The unlayered slot is the whole
129
+ * point; inside the layer the same rule starts losing to component defaults
130
+ * it is meant to beat (the control row in the table above).
131
+ */
132
+ export declare function registerPluginStyles(input: RegisterPluginStylesInput): void;
133
+ /** Drops one sheet, or every sheet a plugin owns when `styleId` is omitted. */
134
+ export declare function unregisterPluginStyles(pluginId: string, styleId?: string): void;
135
+ /** Every registered sheet, in registration order. Identity-stable. */
136
+ export declare function listPluginStyles(): readonly PluginStyleSheet[];
137
+ /** Subscribes to registry changes; returns the unsubscribe. */
138
+ export declare function subscribeToPluginStyles(listener: () => void): () => void;
139
+ /** Test seam. Never called by product code. */
140
+ export declare function resetPluginStylesForTest(): void;
141
+ /**
142
+ * Runs `load` with `document.head` watched, and registers every `<style>`
143
+ * the bundle appends while it runs as a MIRRORED sheet.
144
+ *
145
+ * This is the writer that makes the registry real for bundles nobody has
146
+ * updated. `import './styles.css'` in any bundler compiles to a
147
+ * `document.head.appendChild(styleElement)` at module-evaluation time, which
148
+ * is inside this window, so the commonest shape of plugin CSS is picked up
149
+ * with no change to the plugin.
150
+ *
151
+ * Notes for whoever touches this next:
152
+ *
153
+ * - `<link rel="stylesheet">` is deliberately NOT captured. Next adds its own
154
+ * chunk `<link>`s to the head at unpredictable moments, and a window this
155
+ * wide cannot tell one from a plugin's — neutralising the wrong one breaks
156
+ * the console. A plugin needing a linked stylesheet calls
157
+ * {@link registerPluginStyles} with an `@import`, or inlines it.
158
+ * - There is deliberately no `takeRecords()` drain before `disconnect()`, and
159
+ * adding one back would be dead code: a `MutationObserver` queues its
160
+ * microtask AT MUTATION TIME, and the microtask queue is FIFO, so anything
161
+ * appended inside `load` is always delivered before the `await load()`
162
+ * continuation that reaches the `finally`. A drain was written first and
163
+ * removed when mutating it away turned no test red — which is the only
164
+ * honest signal that a branch is unreachable.
165
+ * - Text written to a captured element AFTER the window closes still
166
+ * propagates: each captured element keeps its own observer for the life of
167
+ * the page. That is what keeps a dev-mode emotion instance (which sets
168
+ * `textContent`) in sync. A production emotion instance in "speedy" mode
169
+ * inserts through `CSSOM` with no mutation to observe and is NOT tracked —
170
+ * but a realm bundle carrying its own emotion is already an ABI violation
171
+ * (it would carry a second React with it), so that is a shape this loader
172
+ * refuses for other reasons.
173
+ * - Failures here must never take the load down: a plugin that renders is
174
+ * better than a console that does not.
175
+ */
176
+ export declare function capturePluginStyles<T>(pluginId: string, load: () => Promise<T>): Promise<T>;
@@ -0,0 +1,186 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ // Deliberately NO 'use client' directive — see the note at the top of
17
+ // `app-utils/consent-banner-ui.tsx`. Inside @aglyn/aglyn the directive splits
18
+ // the bundler into a duplicate module graph and the second canvas singleton
19
+ // renders the tenant blank (AGL-52). Every importer is itself a client module.
20
+ import { sanitizeAuthorCss } from "../app-utils/author-css.js";
21
+ const sheets = [];
22
+ const listeners = new Set();
23
+ // `useSyncExternalStore` compares snapshots by identity and calls
24
+ // `getSnapshot` during render, so it MUST be a cached array — returning
25
+ // `sheets.slice()` fresh each call is an infinite render loop.
26
+ let snapshot = [];
27
+ function publish() {
28
+ snapshot = sheets.slice();
29
+ for (const listener of [
30
+ ...listeners
31
+ ])listener();
32
+ }
33
+ function keyOf(pluginId, styleId) {
34
+ return `${pluginId}\x00${styleId}`;
35
+ }
36
+ /**
37
+ * Registers (or replaces) one plugin stylesheet.
38
+ *
39
+ * The CSS is scheme-filtered by {@link sanitizeAuthorCss} — the same
40
+ * function the published Custom HTML path uses — so an `http:` or unknown
41
+ * scheme in a `url()` becomes `about:invalid` and contacts nobody. Hosts are
42
+ * deliberately not restricted; that is the AGL-1725 warn-and-disclose
43
+ * decision, and applying a different rule here would mean a plugin's CSS
44
+ * rendered differently from an author's.
45
+ *
46
+ * Registering identical CSS again is a no-op (no re-render), so a plugin may
47
+ * call this on every render without thinking about it.
48
+ *
49
+ * Do NOT wrap your rules in `@layer mui`. The unlayered slot is the whole
50
+ * point; inside the layer the same rule starts losing to component defaults
51
+ * it is meant to beat (the control row in the table above).
52
+ */ export function registerPluginStyles(input) {
53
+ const pluginId = input == null ? void 0 : input.pluginId;
54
+ const styleId = (input == null ? void 0 : input.styleId) || 'default';
55
+ if (!pluginId || typeof (input == null ? void 0 : input.css) !== 'string') return;
56
+ writeSheet({
57
+ pluginId,
58
+ styleId,
59
+ css: sanitizeAuthorCss(input.css),
60
+ mirrored: false
61
+ });
62
+ }
63
+ function writeSheet(next) {
64
+ const key = keyOf(next.pluginId, next.styleId);
65
+ const index = sheets.findIndex((sheet)=>keyOf(sheet.pluginId, sheet.styleId) === key);
66
+ if (index >= 0) {
67
+ const current = sheets[index];
68
+ if (current.css === next.css && current.mirrored === next.mirrored) return;
69
+ sheets[index] = next;
70
+ } else {
71
+ sheets.push(next);
72
+ }
73
+ publish();
74
+ }
75
+ /** Drops one sheet, or every sheet a plugin owns when `styleId` is omitted. */ export function unregisterPluginStyles(pluginId, styleId) {
76
+ const before = sheets.length;
77
+ for(let index = sheets.length - 1; index >= 0; index--){
78
+ const sheet = sheets[index];
79
+ if (sheet.pluginId !== pluginId) continue;
80
+ if (styleId !== undefined && sheet.styleId !== styleId) continue;
81
+ sheets.splice(index, 1);
82
+ }
83
+ if (sheets.length !== before) publish();
84
+ }
85
+ /** Every registered sheet, in registration order. Identity-stable. */ export function listPluginStyles() {
86
+ return snapshot;
87
+ }
88
+ /** Subscribes to registry changes; returns the unsubscribe. */ export function subscribeToPluginStyles(listener) {
89
+ listeners.add(listener);
90
+ return ()=>{
91
+ listeners.delete(listener);
92
+ };
93
+ }
94
+ /** Test seam. Never called by product code. */ export function resetPluginStylesForTest() {
95
+ sheets.length = 0;
96
+ publish();
97
+ }
98
+ /**
99
+ * Runs `load` with `document.head` watched, and registers every `<style>`
100
+ * the bundle appends while it runs as a MIRRORED sheet.
101
+ *
102
+ * This is the writer that makes the registry real for bundles nobody has
103
+ * updated. `import './styles.css'` in any bundler compiles to a
104
+ * `document.head.appendChild(styleElement)` at module-evaluation time, which
105
+ * is inside this window, so the commonest shape of plugin CSS is picked up
106
+ * with no change to the plugin.
107
+ *
108
+ * Notes for whoever touches this next:
109
+ *
110
+ * - `<link rel="stylesheet">` is deliberately NOT captured. Next adds its own
111
+ * chunk `<link>`s to the head at unpredictable moments, and a window this
112
+ * wide cannot tell one from a plugin's — neutralising the wrong one breaks
113
+ * the console. A plugin needing a linked stylesheet calls
114
+ * {@link registerPluginStyles} with an `@import`, or inlines it.
115
+ * - There is deliberately no `takeRecords()` drain before `disconnect()`, and
116
+ * adding one back would be dead code: a `MutationObserver` queues its
117
+ * microtask AT MUTATION TIME, and the microtask queue is FIFO, so anything
118
+ * appended inside `load` is always delivered before the `await load()`
119
+ * continuation that reaches the `finally`. A drain was written first and
120
+ * removed when mutating it away turned no test red — which is the only
121
+ * honest signal that a branch is unreachable.
122
+ * - Text written to a captured element AFTER the window closes still
123
+ * propagates: each captured element keeps its own observer for the life of
124
+ * the page. That is what keeps a dev-mode emotion instance (which sets
125
+ * `textContent`) in sync. A production emotion instance in "speedy" mode
126
+ * inserts through `CSSOM` with no mutation to observe and is NOT tracked —
127
+ * but a realm bundle carrying its own emotion is already an ABI violation
128
+ * (it would carry a second React with it), so that is a shape this loader
129
+ * refuses for other reasons.
130
+ * - Failures here must never take the load down: a plugin that renders is
131
+ * better than a console that does not.
132
+ */ export async function capturePluginStyles(pluginId, load) {
133
+ const doc = typeof document === 'undefined' ? null : document;
134
+ if (!(doc == null ? void 0 : doc.head) || typeof MutationObserver === 'undefined') return load();
135
+ const captured = new Map();
136
+ const take = (nodes)=>{
137
+ for (const node of Array.from(nodes)){
138
+ if (!isStyleElement(node) || captured.has(node)) continue;
139
+ const styleId = `captured-${captured.size + 1}`;
140
+ captured.set(node, styleId);
141
+ trackCapturedStyle(pluginId, styleId, node);
142
+ }
143
+ };
144
+ const observer = new MutationObserver((records)=>{
145
+ for (const record of records)take(record.addedNodes);
146
+ });
147
+ try {
148
+ observer.observe(doc.head, {
149
+ childList: true
150
+ });
151
+ return await load();
152
+ } finally{
153
+ try {
154
+ observer.disconnect();
155
+ } catch (error) {
156
+ console.warn(`plugin styles: capture for ${pluginId} failed:`, error);
157
+ }
158
+ }
159
+ }
160
+ function isStyleElement(node) {
161
+ var _node_tagName;
162
+ return (node == null ? void 0 : node.nodeType) === 1 && ((_node_tagName = node.tagName) == null ? void 0 : _node_tagName.toUpperCase()) === 'STYLE';
163
+ }
164
+ function trackCapturedStyle(pluginId, styleId, element) {
165
+ const sync = ()=>{
166
+ var _element_textContent;
167
+ writeSheet({
168
+ pluginId,
169
+ styleId,
170
+ css: sanitizeAuthorCss((_element_textContent = element.textContent) != null ? _element_textContent : ''),
171
+ mirrored: true
172
+ });
173
+ };
174
+ sync();
175
+ try {
176
+ new MutationObserver(sync).observe(element, {
177
+ childList: true,
178
+ characterData: true,
179
+ subtree: true
180
+ });
181
+ } catch (unused) {
182
+ // An environment without a working observer still gets the initial text.
183
+ }
184
+ }
185
+
186
+ //# sourceMappingURL=plugin-styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/plugin-manager/plugin-styles.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Deliberately NO 'use client' directive — see the note at the top of\n// `app-utils/consent-banner-ui.tsx`. Inside @aglyn/aglyn the directive splits\n// the bundler into a duplicate module graph and the second canvas singleton\n// renders the tenant blank (AGL-52). Every importer is itself a client module.\n\nimport { sanitizeAuthorCss } from '../app-utils/author-css'\n\n/**\n * Plugin stylesheet registry (AGL-2486) — the route a plugin's raw CSS takes\n * onto EVERY surface that renders site content, so the besigner canvas shows\n * what the published page will show.\n *\n * ## The divergence this closes, as measured\n *\n * `8dc718ed4` layered the canvas emotion cache so CSS that never touches\n * emotion resolves against `@layer mui` the same way on both surfaces. It\n * left one route open, and named it: a plugin's CSS has no way into the\n * canvas at all. Measured 2026-08-23 in a real browser, injecting the SAME\n * rule the SAME way a bundle's CSS injector does\n * (`document.head.appendChild(<style>)`), against a stand-in emotion rule of\n * specificity 0-1-0 inside `@layer mui`, with a 0-0-1 plugin selector:\n *\n * | | published tenant | besigner canvas |\n * | -- | -- | -- |\n * | emotion rule alone | `rgb(9,9,9)` | `rgb(9,9,9)` |\n * | plugin CSS via `document.head` | **`rgb(1,2,3)` — wins** | `rgb(9,9,9)` — **no effect at all** |\n * | plugin CSS in the shadow root | n/a | `rgb(1,2,3)` — wins |\n * | control: plugin CSS wrapped in `@layer mui` | `rgb(9,9,9)` — loses | `rgb(9,9,9)` — loses |\n *\n * The canvas shadow root is `mode: 'closed'` with `:host { all: initial }`\n * and no `adoptedStyleSheets`, so a document-level rule cannot cross into it\n * — not a specificity loss, a total miss. On the published page the same rule\n * beats every MUI and `sx` declaration UNCONDITIONALLY, because an unlayered\n * normal declaration outranks every layered one. Two opposite outcomes from\n * one plugin. That is \"what you see is not what you publish\".\n *\n * The control row is the load-bearing half: wrapped in `@layer mui` the\n * identical rule LOSES on both surfaces, so the win is the layer and not\n * insertion order — and the canvas now agrees with the published page on\n * both the win and the loss.\n *\n * ## The shape of the fix\n *\n * Registered CSS is rendered by `PluginStyles` — the React half, which lives\n * in the sibling `plugin-styles-ui.tsx` and is deep-imported rather than\n * exported from this barrel, because a client-only hook on a barrel that\n * `src/server.ts` re-exports 500s every server route (that is not\n * hypothetical: it is how this shipped the first time). It renders each sheet\n * as a plain `<style>` child of the site-content root — the same position, and the same unlayered\n * cascade slot, that a Custom HTML `css` block already occupies\n * (`custom-html.tsx`). On the tenant that root is the document; on the canvas\n * it is inside the closed shadow root. One component, one order, one outcome.\n *\n * Two writers, because a route nothing writes to is not a fix:\n *\n * - `registerPluginStyles` is the sanctioned API, on the realm host ABI\n * (the host hands bundles the whole `aglyn` namespace) and available to\n * first-party plugins by import.\n * - {@link capturePluginStyles} brackets a realm bundle's module evaluation\n * and `register()` call and picks up any `<style>` it appends to\n * `document.head` itself — which is exactly what every bundler's CSS\n * injector emits for an `import './styles.css'`. Those are registered as\n * MIRRORS: the original element is left alone, so anything a plugin styles\n * on the console side keeps working, and only shadow surfaces render the\n * copy (the document already has the original).\n *\n * ## What this deliberately does NOT do\n *\n * It does not remove or neutralise the plugin's own `document.head` element.\n * A realm plugin can register console surfaces as well as site components,\n * and CSS it injected for its console panel must keep applying there. The\n * consequence — a realm bundle can still restyle console chrome through its\n * own `document.head` write — is unchanged by this file and is not a boundary\n * CSS was ever holding: a realm bundle is staff-reviewed, signed code running\n * in the app realm with the host's React, so it can already do anything the\n * console can. See [[project_plugin_sandbox_boundary]].\n *\n * What the NEW route adds is strictly less power than that: on the canvas it\n * lands inside a closed shadow root, so it cannot match a console element at\n * all, and it is scheme-filtered on the way in.\n */\nexport interface PluginStyleSheet {\n /** Owning plugin id — the listing id for a realm bundle. */\n pluginId: string\n /** Stable id within the plugin; re-registering the pair replaces. */\n styleId: string\n /** CSS text, already through {@link sanitizeAuthorCss}. */\n css: string\n /**\n * True when these rules ALSO exist as a live `<style>` in the host\n * document, because {@link capturePluginStyles} mirrored them rather than\n * moving them. Document surfaces must not render a mirror — the original\n * already applies there and a second copy would only double the bytes.\n * Shadow surfaces must, because nothing in the document reaches them.\n */\n mirrored: boolean\n}\n\nexport interface RegisterPluginStylesInput {\n pluginId: string\n /** Defaults to `'default'`; give distinct ids to register several sheets. */\n styleId?: string\n css: string\n}\n\n/** Where `PluginStyles` is rendering, which decides mirror handling. */\nexport type PluginStylesScope = 'document' | 'shadow'\n\nconst sheets: PluginStyleSheet[] = []\nconst listeners = new Set<() => void>()\n// `useSyncExternalStore` compares snapshots by identity and calls\n// `getSnapshot` during render, so it MUST be a cached array — returning\n// `sheets.slice()` fresh each call is an infinite render loop.\nlet snapshot: readonly PluginStyleSheet[] = []\n\nfunction publish(): void {\n snapshot = sheets.slice()\n for (const listener of [...listeners]) listener()\n}\n\nfunction keyOf(pluginId: string, styleId: string): string {\n return `${pluginId}\\x00${styleId}`\n}\n\n/**\n * Registers (or replaces) one plugin stylesheet.\n *\n * The CSS is scheme-filtered by {@link sanitizeAuthorCss} — the same\n * function the published Custom HTML path uses — so an `http:` or unknown\n * scheme in a `url()` becomes `about:invalid` and contacts nobody. Hosts are\n * deliberately not restricted; that is the AGL-1725 warn-and-disclose\n * decision, and applying a different rule here would mean a plugin's CSS\n * rendered differently from an author's.\n *\n * Registering identical CSS again is a no-op (no re-render), so a plugin may\n * call this on every render without thinking about it.\n *\n * Do NOT wrap your rules in `@layer mui`. The unlayered slot is the whole\n * point; inside the layer the same rule starts losing to component defaults\n * it is meant to beat (the control row in the table above).\n */\nexport function registerPluginStyles(input: RegisterPluginStylesInput): void {\n const pluginId = input?.pluginId\n const styleId = input?.styleId || 'default'\n if (!pluginId || typeof input?.css !== 'string') return\n writeSheet({\n pluginId,\n styleId,\n css: sanitizeAuthorCss(input.css),\n mirrored: false,\n })\n}\n\nfunction writeSheet(next: PluginStyleSheet): void {\n const key = keyOf(next.pluginId, next.styleId)\n const index = sheets.findIndex(\n (sheet) => keyOf(sheet.pluginId, sheet.styleId) === key,\n )\n if (index >= 0) {\n const current = sheets[index]\n if (current.css === next.css && current.mirrored === next.mirrored) return\n sheets[index] = next\n } else {\n sheets.push(next)\n }\n publish()\n}\n\n/** Drops one sheet, or every sheet a plugin owns when `styleId` is omitted. */\nexport function unregisterPluginStyles(\n pluginId: string,\n styleId?: string,\n): void {\n const before = sheets.length\n for (let index = sheets.length - 1; index >= 0; index--) {\n const sheet = sheets[index]\n if (sheet.pluginId !== pluginId) continue\n if (styleId !== undefined && sheet.styleId !== styleId) continue\n sheets.splice(index, 1)\n }\n if (sheets.length !== before) publish()\n}\n\n/** Every registered sheet, in registration order. Identity-stable. */\nexport function listPluginStyles(): readonly PluginStyleSheet[] {\n return snapshot\n}\n\n/** Subscribes to registry changes; returns the unsubscribe. */\nexport function subscribeToPluginStyles(listener: () => void): () => void {\n listeners.add(listener)\n return () => {\n listeners.delete(listener)\n }\n}\n\n/** Test seam. Never called by product code. */\nexport function resetPluginStylesForTest(): void {\n sheets.length = 0\n publish()\n}\n\n/**\n * Runs `load` with `document.head` watched, and registers every `<style>`\n * the bundle appends while it runs as a MIRRORED sheet.\n *\n * This is the writer that makes the registry real for bundles nobody has\n * updated. `import './styles.css'` in any bundler compiles to a\n * `document.head.appendChild(styleElement)` at module-evaluation time, which\n * is inside this window, so the commonest shape of plugin CSS is picked up\n * with no change to the plugin.\n *\n * Notes for whoever touches this next:\n *\n * - `<link rel=\"stylesheet\">` is deliberately NOT captured. Next adds its own\n * chunk `<link>`s to the head at unpredictable moments, and a window this\n * wide cannot tell one from a plugin's — neutralising the wrong one breaks\n * the console. A plugin needing a linked stylesheet calls\n * {@link registerPluginStyles} with an `@import`, or inlines it.\n * - There is deliberately no `takeRecords()` drain before `disconnect()`, and\n * adding one back would be dead code: a `MutationObserver` queues its\n * microtask AT MUTATION TIME, and the microtask queue is FIFO, so anything\n * appended inside `load` is always delivered before the `await load()`\n * continuation that reaches the `finally`. A drain was written first and\n * removed when mutating it away turned no test red — which is the only\n * honest signal that a branch is unreachable.\n * - Text written to a captured element AFTER the window closes still\n * propagates: each captured element keeps its own observer for the life of\n * the page. That is what keeps a dev-mode emotion instance (which sets\n * `textContent`) in sync. A production emotion instance in \"speedy\" mode\n * inserts through `CSSOM` with no mutation to observe and is NOT tracked —\n * but a realm bundle carrying its own emotion is already an ABI violation\n * (it would carry a second React with it), so that is a shape this loader\n * refuses for other reasons.\n * - Failures here must never take the load down: a plugin that renders is\n * better than a console that does not.\n */\nexport async function capturePluginStyles<T>(\n pluginId: string,\n load: () => Promise<T>,\n): Promise<T> {\n const doc = typeof document === 'undefined' ? null : document\n if (!doc?.head || typeof MutationObserver === 'undefined') return load()\n\n const captured = new Map<HTMLStyleElement, string>()\n const take = (nodes: NodeList | Node[]): void => {\n for (const node of Array.from(nodes)) {\n if (!isStyleElement(node) || captured.has(node)) continue\n const styleId = `captured-${captured.size + 1}`\n captured.set(node, styleId)\n trackCapturedStyle(pluginId, styleId, node)\n }\n }\n const observer = new MutationObserver((records) => {\n for (const record of records) take(record.addedNodes)\n })\n try {\n observer.observe(doc.head, { childList: true })\n return await load()\n } finally {\n try {\n observer.disconnect()\n } catch (error) {\n console.warn(`plugin styles: capture for ${pluginId} failed:`, error)\n }\n }\n}\n\nfunction isStyleElement(node: Node): node is HTMLStyleElement {\n return (\n (node as Element)?.nodeType === 1 &&\n (node as Element).tagName?.toUpperCase() === 'STYLE'\n )\n}\n\nfunction trackCapturedStyle(\n pluginId: string,\n styleId: string,\n element: HTMLStyleElement,\n): void {\n const sync = () => {\n writeSheet({\n pluginId,\n styleId,\n css: sanitizeAuthorCss(element.textContent ?? ''),\n mirrored: true,\n })\n }\n sync()\n try {\n new MutationObserver(sync).observe(element, {\n childList: true,\n characterData: true,\n subtree: true,\n })\n } catch {\n // An environment without a working observer still gets the initial text.\n }\n}\n"],"names":["sanitizeAuthorCss","sheets","listeners","Set","snapshot","publish","slice","listener","keyOf","pluginId","styleId","registerPluginStyles","input","css","writeSheet","mirrored","next","key","index","findIndex","sheet","current","push","unregisterPluginStyles","before","length","undefined","splice","listPluginStyles","subscribeToPluginStyles","add","delete","resetPluginStylesForTest","capturePluginStyles","load","doc","document","head","MutationObserver","captured","Map","take","nodes","node","Array","from","isStyleElement","has","size","set","trackCapturedStyle","observer","records","record","addedNodes","observe","childList","disconnect","error","console","warn","nodeType","tagName","toUpperCase","element","sync","textContent","characterData","subtree"],"mappings":"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"}