@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,88 @@
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
+ */ import { mkdtempSync, writeFileSync } from "node:fs";
17
+ import { tmpdir } from "node:os";
18
+ import { join } from "node:path";
19
+ import { pathToFileURL } from "node:url";
20
+ import { pluginArtifactPath } from "../app-utils/plugin-manifest.js";
21
+ import { isCompatibleHostAbi, verifyRealmBundle } from "./realm-plugins.js";
22
+ let loadedPromise;
23
+ export function remoteServerBundlesEnabled() {
24
+ return process.env.PLUGIN_REMOTE_SERVER === 'enabled';
25
+ }
26
+ export async function loadRemoteServerBundles(source) {
27
+ if (!remoteServerBundlesEnabled()) return [];
28
+ if (!loadedPromise) {
29
+ loadedPromise = (async ()=>{
30
+ var _process_env_PLUGIN_REMOTE_SERVER_BUNDLES;
31
+ const loaded = [];
32
+ const publicKey = process.env.PLUGIN_TRUST_PUBLIC_KEY;
33
+ if (!publicKey) {
34
+ console.error('PLUGIN_REMOTE_SERVER is enabled but PLUGIN_TRUST_PUBLIC_KEY is ' + 'not set — refusing to load any remote server bundle.');
35
+ return loaded;
36
+ }
37
+ const allowlist = ((_process_env_PLUGIN_REMOTE_SERVER_BUNDLES = process.env.PLUGIN_REMOTE_SERVER_BUNDLES) != null ? _process_env_PLUGIN_REMOTE_SERVER_BUNDLES : '').split(',').map((entry)=>entry.trim()).filter(Boolean);
38
+ if (!allowlist.length) return loaded;
39
+ const cacheDir = mkdtempSync(join(tmpdir(), 'aglyn-realm-'));
40
+ for (const entry of allowlist){
41
+ try {
42
+ var _mod_registerApi;
43
+ var _mod_default;
44
+ const [listingId, version] = entry.split('@');
45
+ if (!listingId || !version) throw new Error('malformed allowlist entry');
46
+ const pinned = await source.resolveVersion(listingId, version);
47
+ if (!pinned) throw new Error('unknown listing version');
48
+ if (pinned.trust !== 'realm') throw new Error('not realm-trusted');
49
+ if (!isCompatibleHostAbi(pinned.hostAbi)) {
50
+ throw new Error(`built for host ABI ${pinned.hostAbi}`);
51
+ }
52
+ const url = `${source.artifactsBase.replace(/\/+$/, '')}/${pluginArtifactPath(listingId, version, pinned.sha256)}`;
53
+ const response = await fetch(url);
54
+ if (!response.ok) throw new Error(`fetch ${response.status}`);
55
+ const bytes = await response.arrayBuffer();
56
+ const verdict = await verifyRealmBundle(bytes, {
57
+ listingId,
58
+ version,
59
+ sha256: pinned.sha256,
60
+ trust: 'realm',
61
+ signature: pinned.signature
62
+ }, publicKey);
63
+ if (verdict.ok === false) throw new Error(verdict.reason);
64
+ const file = join(cacheDir, `${listingId}-${version}.mjs`);
65
+ writeFileSync(file, Buffer.from(bytes));
66
+ const mod = await import(/* webpackIgnore: true */ pathToFileURL(file).href);
67
+ const registerApi = (_mod_registerApi = mod.registerApi) != null ? _mod_registerApi : (_mod_default = mod.default) == null ? void 0 : _mod_default.registerApi;
68
+ if (typeof registerApi !== 'function') {
69
+ throw new Error('bundle exports no registerApi()');
70
+ }
71
+ registerApi();
72
+ loaded.push({
73
+ listingId,
74
+ version,
75
+ sha256: pinned.sha256
76
+ });
77
+ console.info(`remote server bundle loaded: ${entry}`);
78
+ } catch (error) {
79
+ console.error(`remote server bundle ${entry} skipped:`, error);
80
+ }
81
+ }
82
+ return loaded;
83
+ })();
84
+ }
85
+ return loadedPromise;
86
+ }
87
+
88
+ //# sourceMappingURL=realm-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/plugin-manager/realm-server.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\nimport { mkdtempSync, writeFileSync } from 'node:fs'\nimport { tmpdir } from 'node:os'\nimport { join } from 'node:path'\nimport { pathToFileURL } from 'node:url'\nimport { pluginArtifactPath } from '../app-utils/plugin-manifest'\nimport {\n isCompatibleHostAbi,\n type RealmPluginInstall,\n verifyRealmBundle,\n} from './realm-plugins'\n\n/**\n * Remote SERVER handler bundles (AGL-420) — the highest-risk switch in the\n * platform, default OFF everywhere. When explicitly enabled, the API\n * dispatchers load staff-signed bundles that register plugin API routes\n * in-process. Guardrails, all mandatory (unlike the client tier, none are\n * optional here):\n *\n * - `PLUGIN_REMOTE_SERVER=enabled` — the master switch.\n * - `PLUGIN_REMOTE_SERVER_BUNDLES` — an explicit per-deploy allowlist of\n * `listingId@version` entries; nothing loads implicitly from installs.\n * - `PLUGIN_TRUST_PUBLIC_KEY` — REQUIRED; every bundle must carry a valid\n * platform Ed25519 signature over its sha256. No key, no loading.\n * - sha256 content-addressing against the version doc, same as the client.\n *\n * Verified bytes are written to a private temp file and imported by\n * `file://` URL (node can't import blob URLs); the module's exported\n * `registerApi()` runs with the same registries first-party `/server`\n * entries use. Failures log and skip — a broken remote bundle must not\n * take the API surface down (its own paths simply stay unregistered).\n */\n\nexport interface RemoteServerBundleSource {\n /** Resolves a listing version doc to its pinned hash + signature. */\n resolveVersion(\n listingId: string,\n version: string,\n ): Promise<{\n sha256: string\n signature?: string\n trust?: string\n hostAbi?: number\n } | null>\n /** Base URL of the content-addressed artifacts origin. */\n artifactsBase: string\n}\n\nlet loadedPromise: Promise<LoadedServerBundle[]> | undefined\n\nexport function remoteServerBundlesEnabled(): boolean {\n return process.env.PLUGIN_REMOTE_SERVER === 'enabled'\n}\n\nexport interface LoadedServerBundle {\n listingId: string\n version: string\n sha256: string\n}\n\nexport async function loadRemoteServerBundles(\n source: RemoteServerBundleSource,\n): Promise<LoadedServerBundle[]> {\n if (!remoteServerBundlesEnabled()) return []\n if (!loadedPromise) {\n loadedPromise = (async () => {\n const loaded: LoadedServerBundle[] = []\n const publicKey = process.env.PLUGIN_TRUST_PUBLIC_KEY\n if (!publicKey) {\n console.error(\n 'PLUGIN_REMOTE_SERVER is enabled but PLUGIN_TRUST_PUBLIC_KEY is ' +\n 'not set — refusing to load any remote server bundle.',\n )\n return loaded\n }\n const allowlist = (process.env.PLUGIN_REMOTE_SERVER_BUNDLES ?? '')\n .split(',')\n .map((entry) => entry.trim())\n .filter(Boolean)\n if (!allowlist.length) return loaded\n const cacheDir = mkdtempSync(join(tmpdir(), 'aglyn-realm-'))\n\n for (const entry of allowlist) {\n try {\n const [listingId, version] = entry.split('@')\n if (!listingId || !version) throw new Error('malformed allowlist entry')\n const pinned = await source.resolveVersion(listingId, version)\n if (!pinned) throw new Error('unknown listing version')\n if (pinned.trust !== 'realm') throw new Error('not realm-trusted')\n if (!isCompatibleHostAbi(pinned.hostAbi)) {\n throw new Error(`built for host ABI ${pinned.hostAbi}`)\n }\n const url = `${source.artifactsBase.replace(/\\/+$/, '')}/${pluginArtifactPath(\n listingId,\n version,\n pinned.sha256,\n )}`\n const response = await fetch(url)\n if (!response.ok) throw new Error(`fetch ${response.status}`)\n const bytes = await response.arrayBuffer()\n const verdict = await verifyRealmBundle(\n bytes,\n {\n listingId,\n version,\n sha256: pinned.sha256,\n trust: 'realm',\n signature: pinned.signature,\n } satisfies RealmPluginInstall,\n publicKey,\n )\n if (verdict.ok === false) throw new Error(verdict.reason)\n const file = join(cacheDir, `${listingId}-${version}.mjs`)\n writeFileSync(file, Buffer.from(bytes))\n const mod = (await import(\n /* webpackIgnore: true */ pathToFileURL(file).href\n )) as {\n registerApi?: () => void\n default?: { registerApi?: () => void }\n }\n const registerApi = mod.registerApi ?? mod.default?.registerApi\n if (typeof registerApi !== 'function') {\n throw new Error('bundle exports no registerApi()')\n }\n registerApi()\n loaded.push({ listingId, version, sha256: pinned.sha256 })\n console.info(`remote server bundle loaded: ${entry}`)\n } catch (error) {\n console.error(`remote server bundle ${entry} skipped:`, error)\n }\n }\n return loaded\n })()\n }\n return loadedPromise\n}\n"],"names":["mkdtempSync","writeFileSync","tmpdir","join","pathToFileURL","pluginArtifactPath","isCompatibleHostAbi","verifyRealmBundle","loadedPromise","remoteServerBundlesEnabled","process","env","PLUGIN_REMOTE_SERVER","loadRemoteServerBundles","source","loaded","publicKey","PLUGIN_TRUST_PUBLIC_KEY","console","error","allowlist","PLUGIN_REMOTE_SERVER_BUNDLES","split","map","entry","trim","filter","Boolean","length","cacheDir","mod","listingId","version","Error","pinned","resolveVersion","trust","hostAbi","url","artifactsBase","replace","sha256","response","fetch","ok","status","bytes","arrayBuffer","verdict","signature","reason","file","Buffer","from","href","registerApi","default","push","info"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,WAAW,EAAEC,aAAa,QAAQ,UAAS;AACpD,SAASC,MAAM,QAAQ,UAAS;AAChC,SAASC,IAAI,QAAQ,YAAW;AAChC,SAASC,aAAa,QAAQ,WAAU;AACxC,SAASC,kBAAkB,QAAQ,kCAA8B;AACjE,SACEC,mBAAmB,EAEnBC,iBAAiB,QACZ,qBAAiB;AAsCxB,IAAIC;AAEJ,OAAO,SAASC;IACd,OAAOC,QAAQC,GAAG,CAACC,oBAAoB,KAAK;AAC9C;AAQA,OAAO,eAAeC,wBACpBC,MAAgC;IAEhC,IAAI,CAACL,8BAA8B,OAAO,EAAE;IAC5C,IAAI,CAACD,eAAe;QAClBA,gBAAgB,AAAC,CAAA;gBAUIE;YATnB,MAAMK,SAA+B,EAAE;YACvC,MAAMC,YAAYN,QAAQC,GAAG,CAACM,uBAAuB;YACrD,IAAI,CAACD,WAAW;gBACdE,QAAQC,KAAK,CACX,oEACE;gBAEJ,OAAOJ;YACT;YACA,MAAMK,YAAY,EAACV,4CAAAA,QAAQC,GAAG,CAACU,4BAA4B,YAAxCX,4CAA4C,IAC5DY,KAAK,CAAC,KACNC,GAAG,CAAC,CAACC,QAAUA,MAAMC,IAAI,IACzBC,MAAM,CAACC;YACV,IAAI,CAACP,UAAUQ,MAAM,EAAE,OAAOb;YAC9B,MAAMc,WAAW7B,YAAYG,KAAKD,UAAU;YAE5C,KAAK,MAAMsB,SAASJ,UAAW;gBAC7B,IAAI;wBAqCkBU;wBAAmBA;oBApCvC,MAAM,CAACC,WAAWC,QAAQ,GAAGR,MAAMF,KAAK,CAAC;oBACzC,IAAI,CAACS,aAAa,CAACC,SAAS,MAAM,IAAIC,MAAM;oBAC5C,MAAMC,SAAS,MAAMpB,OAAOqB,cAAc,CAACJ,WAAWC;oBACtD,IAAI,CAACE,QAAQ,MAAM,IAAID,MAAM;oBAC7B,IAAIC,OAAOE,KAAK,KAAK,SAAS,MAAM,IAAIH,MAAM;oBAC9C,IAAI,CAAC3B,oBAAoB4B,OAAOG,OAAO,GAAG;wBACxC,MAAM,IAAIJ,MAAM,CAAC,mBAAmB,EAAEC,OAAOG,OAAO,EAAE;oBACxD;oBACA,MAAMC,MAAM,GAAGxB,OAAOyB,aAAa,CAACC,OAAO,CAAC,QAAQ,IAAI,CAAC,EAAEnC,mBACzD0B,WACAC,SACAE,OAAOO,MAAM,GACZ;oBACH,MAAMC,WAAW,MAAMC,MAAML;oBAC7B,IAAI,CAACI,SAASE,EAAE,EAAE,MAAM,IAAIX,MAAM,CAAC,MAAM,EAAES,SAASG,MAAM,EAAE;oBAC5D,MAAMC,QAAQ,MAAMJ,SAASK,WAAW;oBACxC,MAAMC,UAAU,MAAMzC,kBACpBuC,OACA;wBACEf;wBACAC;wBACAS,QAAQP,OAAOO,MAAM;wBACrBL,OAAO;wBACPa,WAAWf,OAAOe,SAAS;oBAC7B,GACAjC;oBAEF,IAAIgC,QAAQJ,EAAE,KAAK,OAAO,MAAM,IAAIX,MAAMe,QAAQE,MAAM;oBACxD,MAAMC,OAAOhD,KAAK0B,UAAU,GAAGE,UAAU,CAAC,EAAEC,QAAQ,IAAI,CAAC;oBACzD/B,cAAckD,MAAMC,OAAOC,IAAI,CAACP;oBAChC,MAAMhB,MAAO,MAAM,MAAM,CACvB,uBAAuB,GAAG1B,cAAc+C,MAAMG,IAAI;oBAKpD,MAAMC,eAAczB,mBAAAA,IAAIyB,WAAW,YAAfzB,oBAAmBA,eAAAA,IAAI0B,OAAO,qBAAX1B,aAAayB,WAAW;oBAC/D,IAAI,OAAOA,gBAAgB,YAAY;wBACrC,MAAM,IAAItB,MAAM;oBAClB;oBACAsB;oBACAxC,OAAO0C,IAAI,CAAC;wBAAE1B;wBAAWC;wBAASS,QAAQP,OAAOO,MAAM;oBAAC;oBACxDvB,QAAQwC,IAAI,CAAC,CAAC,6BAA6B,EAAElC,OAAO;gBACtD,EAAE,OAAOL,OAAO;oBACdD,QAAQC,KAAK,CAAC,CAAC,qBAAqB,EAAEK,MAAM,SAAS,CAAC,EAAEL;gBAC1D;YACF;YACA,OAAOJ;QACT,CAAA;IACF;IACA,OAAOP;AACT"}
@@ -0,0 +1,126 @@
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
+ * What the record zones hand a widget (AGL-2917): `recordInsights` on a
19
+ * business record's page, `recordEmail` in a one-to-one composer, and
20
+ * `importMapping` in a spreadsheet import. Types only: the catalog re-exports
21
+ * each zone's props from here, and a type-only re-export adds nothing to a
22
+ * published page, so the types a zone's props are built from are imported
23
+ * from this module rather than from the catalog.
24
+ *
25
+ * The plugin that owns the records hosts each zone through the renderer
26
+ * `useConsoleWidgetSlot` hands down, as the product editor hosts
27
+ * `seoFields`, so every gate a console page's slot applies applies there. A
28
+ * widget in any of them proposes, and the host writes: the record's own task
29
+ * form and stage route, the composer's Send, the import's Import.
30
+ */
31
+ /** The record a record zone is about (AGL-2917). */
32
+ export interface ConsoleRecordRef {
33
+ /** The kind of record, in the owning plugin's words: `contact`, `company`, `deal`, `lead`. */
34
+ kind: string;
35
+ id: string;
36
+ /** The record's name as the page shows it, for a widget's own words. */
37
+ name: string;
38
+ }
39
+ /** A follow-up a widget proposes, which the page opens in its own task form (AGL-2917). */
40
+ export interface ConsoleProposedTask {
41
+ title: string;
42
+ notes: string;
43
+ kind: 'call' | 'email' | 'meeting' | 'todo';
44
+ priority: 'low' | 'normal' | 'high';
45
+ /** Days from today the task is due; the form sets the time of day. */
46
+ dueInDays: number;
47
+ }
48
+ /** One stage a record can move to (AGL-2917). */
49
+ export interface ConsoleRecordStage {
50
+ id: string;
51
+ name: string;
52
+ }
53
+ /** What the `recordInsights` zone hands each widget (AGL-2917). */
54
+ export interface ConsoleRecordInsightsZoneProps {
55
+ /** The site the page is under, or `null` at the organization level. */
56
+ hostId: string | null;
57
+ /** The org the page names; `undefined` while it resolves. */
58
+ orgId: string | undefined;
59
+ record: ConsoleRecordRef;
60
+ /**
61
+ * Opens the page's own task form with the proposal filled in, linked to the
62
+ * record; the form's Save is the write. Absent where the record takes no
63
+ * task.
64
+ */
65
+ proposeTask?: (task: ConsoleProposedTask, key: string) => void;
66
+ /** The open stages the record can move to, in order; absent for a record without stages. */
67
+ stages?: readonly ConsoleRecordStage[];
68
+ /** The stage the record is in, beside `stages`. */
69
+ stageId?: string;
70
+ /**
71
+ * Asks the member to confirm the move, then moves the record through the
72
+ * page's own stage route. Absent for a record without stages.
73
+ */
74
+ proposeStage?: (stageId: string, key: string) => void;
75
+ }
76
+ /** A subject and a message a widget proposes for a composer (AGL-2917). */
77
+ export interface ConsoleRecordEmailDraft {
78
+ subject: string;
79
+ /** Plain text; a blank line starts a paragraph, and merge fields are filled at send. */
80
+ body: string;
81
+ }
82
+ /** What the `recordEmail` zone hands each widget (AGL-2917). */
83
+ export interface ConsoleRecordEmailZoneProps {
84
+ /** The site the composer is under, or `null` at the organization level. */
85
+ hostId: string | null;
86
+ /** The org the composer names; `undefined` while it resolves. */
87
+ orgId: string | undefined;
88
+ /** The record the message is written from: a contact, a deal (its contact) or a lead. */
89
+ record: ConsoleRecordRef;
90
+ /** What the composer holds now. */
91
+ subject: string;
92
+ body: string;
93
+ /**
94
+ * Puts the draft in the composer, asking first when a message is already
95
+ * written. The composer's Send is the only write.
96
+ */
97
+ proposeDraft: (draft: ConsoleRecordEmailDraft, key: string) => void;
98
+ }
99
+ /**
100
+ * What a column of a file holds, read in the browser from its cells
101
+ * (AGL-2917): the one thing a widget is told about a column's values.
102
+ */
103
+ export type ConsoleImportColumnShape = 'empty' | 'email' | 'phone' | 'number' | 'date' | 'yes-no' | 'url' | 'text';
104
+ /** One column of a file being imported (AGL-2917). */
105
+ export interface ConsoleImportColumn {
106
+ header: string;
107
+ shape: ConsoleImportColumnShape;
108
+ }
109
+ /** What the `importMapping` zone hands each widget (AGL-2917). */
110
+ export interface ConsoleImportMappingZoneProps {
111
+ /** The site the file is imported into, or `null` at the organization level. */
112
+ hostId: string | null;
113
+ /** The org the drawer names; `undefined` while it resolves. */
114
+ orgId: string | undefined;
115
+ /** What the file is imported as, in the owning plugin's words: `contacts`, `companies`, `deals`, `leads`. */
116
+ collection: string;
117
+ /** The file's columns in order: each header and its shape, never a cell. */
118
+ columns: readonly ConsoleImportColumn[];
119
+ /** The matching the drawer holds now: column index to field key. */
120
+ mapping: Readonly<Record<number, string>>;
121
+ /**
122
+ * Replaces the drawer's matching. A field the drawer does not offer is
123
+ * dropped, and one field takes one column.
124
+ */
125
+ proposeMapping: (mapping: Readonly<Record<number, string>>, key: string) => void;
126
+ }
@@ -0,0 +1,31 @@
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
+ * What the record zones hand a widget (AGL-2917): `recordInsights` on a
18
+ * business record's page, `recordEmail` in a one-to-one composer, and
19
+ * `importMapping` in a spreadsheet import. Types only: the catalog re-exports
20
+ * each zone's props from here, and a type-only re-export adds nothing to a
21
+ * published page, so the types a zone's props are built from are imported
22
+ * from this module rather than from the catalog.
23
+ *
24
+ * The plugin that owns the records hosts each zone through the renderer
25
+ * `useConsoleWidgetSlot` hands down, as the product editor hosts
26
+ * `seoFields`, so every gate a console page's slot applies applies there. A
27
+ * widget in any of them proposes, and the host writes: the record's own task
28
+ * form and stage route, the composer's Send, the import's Import.
29
+ */ /** The record a record zone is about (AGL-2917). */ /** What the `importMapping` zone hands each widget (AGL-2917). */ export { };
30
+
31
+ //# sourceMappingURL=record-zone-props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/plugin-manager/record-zone-props.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 * What the record zones hand a widget (AGL-2917): `recordInsights` on a\n * business record's page, `recordEmail` in a one-to-one composer, and\n * `importMapping` in a spreadsheet import. Types only: the catalog re-exports\n * each zone's props from here, and a type-only re-export adds nothing to a\n * published page, so the types a zone's props are built from are imported\n * from this module rather than from the catalog.\n *\n * The plugin that owns the records hosts each zone through the renderer\n * `useConsoleWidgetSlot` hands down, as the product editor hosts\n * `seoFields`, so every gate a console page's slot applies applies there. A\n * widget in any of them proposes, and the host writes: the record's own task\n * form and stage route, the composer's Send, the import's Import.\n */\n\n/** The record a record zone is about (AGL-2917). */\nexport interface ConsoleRecordRef {\n /** The kind of record, in the owning plugin's words: `contact`, `company`, `deal`, `lead`. */\n kind: string\n id: string\n /** The record's name as the page shows it, for a widget's own words. */\n name: string\n}\n\n/** A follow-up a widget proposes, which the page opens in its own task form (AGL-2917). */\nexport interface ConsoleProposedTask {\n title: string\n notes: string\n kind: 'call' | 'email' | 'meeting' | 'todo'\n priority: 'low' | 'normal' | 'high'\n /** Days from today the task is due; the form sets the time of day. */\n dueInDays: number\n}\n\n/** One stage a record can move to (AGL-2917). */\nexport interface ConsoleRecordStage {\n id: string\n name: string\n}\n\n/** What the `recordInsights` zone hands each widget (AGL-2917). */\nexport interface ConsoleRecordInsightsZoneProps {\n /** The site the page is under, or `null` at the organization level. */\n hostId: string | null\n /** The org the page names; `undefined` while it resolves. */\n orgId: string | undefined\n record: ConsoleRecordRef\n /**\n * Opens the page's own task form with the proposal filled in, linked to the\n * record; the form's Save is the write. Absent where the record takes no\n * task.\n */\n proposeTask?: (task: ConsoleProposedTask, key: string) => void\n /** The open stages the record can move to, in order; absent for a record without stages. */\n stages?: readonly ConsoleRecordStage[]\n /** The stage the record is in, beside `stages`. */\n stageId?: string\n /**\n * Asks the member to confirm the move, then moves the record through the\n * page's own stage route. Absent for a record without stages.\n */\n proposeStage?: (stageId: string, key: string) => void\n}\n\n/** A subject and a message a widget proposes for a composer (AGL-2917). */\nexport interface ConsoleRecordEmailDraft {\n subject: string\n /** Plain text; a blank line starts a paragraph, and merge fields are filled at send. */\n body: string\n}\n\n/** What the `recordEmail` zone hands each widget (AGL-2917). */\nexport interface ConsoleRecordEmailZoneProps {\n /** The site the composer is under, or `null` at the organization level. */\n hostId: string | null\n /** The org the composer names; `undefined` while it resolves. */\n orgId: string | undefined\n /** The record the message is written from: a contact, a deal (its contact) or a lead. */\n record: ConsoleRecordRef\n /** What the composer holds now. */\n subject: string\n body: string\n /**\n * Puts the draft in the composer, asking first when a message is already\n * written. The composer's Send is the only write.\n */\n proposeDraft: (draft: ConsoleRecordEmailDraft, key: string) => void\n}\n\n/**\n * What a column of a file holds, read in the browser from its cells\n * (AGL-2917): the one thing a widget is told about a column's values.\n */\nexport type ConsoleImportColumnShape =\n | 'empty'\n | 'email'\n | 'phone'\n | 'number'\n | 'date'\n | 'yes-no'\n | 'url'\n | 'text'\n\n/** One column of a file being imported (AGL-2917). */\nexport interface ConsoleImportColumn {\n header: string\n shape: ConsoleImportColumnShape\n}\n\n/** What the `importMapping` zone hands each widget (AGL-2917). */\nexport interface ConsoleImportMappingZoneProps {\n /** The site the file is imported into, or `null` at the organization level. */\n hostId: string | null\n /** The org the drawer names; `undefined` while it resolves. */\n orgId: string | undefined\n /** What the file is imported as, in the owning plugin's words: `contacts`, `companies`, `deals`, `leads`. */\n collection: string\n /** The file's columns in order: each header and its shape, never a cell. */\n columns: readonly ConsoleImportColumn[]\n /** The matching the drawer holds now: column index to field key. */\n mapping: Readonly<Record<number, string>>\n /**\n * Replaces the drawer's matching. A field the drawer does not offer is\n * dropped, and one field takes one column.\n */\n proposeMapping: (mapping: Readonly<Record<number, string>>, key: string) => void\n}\n"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;CAaC,GAED,kDAAkD,GA8FlD,gEAAgE,GAChE,WAgBC"}
@@ -0,0 +1,102 @@
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
+ * Tenant page-composition extension points (AGL-418): plugins hook the
19
+ * site loader (`load-page-data`) from their `/server` entries instead of
20
+ * the app importing plugin domain code. Three kinds, run in this order:
21
+ *
22
+ * 1. REDIRECT RESOLVERS — may answer a request with a redirect before any
23
+ * route resolution (plugins-redirects' rule engine, AGL-155).
24
+ * 2. PAGE RESOLVERS — may fully resolve a path into page props
25
+ * (plugins-commerce's PDP/PLP template composition for /products/* and
26
+ * /collections/*, AGL-299). First non-undefined answer wins.
27
+ * 3. ENRICHERS — contribute extra props onto an already-resolved screen
28
+ * page (plugins-marketing's overlays/experiments/client-automations).
29
+ * Outputs are shallow-merged into the page props in registration order.
30
+ *
31
+ * Handlers run server-side (node runtime) and may use firebase-admin.
32
+ * Errors in enrichers are isolated (a broken plugin never 500s the site);
33
+ * resolver errors propagate because their output IS the page.
34
+ */
35
+ export interface SitePageContext {
36
+ hostId: string;
37
+ /** The resolved host doc. */
38
+ host: any;
39
+ /** The org billing doc (entitlement source); undefined pre-billing. */
40
+ org?: any;
41
+ /** Request path, '/a/b' form ('/' for the site root). */
42
+ path: string;
43
+ slugSegments: string[];
44
+ /**
45
+ * This surface has NO single request path, so `path` above is a
46
+ * placeholder and nothing may be targeted by it (AGL-2511).
47
+ *
48
+ * One surface sets it: the host's designed 404 body. The `not-found`
49
+ * boundary fetches it by host and the response is cached per HOST — one
50
+ * compose a minute however many missing URLs are hit, which is the whole
51
+ * reason a scan of ten thousand dead URLs is cheap. Enriching it per path
52
+ * would key that cache per URL and make the same scan ten thousand
53
+ * composes.
54
+ *
55
+ * An enricher that reads `path` must, when this is set, contribute only
56
+ * what is path-INDEPENDENT and drop the rest — never substitute a plausible
57
+ * path. A site-wide announcement bar is path-independent and shows; an
58
+ * overlay pinned to `/pricing` cannot be evaluated and does not.
59
+ */
60
+ pathUnknown?: boolean;
61
+ screenId?: string;
62
+ /** The resolved screen doc (enrichers only). */
63
+ screen?: any;
64
+ /**
65
+ * The composed node tree for the page — layout applied, versions and
66
+ * references denormalized (enrichers only, AGL-659).
67
+ *
68
+ * An enricher that wants to seed a block's data server-side has to know
69
+ * which blocks are actually on the page and how each one is configured;
70
+ * the screen doc alone does not say, because composition pulls in layout
71
+ * and referenced nodes.
72
+ */
73
+ nodes?: any;
74
+ }
75
+ export interface SiteRedirectAnswer {
76
+ destination: string;
77
+ statusCode: number;
78
+ }
79
+ export type SiteRedirectResolver = (context: SitePageContext) => Promise<SiteRedirectAnswer | undefined> | SiteRedirectAnswer | undefined;
80
+ /** A fully-composed page (the loader returns it verbatim as `props`). */
81
+ export type SitePageAnswer = Record<string, unknown>;
82
+ export type SitePageResolver = (context: SitePageContext) => Promise<SitePageAnswer | undefined>;
83
+ export type SitePageEnricher = (context: SitePageContext) => Promise<Record<string, unknown> | undefined>;
84
+ export declare function registerSiteRedirectResolver(fn: SiteRedirectResolver): void;
85
+ export declare function registerSitePageResolver(fn: SitePageResolver): void;
86
+ export declare function registerSitePageEnricher(fn: SitePageEnricher): void;
87
+ export declare function resolveSiteRedirect(context: SitePageContext): Promise<SiteRedirectAnswer | undefined>;
88
+ export declare function resolveSitePage(context: SitePageContext): Promise<SitePageAnswer | undefined>;
89
+ export interface SitePageEnrichment {
90
+ /** The merged contributions, spread into the page props as before. */
91
+ props: Record<string, unknown>;
92
+ /** Plugins that returned something non-empty for THIS page. */
93
+ contributors: string[];
94
+ /**
95
+ * True when an enricher produced work but could not be attributed to a
96
+ * plugin — registered outside a plugin's register fn, so the loader's
97
+ * marker was unset. Callers narrowing on `contributors` must treat this as
98
+ * "cannot narrow": an unattributed contribution belongs to somebody.
99
+ */
100
+ unattributed: boolean;
101
+ }
102
+ export declare function runSitePageEnrichers(context: SitePageContext): Promise<SitePageEnrichment>;
@@ -0,0 +1,114 @@
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
+ */ // The leaf module, NOT `api-plugins` — that one is reachable only through the
17
+ // `/server` entry, and importing it from this shared barrel formed a cycle
18
+ // that left the binding missing at runtime (AGL-1289).
19
+ import { getRegisteringPluginId } from "../app-utils/registering-plugin.js";
20
+ const redirectResolvers = [];
21
+ const pageResolvers = [];
22
+ const enrichers = [];
23
+ /**
24
+ * Which plugin registered which enricher (AGL-1289). Recorded from the loader's
25
+ * existing "currently registering" marker — the same mechanism that gives
26
+ * `registerPluginApiRoute` its path→plugin ownership — so plugins need no new
27
+ * API and nothing has to be kept in sync by hand.
28
+ */ const enricherOwners = new WeakMap();
29
+ export function registerSiteRedirectResolver(fn) {
30
+ redirectResolvers.push(fn);
31
+ }
32
+ export function registerSitePageResolver(fn) {
33
+ pageResolvers.push(fn);
34
+ }
35
+ export function registerSitePageEnricher(fn) {
36
+ enrichers.push(fn);
37
+ const owner = getRegisteringPluginId();
38
+ if (owner) enricherOwners.set(fn, owner);
39
+ }
40
+ export async function resolveSiteRedirect(context) {
41
+ for (const resolver of redirectResolvers){
42
+ const answer = await resolver(context);
43
+ if (answer) return answer;
44
+ }
45
+ return undefined;
46
+ }
47
+ export async function resolveSitePage(context) {
48
+ for (const resolver of pageResolvers){
49
+ const answer = await resolver(context);
50
+ if (answer) return answer;
51
+ }
52
+ return undefined;
53
+ }
54
+ /** Null/undefined, an empty array or an empty object — nothing to render. */ function isEmptyContribution(value) {
55
+ if (value == null) return true;
56
+ if (Array.isArray(value)) return value.length === 0;
57
+ if (typeof value === 'object') return Object.keys(value).length === 0;
58
+ return false;
59
+ }
60
+ export async function runSitePageEnrichers(context) {
61
+ const merged = {};
62
+ const contributors = new Set();
63
+ let unattributed = false;
64
+ // CONCURRENT, MERGED IN REGISTRATION ORDER (2026-08-26).
65
+ //
66
+ // This was a sequential `for … await`, so every enricher waited on the one
67
+ // before it for no reason: each takes the same immutable `context`, returns
68
+ // its own prop slice, and shares nothing. Production timing put the phase at
69
+ // a flat ~85–120 ms on EVERY render — including pages whose entire loader
70
+ // was 137 ms — because it is a fixed number of round trips, not work that
71
+ // scales with the page.
72
+ //
73
+ // `allSettled` rather than `all`: a broken plugin must drop its slice, never
74
+ // the page, which is the isolation the per-enricher try/catch gave and the
75
+ // plugin docs promise. Results are merged in ARRAY order, which `allSettled`
76
+ // preserves — so two enrichers contributing the same key resolve exactly as
77
+ // they did when the loop was sequential, and `contributors` keeps its
78
+ // insertion order.
79
+ const settled = await Promise.allSettled(enrichers.map(async (enricher)=>{
80
+ var _ref;
81
+ return (_ref = await enricher(context)) != null ? _ref : {};
82
+ }));
83
+ for (const [index, outcome] of settled.entries()){
84
+ const enricher = enrichers[index];
85
+ try {
86
+ if (outcome.status === 'rejected') throw outcome.reason;
87
+ const result = outcome.value;
88
+ Object.assign(merged, result);
89
+ // "Contributed" means produced something with content, not merely
90
+ // returned a key. Every marketing enricher returns its full key set on
91
+ // every page — `announcementBar: null`, `experiments: []` — so keying
92
+ // off presence would mark it a contributor everywhere and the
93
+ // attribution would be worth nothing.
94
+ if (Object.values(result).some((value)=>!isEmptyContribution(value))) {
95
+ const owner = enricherOwners.get(enricher);
96
+ if (owner) contributors.add(owner);
97
+ else unattributed = true;
98
+ }
99
+ } catch (error) {
100
+ // A broken plugin must not take the site down — the page renders
101
+ // without that plugin's contribution.
102
+ console.error('site page enricher failed', error);
103
+ }
104
+ }
105
+ return {
106
+ props: merged,
107
+ contributors: [
108
+ ...contributors
109
+ ],
110
+ unattributed
111
+ };
112
+ }
113
+
114
+ //# sourceMappingURL=site-page-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/plugin-manager/site-page-hooks.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// The leaf module, NOT `api-plugins` — that one is reachable only through the\n// `/server` entry, and importing it from this shared barrel formed a cycle\n// that left the binding missing at runtime (AGL-1289).\nimport { getRegisteringPluginId } from '../app-utils/registering-plugin'\n\n/**\n * Tenant page-composition extension points (AGL-418): plugins hook the\n * site loader (`load-page-data`) from their `/server` entries instead of\n * the app importing plugin domain code. Three kinds, run in this order:\n *\n * 1. REDIRECT RESOLVERS — may answer a request with a redirect before any\n * route resolution (plugins-redirects' rule engine, AGL-155).\n * 2. PAGE RESOLVERS — may fully resolve a path into page props\n * (plugins-commerce's PDP/PLP template composition for /products/* and\n * /collections/*, AGL-299). First non-undefined answer wins.\n * 3. ENRICHERS — contribute extra props onto an already-resolved screen\n * page (plugins-marketing's overlays/experiments/client-automations).\n * Outputs are shallow-merged into the page props in registration order.\n *\n * Handlers run server-side (node runtime) and may use firebase-admin.\n * Errors in enrichers are isolated (a broken plugin never 500s the site);\n * resolver errors propagate because their output IS the page.\n */\n\nexport interface SitePageContext {\n hostId: string\n /** The resolved host doc. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n host: any\n /** The org billing doc (entitlement source); undefined pre-billing. */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n org?: any\n /** Request path, '/a/b' form ('/' for the site root). */\n path: string\n slugSegments: string[]\n /**\n * This surface has NO single request path, so `path` above is a\n * placeholder and nothing may be targeted by it (AGL-2511).\n *\n * One surface sets it: the host's designed 404 body. The `not-found`\n * boundary fetches it by host and the response is cached per HOST — one\n * compose a minute however many missing URLs are hit, which is the whole\n * reason a scan of ten thousand dead URLs is cheap. Enriching it per path\n * would key that cache per URL and make the same scan ten thousand\n * composes.\n *\n * An enricher that reads `path` must, when this is set, contribute only\n * what is path-INDEPENDENT and drop the rest — never substitute a plausible\n * path. A site-wide announcement bar is path-independent and shows; an\n * overlay pinned to `/pricing` cannot be evaluated and does not.\n */\n pathUnknown?: boolean\n screenId?: string\n /** The resolved screen doc (enrichers only). */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n screen?: any\n /**\n * The composed node tree for the page — layout applied, versions and\n * references denormalized (enrichers only, AGL-659).\n *\n * An enricher that wants to seed a block's data server-side has to know\n * which blocks are actually on the page and how each one is configured;\n * the screen doc alone does not say, because composition pulls in layout\n * and referenced nodes.\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n nodes?: any\n}\n\nexport interface SiteRedirectAnswer {\n destination: string\n statusCode: number\n}\nexport type SiteRedirectResolver = (\n context: SitePageContext,\n) => Promise<SiteRedirectAnswer | undefined> | SiteRedirectAnswer | undefined\n\n/** A fully-composed page (the loader returns it verbatim as `props`). */\nexport type SitePageAnswer = Record<string, unknown>\nexport type SitePageResolver = (\n context: SitePageContext,\n) => Promise<SitePageAnswer | undefined>\n\nexport type SitePageEnricher = (\n context: SitePageContext,\n) => Promise<Record<string, unknown> | undefined>\n\nconst redirectResolvers: SiteRedirectResolver[] = []\nconst pageResolvers: SitePageResolver[] = []\nconst enrichers: SitePageEnricher[] = []\n/**\n * Which plugin registered which enricher (AGL-1289). Recorded from the loader's\n * existing \"currently registering\" marker — the same mechanism that gives\n * `registerPluginApiRoute` its path→plugin ownership — so plugins need no new\n * API and nothing has to be kept in sync by hand.\n */\nconst enricherOwners = new WeakMap<SitePageEnricher, string>()\n\nexport function registerSiteRedirectResolver(fn: SiteRedirectResolver): void {\n redirectResolvers.push(fn)\n}\nexport function registerSitePageResolver(fn: SitePageResolver): void {\n pageResolvers.push(fn)\n}\nexport function registerSitePageEnricher(fn: SitePageEnricher): void {\n enrichers.push(fn)\n const owner = getRegisteringPluginId()\n if (owner) enricherOwners.set(fn, owner)\n}\n\nexport async function resolveSiteRedirect(\n context: SitePageContext,\n): Promise<SiteRedirectAnswer | undefined> {\n for (const resolver of redirectResolvers) {\n const answer = await resolver(context)\n if (answer) return answer\n }\n return undefined\n}\n\nexport async function resolveSitePage(\n context: SitePageContext,\n): Promise<SitePageAnswer | undefined> {\n for (const resolver of pageResolvers) {\n const answer = await resolver(context)\n if (answer) return answer\n }\n return undefined\n}\n\n/** Null/undefined, an empty array or an empty object — nothing to render. */\nfunction isEmptyContribution(value: unknown): boolean {\n if (value == null) return true\n if (Array.isArray(value)) return value.length === 0\n if (typeof value === 'object') return Object.keys(value).length === 0\n return false\n}\n\nexport interface SitePageEnrichment {\n /** The merged contributions, spread into the page props as before. */\n props: Record<string, unknown>\n /** Plugins that returned something non-empty for THIS page. */\n contributors: string[]\n /**\n * True when an enricher produced work but could not be attributed to a\n * plugin — registered outside a plugin's register fn, so the loader's\n * marker was unset. Callers narrowing on `contributors` must treat this as\n * \"cannot narrow\": an unattributed contribution belongs to somebody.\n */\n unattributed: boolean\n}\n\nexport async function runSitePageEnrichers(\n context: SitePageContext,\n): Promise<SitePageEnrichment> {\n const merged: Record<string, unknown> = {}\n const contributors = new Set<string>()\n let unattributed = false\n\n // CONCURRENT, MERGED IN REGISTRATION ORDER (2026-08-26).\n //\n // This was a sequential `for … await`, so every enricher waited on the one\n // before it for no reason: each takes the same immutable `context`, returns\n // its own prop slice, and shares nothing. Production timing put the phase at\n // a flat ~85–120 ms on EVERY render — including pages whose entire loader\n // was 137 ms — because it is a fixed number of round trips, not work that\n // scales with the page.\n //\n // `allSettled` rather than `all`: a broken plugin must drop its slice, never\n // the page, which is the isolation the per-enricher try/catch gave and the\n // plugin docs promise. Results are merged in ARRAY order, which `allSettled`\n // preserves — so two enrichers contributing the same key resolve exactly as\n // they did when the loop was sequential, and `contributors` keeps its\n // insertion order.\n const settled = await Promise.allSettled(\n enrichers.map(async (enricher) => (await enricher(context)) ?? {}),\n )\n\n for (const [index, outcome] of settled.entries()) {\n const enricher = enrichers[index]\n try {\n if (outcome.status === 'rejected') throw outcome.reason\n const result = outcome.value\n Object.assign(merged, result)\n // \"Contributed\" means produced something with content, not merely\n // returned a key. Every marketing enricher returns its full key set on\n // every page — `announcementBar: null`, `experiments: []` — so keying\n // off presence would mark it a contributor everywhere and the\n // attribution would be worth nothing.\n if (Object.values(result).some((value) => !isEmptyContribution(value))) {\n const owner = enricherOwners.get(enricher)\n if (owner) contributors.add(owner)\n else unattributed = true\n }\n } catch (error) {\n // A broken plugin must not take the site down — the page renders\n // without that plugin's contribution.\n console.error('site page enricher failed', error)\n }\n }\n return { props: merged, contributors: [...contributors], unattributed }\n}\n"],"names":["getRegisteringPluginId","redirectResolvers","pageResolvers","enrichers","enricherOwners","WeakMap","registerSiteRedirectResolver","fn","push","registerSitePageResolver","registerSitePageEnricher","owner","set","resolveSiteRedirect","context","resolver","answer","undefined","resolveSitePage","isEmptyContribution","value","Array","isArray","length","Object","keys","runSitePageEnrichers","merged","contributors","Set","unattributed","settled","Promise","allSettled","map","enricher","index","outcome","entries","status","reason","result","assign","values","some","get","add","error","console","props"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,8EAA8E;AAC9E,2EAA2E;AAC3E,uDAAuD;AACvD,SAASA,sBAAsB,QAAQ,qCAAiC;AAoFxE,MAAMC,oBAA4C,EAAE;AACpD,MAAMC,gBAAoC,EAAE;AAC5C,MAAMC,YAAgC,EAAE;AACxC;;;;;CAKC,GACD,MAAMC,iBAAiB,IAAIC;AAE3B,OAAO,SAASC,6BAA6BC,EAAwB;IACnEN,kBAAkBO,IAAI,CAACD;AACzB;AACA,OAAO,SAASE,yBAAyBF,EAAoB;IAC3DL,cAAcM,IAAI,CAACD;AACrB;AACA,OAAO,SAASG,yBAAyBH,EAAoB;IAC3DJ,UAAUK,IAAI,CAACD;IACf,MAAMI,QAAQX;IACd,IAAIW,OAAOP,eAAeQ,GAAG,CAACL,IAAII;AACpC;AAEA,OAAO,eAAeE,oBACpBC,OAAwB;IAExB,KAAK,MAAMC,YAAYd,kBAAmB;QACxC,MAAMe,SAAS,MAAMD,SAASD;QAC9B,IAAIE,QAAQ,OAAOA;IACrB;IACA,OAAOC;AACT;AAEA,OAAO,eAAeC,gBACpBJ,OAAwB;IAExB,KAAK,MAAMC,YAAYb,cAAe;QACpC,MAAMc,SAAS,MAAMD,SAASD;QAC9B,IAAIE,QAAQ,OAAOA;IACrB;IACA,OAAOC;AACT;AAEA,2EAA2E,GAC3E,SAASE,oBAAoBC,KAAc;IACzC,IAAIA,SAAS,MAAM,OAAO;IAC1B,IAAIC,MAAMC,OAAO,CAACF,QAAQ,OAAOA,MAAMG,MAAM,KAAK;IAClD,IAAI,OAAOH,UAAU,UAAU,OAAOI,OAAOC,IAAI,CAACL,OAAOG,MAAM,KAAK;IACpE,OAAO;AACT;AAgBA,OAAO,eAAeG,qBACpBZ,OAAwB;IAExB,MAAMa,SAAkC,CAAC;IACzC,MAAMC,eAAe,IAAIC;IACzB,IAAIC,eAAe;IAEnB,yDAAyD;IACzD,EAAE;IACF,2EAA2E;IAC3E,4EAA4E;IAC5E,6EAA6E;IAC7E,0EAA0E;IAC1E,0EAA0E;IAC1E,wBAAwB;IACxB,EAAE;IACF,6EAA6E;IAC7E,2EAA2E;IAC3E,6EAA6E;IAC7E,4EAA4E;IAC5E,sEAAsE;IACtE,mBAAmB;IACnB,MAAMC,UAAU,MAAMC,QAAQC,UAAU,CACtC9B,UAAU+B,GAAG,CAAC,OAAOC;YAAc;gBAAA,OAAA,MAAMA,SAASrB,oBAAf,OAA4B,CAAC;;IAGlE,KAAK,MAAM,CAACsB,OAAOC,QAAQ,IAAIN,QAAQO,OAAO,GAAI;QAChD,MAAMH,WAAWhC,SAAS,CAACiC,MAAM;QACjC,IAAI;YACF,IAAIC,QAAQE,MAAM,KAAK,YAAY,MAAMF,QAAQG,MAAM;YACvD,MAAMC,SAASJ,QAAQjB,KAAK;YAC5BI,OAAOkB,MAAM,CAACf,QAAQc;YACtB,kEAAkE;YAClE,uEAAuE;YACvE,sEAAsE;YACtE,8DAA8D;YAC9D,sCAAsC;YACtC,IAAIjB,OAAOmB,MAAM,CAACF,QAAQG,IAAI,CAAC,CAACxB,QAAU,CAACD,oBAAoBC,SAAS;gBACtE,MAAMT,QAAQP,eAAeyC,GAAG,CAACV;gBACjC,IAAIxB,OAAOiB,aAAakB,GAAG,CAACnC;qBACvBmB,eAAe;YACtB;QACF,EAAE,OAAOiB,OAAO;YACd,iEAAiE;YACjE,sCAAsC;YACtCC,QAAQD,KAAK,CAAC,6BAA6BA;QAC7C;IACF;IACA,OAAO;QAAEE,OAAOtB;QAAQC,cAAc;eAAIA;SAAa;QAAEE;IAAa;AACxE"}
@@ -0,0 +1,57 @@
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
+ import type { ComponentType } from 'react';
18
+ /**
19
+ * Site-runtime registry (AGL-419): non-visual (or overlay) components a
20
+ * plugin runs on every rendered tenant page — experiment runners,
21
+ * automation engines, announcement bars/popups. Registered from the
22
+ * plugin's SITE register fn (same surface as canvas components) and
23
+ * rendered generically by the tenant catch-all, which passes the page
24
+ * props bag; each runtime picks the slices it owns (the shapes it wrote
25
+ * server-side via its page enricher).
26
+ */
27
+ export interface SiteRuntimeProps {
28
+ hostId?: string;
29
+ /** Host routing map (screen id → path) for rename-safe navigation. */
30
+ screens?: Record<string, string>;
31
+ /** The page props composed by load-page-data (enricher output included). */
32
+ page: Record<string, any>;
33
+ }
34
+ /**
35
+ * Context handed to {@link SiteRuntimeEntry.loadPreviewProps} (AGL-830). The
36
+ * besigner Preview renders draft nodes with no server enricher, so a runtime
37
+ * that needs page-props (e.g. the marketing automations engine) rebuilds its
38
+ * own slice client-side from the passed Firestore instance.
39
+ */
40
+ export interface SiteRuntimePreviewContext {
41
+ hostId?: string;
42
+ /** Client Firestore instance (typed `unknown` to avoid a firebase dep here). */
43
+ firestore: unknown;
44
+ }
45
+ export interface SiteRuntimeEntry {
46
+ pluginId: string;
47
+ runtimeId: string;
48
+ Component: ComponentType<SiteRuntimeProps>;
49
+ /**
50
+ * Optional (AGL-830): build this runtime's `page`-props slice client-side
51
+ * for the editor Preview, where no server enricher runs. The returned bag
52
+ * is passed as the runtime's `page` prop. Absent → the runtime gets `{}`.
53
+ */
54
+ loadPreviewProps?: (ctx: SiteRuntimePreviewContext) => Promise<Record<string, unknown>>;
55
+ }
56
+ export declare function registerSiteRuntime(entry: SiteRuntimeEntry): void;
57
+ export declare function listSiteRuntimes(): readonly SiteRuntimeEntry[];
@@ -0,0 +1,25 @@
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
+ */ const runtimes = [];
17
+ export function registerSiteRuntime(entry) {
18
+ if (runtimes.some((r)=>r.runtimeId === entry.runtimeId)) return;
19
+ runtimes.push(entry);
20
+ }
21
+ export function listSiteRuntimes() {
22
+ return runtimes;
23
+ }
24
+
25
+ //# sourceMappingURL=site-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/plugin-manager/site-runtime.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\nimport type { ComponentType } from 'react'\n\n/**\n * Site-runtime registry (AGL-419): non-visual (or overlay) components a\n * plugin runs on every rendered tenant page — experiment runners,\n * automation engines, announcement bars/popups. Registered from the\n * plugin's SITE register fn (same surface as canvas components) and\n * rendered generically by the tenant catch-all, which passes the page\n * props bag; each runtime picks the slices it owns (the shapes it wrote\n * server-side via its page enricher).\n */\nexport interface SiteRuntimeProps {\n hostId?: string\n /** Host routing map (screen id → path) for rename-safe navigation. */\n screens?: Record<string, string>\n /** The page props composed by load-page-data (enricher output included). */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n page: Record<string, any>\n}\n\n/**\n * Context handed to {@link SiteRuntimeEntry.loadPreviewProps} (AGL-830). The\n * besigner Preview renders draft nodes with no server enricher, so a runtime\n * that needs page-props (e.g. the marketing automations engine) rebuilds its\n * own slice client-side from the passed Firestore instance.\n */\nexport interface SiteRuntimePreviewContext {\n hostId?: string\n /** Client Firestore instance (typed `unknown` to avoid a firebase dep here). */\n firestore: unknown\n}\n\nexport interface SiteRuntimeEntry {\n pluginId: string\n runtimeId: string\n Component: ComponentType<SiteRuntimeProps>\n /**\n * Optional (AGL-830): build this runtime's `page`-props slice client-side\n * for the editor Preview, where no server enricher runs. The returned bag\n * is passed as the runtime's `page` prop. Absent → the runtime gets `{}`.\n */\n loadPreviewProps?: (\n ctx: SiteRuntimePreviewContext,\n ) => Promise<Record<string, unknown>>\n}\n\nconst runtimes: SiteRuntimeEntry[] = []\n\nexport function registerSiteRuntime(entry: SiteRuntimeEntry): void {\n if (runtimes.some((r) => r.runtimeId === entry.runtimeId)) return\n runtimes.push(entry)\n}\n\nexport function listSiteRuntimes(): readonly SiteRuntimeEntry[] {\n return runtimes\n}\n"],"names":["runtimes","registerSiteRuntime","entry","some","r","runtimeId","push","listSiteRuntimes"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAgDD,MAAMA,WAA+B,EAAE;AAEvC,OAAO,SAASC,oBAAoBC,KAAuB;IACzD,IAAIF,SAASG,IAAI,CAAC,CAACC,IAAMA,EAAEC,SAAS,KAAKH,MAAMG,SAAS,GAAG;IAC3DL,SAASM,IAAI,CAACJ;AAChB;AAEA,OAAO,SAASK;IACd,OAAOP;AACT"}