@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,777 @@
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
+ * The form entity: what a form IS, separately from the shape an author drew.
18
+ *
19
+ * `docs/specs/reusable-forms.md` §2. Before this module a form's whole
20
+ * identity was `formName` — the free-text caption an author typed into an
21
+ * inspector field, copied onto each submission at write time and reconciled
22
+ * with nothing. Renaming a form split its history; two pages sharing a label
23
+ * were one list. A document at `hosts/{hostId}/forms/{formId}` is the identity
24
+ * those surfaces were reading a caption in place of.
25
+ *
26
+ * Pure and dependency-free on purpose. This barrel reaches client bundles
27
+ * through `app-utils/index`, so nothing here may import a Node builtin — the
28
+ * constraint that holds `personKey` in its own module one directory over.
29
+ * Everything that needs Firestore or `node:crypto` lives at the call sites.
30
+ */ import { _ as _extends } from "@swc/helpers/_/_extends";
31
+ import { FORMS_PLUGIN_ID } from "../plugin-manager/enabled-plugins.js";
32
+ import { submissionMonthKey } from "./form-abuse-ceiling.js";
33
+ /**
34
+ * The `componentId` of the node that RENDERS a form, and of the node that
35
+ * renders one of its fields.
36
+ *
37
+ * Persisted in screen, layout, component and form documents — never rename.
38
+ * Restated as constants because the walkers below, the promotion route and the
39
+ * graft all have to name the same two ids, and a copy that drifted would read
40
+ * as "this page has no form" rather than as an error.
41
+ */ export const FORM_COMPONENT_ID = 'form';
42
+ export const FORM_FIELD_COMPONENT_ID = 'formField';
43
+ /**
44
+ * The prop on a `form` node naming the entity it is a placement OF.
45
+ *
46
+ * Persisted in screen documents — never rename.
47
+ */ export const FORM_ID_PROP = 'formId';
48
+ /**
49
+ * What `/api/forms/submit` answers a submission to a site that switched Forms
50
+ * off (AGL-3029). A visitor reads it, so it names no plugin and no setting.
51
+ */ export const FORMS_OFF_FOR_SITE_REFUSAL = 'This site is not accepting form submissions';
52
+ /**
53
+ * The marketing plugin's id, as the submission door below names it. Core
54
+ * holds no import of the plugin; the catalog is where the string is defined.
55
+ */ const MARKETING_PLUGIN_ID = 'marketing';
56
+ /**
57
+ * The plugin whose door a submission to `/api/forms/submit` came through
58
+ * (AGL-3029) — the plugin that must run on the site for it to be accepted.
59
+ *
60
+ * The endpoint is shared. A form element posts to it, and so does a Marketing
61
+ * popup's email capture, which is a Marketing element rather than a form: a
62
+ * site that switched Forms off and still shows its popup must not silently
63
+ * lose every address the popup collects. The popup names its door in the
64
+ * body; everything else is a form's.
65
+ *
66
+ * A body that names a form ENTITY or a dataset binding is a form's, whatever
67
+ * door it claims. Those are what a form element sends and a popup never does,
68
+ * so the popup door cannot be used to file rows under a form, or into a
69
+ * dataset, on a site that switched Forms off.
70
+ */ export function formSubmissionDoorPlugin(body) {
71
+ var _ref;
72
+ const namesFormData = Boolean(String((_ref = body == null ? void 0 : body['formId']) != null ? _ref : '').trim()) || Boolean(body == null ? void 0 : body['datasetBinding']);
73
+ return (body == null ? void 0 : body['door']) === 'popup' && !namesFormData ? MARKETING_PLUGIN_ID : FORMS_PLUGIN_ID;
74
+ }
75
+ /**
76
+ * How many forms one query for a site's catalog reads.
77
+ *
78
+ * ⛔ **NOT the allowance.** How many forms a site may hold is
79
+ * `PLAN_ENTITLEMENTS[plan].formsPerHost`, enforced at creation through
80
+ * `checkQuota` in `/api/hosts/resources`. A surface that shows a customer
81
+ * their ceiling MUST read that entitlement — this number is larger, so
82
+ * reading it instead overstates the cap on every plan.
83
+ *
84
+ * What this bounds is a READ. `hosts/{hostId}/forms` is small enough to list
85
+ * in one page, and the listing surfaces (the submissions filter, the entity
86
+ * picker) say so — but a bound below the allowance would make them silently
87
+ * drop forms the customer made and can see elsewhere, which is the invisible
88
+ * half of a wrong limit and the expensive one to discover.
89
+ *
90
+ * So it sits at or above every per-plan allowance, with headroom for the
91
+ * catalogs that legitimately exceed one: a per-org contract override, and any
92
+ * site that built past a ceiling before it was lowered. `forms.spec.ts` pins
93
+ * that relationship rather than trusting the two numbers to be moved
94
+ * together. A catalog past even this needs real pagination, not a larger
95
+ * constant.
96
+ */ export const FORMS_MAX_PER_HOST = 1000;
97
+ /**
98
+ * Whether a form has been retired — see {@link FormDocument.archivedAt}.
99
+ *
100
+ * PRESENCE, not a number. Absent, `null` and `0` are "in use"; any other
101
+ * value is a retirement marker.
102
+ *
103
+ * ⛔ Deliberately NOT shaped like `isPipelineArchived`, which asks for a
104
+ * positive number. A pipeline stores its own numeric stamp; a form's is
105
+ * written by whatever retired it, and the marker already in production on at
106
+ * least one form is a Firestore `Timestamp` rather than a number. The two
107
+ * readers that predate this function — the list filter and
108
+ * `/api/health/funnel`'s probe — both test truthiness, so a stricter rule
109
+ * here does not tighten anything: it just disagrees with them, and the
110
+ * disagreement surfaces as a retired form reappearing in the catalog while
111
+ * the funnel goes on ignoring it.
112
+ *
113
+ * Measured, not assumed: with the numeric rule this function un-hid a form
114
+ * the probe was still skipping, and the two counts were 5 against 4.
115
+ *
116
+ * ⚠️ Asked of the STORED document. A caller that has already filtered a list
117
+ * must not re-derive this from a display flag; the field is the fact.
118
+ */ export function isFormArchived(form) {
119
+ return Boolean(form == null ? void 0 : form.archivedAt);
120
+ }
121
+ export const FORM_STAT_KINDS = [
122
+ 'views',
123
+ 'starts',
124
+ 'submissions',
125
+ 'leads'
126
+ ];
127
+ /** The next month after `period`, or `null` for a key that is not one. */ function nextPeriod(period) {
128
+ const match = /^(\d{4})-(\d{2})$/.exec(period);
129
+ if (!match) return null;
130
+ const year = Number(match[1]);
131
+ const month = Number(match[2]);
132
+ if (month < 1 || month > 12) return null;
133
+ return month === 12 ? `${year + 1}-01` : `${year}-${String(month + 1).padStart(2, '0')}`;
134
+ }
135
+ /**
136
+ * A form's history as a dense month series, from the first month anything was
137
+ * recorded to the last.
138
+ *
139
+ * ⛔ THE SERIES NEVER STARTS BEFORE THE COUNTER DID. A month with no key is
140
+ * two different facts — "nothing happened" and "nothing was counted yet" —
141
+ * and they are told apart by WHERE the month falls: inside the recorded range
142
+ * an absent key is a true zero, because the counter was live and wrote
143
+ * nothing; before it, there is no measurement to draw and the series simply
144
+ * does not extend there. Padding to a fixed twelve months would render the
145
+ * form's pre-counter history as a row of confident zeros.
146
+ *
147
+ * Interior gaps ARE filled, at zero, so a quiet month reads as a quiet month
148
+ * rather than closing up and making two distant months look adjacent.
149
+ *
150
+ * @param stats - the stored counters, or nothing.
151
+ * @param maxPeriods - how many of the most recent months to return.
152
+ * @returns oldest first, so a chart reads left to right. Empty when nothing
153
+ * has ever been recorded.
154
+ */ export function formPeriodSeries(stats, maxPeriods = 12) {
155
+ const periods = stats == null ? void 0 : stats.periods;
156
+ if (!periods) return [];
157
+ const keys = Object.keys(periods).filter((key)=>/^\d{4}-(0[1-9]|1[0-2])$/.test(key)).sort();
158
+ if (!keys.length) return [];
159
+ const series = [];
160
+ const last = keys[keys.length - 1];
161
+ let cursor = keys[0];
162
+ // Bounded by the span rather than by a `while (true)`: a stored key far in
163
+ // the future would otherwise walk the calendar forever.
164
+ for(let step = 0; cursor && step <= 1200; step += 1){
165
+ var _periods_cursor, _month_views, _month_starts, _month_submissions, _month_leads;
166
+ const month = (_periods_cursor = periods[cursor]) != null ? _periods_cursor : {};
167
+ series.push({
168
+ period: cursor,
169
+ views: Number((_month_views = month.views) != null ? _month_views : 0),
170
+ starts: Number((_month_starts = month.starts) != null ? _month_starts : 0),
171
+ submissions: Number((_month_submissions = month.submissions) != null ? _month_submissions : 0),
172
+ leads: Number((_month_leads = month.leads) != null ? _month_leads : 0)
173
+ });
174
+ if (cursor === last) break;
175
+ cursor = nextPeriod(cursor);
176
+ }
177
+ return maxPeriods > 0 && series.length > maxPeriods ? series.slice(series.length - maxPeriods) : series;
178
+ }
179
+ /**
180
+ * Sum `of` and `over` across exactly the months in which `over` was recorded.
181
+ *
182
+ * This is what stops a rate being a lie of arithmetic. `views` began being
183
+ * counted the day the beacon shipped and `submissions` has counted since the
184
+ * form entity existed, so dividing the lifetime totals answers "submissions
185
+ * ever, over views since Tuesday" — a number that is not wrong by a little.
186
+ *
187
+ * A month is IN the window when it carries a non-zero `over`, not merely a
188
+ * key: a month the beacon never reported is not a month with no views, it is
189
+ * a month with no measurement, and including it would deflate every rate
190
+ * taken over the window by however long the counter was dark.
191
+ *
192
+ * @returns `periods: 0` when nothing qualifies, which every caller must
193
+ * render as a dash rather than as a zero rate.
194
+ */ export function formStatsWindow(stats, over, of) {
195
+ var _ref;
196
+ const window = {
197
+ periods: 0,
198
+ over: 0,
199
+ of: 0
200
+ };
201
+ for (const month of Object.values((_ref = stats == null ? void 0 : stats.periods) != null ? _ref : {})){
202
+ var _ref1, _ref2;
203
+ const denominator = Number((_ref1 = month == null ? void 0 : month[over]) != null ? _ref1 : 0);
204
+ if (!Number.isFinite(denominator) || denominator <= 0) continue;
205
+ window.periods += 1;
206
+ window.over += denominator;
207
+ const numerator = Number((_ref2 = month == null ? void 0 : month[of]) != null ? _ref2 : 0);
208
+ if (Number.isFinite(numerator)) window.of += numerator;
209
+ }
210
+ return window;
211
+ }
212
+ /**
213
+ * The month key a moment falls in, or `null` for a moment that is not one.
214
+ *
215
+ * UTC, through {@link submissionMonthKey}, because that is the function every
216
+ * writer of `stats.periods` keys by. A month derived any other way reads zero
217
+ * on exactly the months the two definitions disagree about — which is the
218
+ * boundary month, the one a reader is most likely to be asking about.
219
+ */ export function formPeriodKey(atMs) {
220
+ if (typeof atMs !== 'number' || !Number.isFinite(atMs)) return null;
221
+ return submissionMonthKey(new Date(atMs));
222
+ }
223
+ /** The counters, with nothing recorded for any of them. */ function emptyTotals(periods) {
224
+ return {
225
+ views: null,
226
+ starts: null,
227
+ submissions: null,
228
+ leads: null,
229
+ periods
230
+ };
231
+ }
232
+ /** A stored counter as a number, or `null` where nothing was stored. */ function countedStat(value) {
233
+ return typeof value === 'number' && Number.isFinite(value) ? value : null;
234
+ }
235
+ /**
236
+ * Sum a form's counters — over its whole history, or over a span of months.
237
+ *
238
+ * ## Lifetime and windowed are different questions, and the caller picks
239
+ *
240
+ * The flat counters on {@link FormStats} have counted since the form entity
241
+ * existed. Passing no range returns those, and `periods: null` says so, so a
242
+ * surface can label the figure lifetime instead of implying it belongs to
243
+ * whatever the surface is about.
244
+ *
245
+ * Passing a range sums `stats.periods` instead, over exactly the month keys
246
+ * inside it. The two can differ by a lot in both directions: the month series
247
+ * began later than the flat counters, so a windowed total over a form's whole
248
+ * history can still be smaller than its lifetime total.
249
+ *
250
+ * ## What `null` means here, and why an in-range zero is not it
251
+ *
252
+ * A counter stays `null` unless some in-range month actually carries it. This
253
+ * is the same rule {@link formStatsWindow} applies to a rate's denominator,
254
+ * and it exists for the same reason: a month that carries `submissions` and
255
+ * no `leads` key is not a month with zero leads, it is a month in which
256
+ * nothing counted leads.
257
+ *
258
+ * ## Whole months, and a range boundary that lands inside one
259
+ *
260
+ * `stats.periods` is keyed by calendar month, so the finest a windowed total
261
+ * can be is a month. A range that starts on the 20th takes that whole month,
262
+ * including the days before it. A caller reporting a windowed figure has to
263
+ * say the window is measured in whole months; nothing here can narrow it.
264
+ *
265
+ * @param stats - the stored counters, or nothing.
266
+ * @param range - the months to confine the sum to. Omitted, or with neither
267
+ * end, gives lifetime totals.
268
+ */ export function formStatsTotals(stats, range) {
269
+ var _ref, _ref1, _ref2;
270
+ const from = (_ref = range == null ? void 0 : range.from) != null ? _ref : null;
271
+ const to = (_ref1 = range == null ? void 0 : range.to) != null ? _ref1 : null;
272
+ if (!from && !to) {
273
+ return {
274
+ views: countedStat(stats == null ? void 0 : stats.views),
275
+ starts: countedStat(stats == null ? void 0 : stats.starts),
276
+ submissions: countedStat(stats == null ? void 0 : stats.submissions),
277
+ leads: countedStat(stats == null ? void 0 : stats.leads),
278
+ periods: null
279
+ };
280
+ }
281
+ const totals = emptyTotals(0);
282
+ for (const [key, month] of Object.entries((_ref2 = stats == null ? void 0 : stats.periods) != null ? _ref2 : {})){
283
+ var _totals_periods;
284
+ // The same key shape `formPeriodSeries` accepts. A stored key of another
285
+ // shape is not a month and cannot be compared against a range as one.
286
+ if (!/^\d{4}-(0[1-9]|1[0-2])$/.test(key)) continue;
287
+ // Lexical comparison IS chronological for a zero-padded `YYYY-MM`.
288
+ if (from && key < from) continue;
289
+ if (to && key > to) continue;
290
+ totals.periods = ((_totals_periods = totals.periods) != null ? _totals_periods : 0) + 1;
291
+ for (const kind of FORM_STAT_KINDS){
292
+ var _totals_kind;
293
+ const value = countedStat(month == null ? void 0 : month[kind]);
294
+ if (value === null) continue;
295
+ totals[kind] = ((_totals_kind = totals[kind]) != null ? _totals_kind : 0) + value;
296
+ }
297
+ }
298
+ return totals;
299
+ }
300
+ export const FORM_SLUG_MAX_LENGTH = 64;
301
+ export const FORM_DISPLAY_NAME_MAX_LENGTH = 100;
302
+ /**
303
+ * A stable, url-safe handle for a form, derived from its display name.
304
+ *
305
+ * The slug is NOT the identity — `formId` is, and the slug is free to be
306
+ * regenerated. It exists so a console URL and an export filename can name a
307
+ * form in something a human recognizes without either becoming a second
308
+ * identity the way `formName` did.
309
+ *
310
+ * @returns the slug, or `''` when the input reduces to nothing — a caller
311
+ * must fall back to the document id rather than store an empty slug.
312
+ */ export function normalizeFormSlug(input) {
313
+ return String(input != null ? input : '').trim().toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '').slice(0, FORM_SLUG_MAX_LENGTH).replace(/-+$/g, '');
314
+ }
315
+ const FORM_FIELD_TYPES = new Set([
316
+ 'text',
317
+ 'email',
318
+ 'textarea',
319
+ 'select',
320
+ 'radio',
321
+ 'checkbox',
322
+ 'rating'
323
+ ]);
324
+ /**
325
+ * Splits a `FormField` node's newline- or comma-separated choice list.
326
+ *
327
+ * Restated rather than imported from `libs/plugins/mui`: this module is in the
328
+ * foundation layer and a plugin may not be a dependency of it. The two must
329
+ * agree, and `forms.spec.ts` asserts they do against the same inputs
330
+ * `parseFieldOptions` is specified on.
331
+ */ function parseDeclaredOptions(options) {
332
+ return String(options != null ? options : '').split(/[\n,]/).map((entry)=>entry.trim()).filter(Boolean);
333
+ }
334
+ /** Child ids of a node in the stored map form, in the author's order. */ function childIdsOf(node) {
335
+ return Array.isArray(node == null ? void 0 : node.nodes) ? node.nodes : [];
336
+ }
337
+ /**
338
+ * Every `formField` descendant of `formNodeId`, in the order the author
339
+ * placed them.
340
+ *
341
+ * Depth-first pre-order, because that IS the reading order of the rendered
342
+ * form and the order a per-form submission list wants its columns in. A
343
+ * breadth-first walk would interleave the fields of two adjacent groups.
344
+ *
345
+ * Nesting between the form and its fields is arbitrary — the `Form` runtime
346
+ * makes a point of riding the DOM precisely so it needs no React context — so
347
+ * the walk cannot assume fields are direct children.
348
+ *
349
+ * Repeated and unknown ids are skipped, which bounds a cyclic document.
350
+ */ export function collectFormFieldNodeIds(nodes, formNodeId, formFieldComponentId = FORM_FIELD_COMPONENT_ID) {
351
+ if (!(nodes == null ? void 0 : nodes[formNodeId])) return [];
352
+ const found = [];
353
+ const seen = new Set([
354
+ formNodeId
355
+ ]);
356
+ const stack = [
357
+ ...childIdsOf(nodes[formNodeId])
358
+ ].reverse();
359
+ while(stack.length){
360
+ var _nodes_id;
361
+ const id = stack.pop();
362
+ if (seen.has(id) || !nodes[id]) continue;
363
+ seen.add(id);
364
+ if (((_nodes_id = nodes[id]) == null ? void 0 : _nodes_id.componentId) === formFieldComponentId) found.push(id);
365
+ // Pushed reversed so the first child is popped first — the walk is
366
+ // pre-order, and a nested field must not overtake its own siblings.
367
+ const children = childIdsOf(nodes[id]);
368
+ for(let index = children.length - 1; index >= 0; index -= 1){
369
+ stack.push(children[index]);
370
+ }
371
+ }
372
+ return found;
373
+ }
374
+ /**
375
+ * Reads a form's declared field list off the nodes an author already drew.
376
+ *
377
+ * This is the whole of what adoption has to invent, and it invents nothing:
378
+ * `fieldName`, `fieldType`, `label`, `required`, `options` and
379
+ * `datasetFieldId` are all already props on the `formField` nodes. A form
380
+ * adopted from a page therefore declares exactly the form that page was
381
+ * already submitting.
382
+ *
383
+ * A field with no `fieldName` is DROPPED rather than defaulted. The runtime
384
+ * falls back to `name = fieldName || 'field'`, so several unnamed fields
385
+ * collapse onto one submission key — declaring them would put a key in the
386
+ * schema that does not identify a value.
387
+ *
388
+ * A duplicate `fieldName` keeps its FIRST occurrence, matching the submission
389
+ * the runtime produces: `FormData` entries under one key are joined into that
390
+ * one key, so the second node contributes no separate value.
391
+ */ export function formFieldDeclsFromNodes(nodes, formNodeId, formFieldComponentId = FORM_FIELD_COMPONENT_ID) {
392
+ const declarations = [];
393
+ const claimed = new Set();
394
+ for (const id of collectFormFieldNodeIds(nodes, formNodeId, formFieldComponentId)){
395
+ var _ref, _props_fieldName, _props_fieldType, _props_label, _props_datasetFieldId;
396
+ var _nodes_id;
397
+ const props = (_ref = nodes == null ? void 0 : (_nodes_id = nodes[id]) == null ? void 0 : _nodes_id.props) != null ? _ref : {};
398
+ const fieldName = String((_props_fieldName = props['fieldName']) != null ? _props_fieldName : '').trim();
399
+ if (!fieldName || claimed.has(fieldName)) continue;
400
+ claimed.add(fieldName);
401
+ const rawType = String((_props_fieldType = props['fieldType']) != null ? _props_fieldType : 'text');
402
+ const options = parseDeclaredOptions(props['options']);
403
+ const label = String((_props_label = props['label']) != null ? _props_label : '').trim();
404
+ const datasetFieldId = String((_props_datasetFieldId = props['datasetFieldId']) != null ? _props_datasetFieldId : '').trim();
405
+ declarations.push(_extends({
406
+ fieldName,
407
+ fieldType: FORM_FIELD_TYPES.has(rawType) ? rawType : 'text'
408
+ }, label ? {
409
+ label
410
+ } : {}, props['required'] === true ? {
411
+ required: true
412
+ } : {}, options.length ? {
413
+ options
414
+ } : {}, datasetFieldId ? {
415
+ datasetFieldId
416
+ } : {}));
417
+ }
418
+ return declarations;
419
+ }
420
+ /**
421
+ * Finds every `form` node in one document's node map.
422
+ *
423
+ * The corpus and the shape are the *Used by* scan's: a flat
424
+ * `Record<NodeId, AglynNodeSchema>` per screen, layout and component
425
+ * definition. That scan is idle until asked, for the reason its card states
426
+ * in full — reading every screen and every layout on mount is the
427
+ * expensive-read shape this codebase has a standing rule against — and this
428
+ * one inherits that posture rather than re-arguing it.
429
+ */ export function discoverFormNodes(nodes, source, ids = {}) {
430
+ var _ids_form, _ids_formField;
431
+ const formComponentId = (_ids_form = ids.form) != null ? _ids_form : FORM_COMPONENT_ID;
432
+ const formFieldComponentId = (_ids_formField = ids.formField) != null ? _ids_formField : FORM_FIELD_COMPONENT_ID;
433
+ const found = [];
434
+ for (const [nodeId, node] of Object.entries(nodes != null ? nodes : {})){
435
+ var _node_props, _props_formId;
436
+ if ((node == null ? void 0 : node.componentId) !== formComponentId) continue;
437
+ const props = (_node_props = node.props) != null ? _node_props : {};
438
+ const boundId = String((_props_formId = props['formId']) != null ? _props_formId : '').trim();
439
+ found.push(_extends({
440
+ sourceKind: source.kind,
441
+ sourceId: source.id
442
+ }, source.name ? {
443
+ sourceName: source.name
444
+ } : {}, {
445
+ nodeId,
446
+ // Mirrors the runtime default: an unnamed form submits as `Form`, so
447
+ // that is the caption its history is filed under and the one an
448
+ // adoption has to claim.
449
+ formName: normalizeSubmissionFormName(props['formName'])
450
+ }, boundId ? {
451
+ formId: boundId
452
+ } : {}, {
453
+ fields: formFieldDeclsFromNodes(nodes, nodeId, formFieldComponentId)
454
+ }));
455
+ }
456
+ return found;
457
+ }
458
+ /**
459
+ * Whether any node in this map PLACES a form entity (as opposed to merely
460
+ * drawing an unbound form inline).
461
+ *
462
+ * The cost gate in front of the forms read, and cheap on purpose: one scan of
463
+ * a map the caller already holds, against a read that is a whole collection
464
+ * query. Most pages carry no form at all, and a page whose form nodes are all
465
+ * unbound has nothing an entity could contribute — either way there is nothing
466
+ * for the graft to resolve, so the query buys nothing.
467
+ *
468
+ * Says nothing about whether the named form EXISTS or is published; that is
469
+ * settled by the graft, against documents this cannot see.
470
+ */ export function placesFormEntity(nodes) {
471
+ for (const node of Object.values(nodes != null ? nodes : {})){
472
+ var _node_props;
473
+ if ((node == null ? void 0 : node.componentId) !== FORM_COMPONENT_ID) continue;
474
+ const formId = (_node_props = node.props) == null ? void 0 : _node_props[FORM_ID_PROP];
475
+ if (typeof formId === 'string' && formId.trim()) return true;
476
+ }
477
+ return false;
478
+ }
479
+ /**
480
+ * Whether any node in this map places THIS form.
481
+ *
482
+ * The per-id half of {@link placesFormEntity}, and the predicate a usage scan
483
+ * asks of a screen, a layout or a component definition. Deliberately the same
484
+ * reader the graft resolves against: a scan that disagreed about what counts
485
+ * as a placement would drop the caches of the wrong pages, and the pages it
486
+ * missed would serve the old form for the whole revalidate window with nothing
487
+ * recording that they were skipped.
488
+ */ export function nodesPlaceForm(nodes, formId) {
489
+ if (!formId) return false;
490
+ for (const node of Object.values(nodes != null ? nodes : {})){
491
+ var _node_props;
492
+ if ((node == null ? void 0 : node.componentId) !== FORM_COMPONENT_ID) continue;
493
+ const bound = (_node_props = node.props) == null ? void 0 : _node_props[FORM_ID_PROP];
494
+ if (typeof bound === 'string' && bound.trim() === formId) return true;
495
+ }
496
+ return false;
497
+ }
498
+ /**
499
+ * The `form` node inside a form's OWN design.
500
+ *
501
+ * A form document's tree holds exactly one, because the document IS that
502
+ * form — but the tree is a flat map under a synthetic canvas root, so the
503
+ * node has to be found rather than assumed to be the root itself.
504
+ *
505
+ * Here rather than at each surface because every reader of a form's design
506
+ * needs it before it can ask anything else: the form's page to run
507
+ * `checkFormContract`, the promotion route to publish, the preview to draw,
508
+ * {@link formDesignReboundTo} to rewrite the binding. A caller that found
509
+ * the node its own way and one that found it this way must agree, or a
510
+ * design reads as "no form here" on one surface and as bound on the next.
511
+ */ export function formNodeIdIn(nodes) {
512
+ return Object.keys(nodes != null ? nodes : {}).find((id)=>{
513
+ var _nodes_id;
514
+ return (nodes == null ? void 0 : (_nodes_id = nodes[id]) == null ? void 0 : _nodes_id.componentId) === FORM_COMPONENT_ID;
515
+ });
516
+ }
517
+ /**
518
+ * The same design, naming `identity` instead of whichever form it named
519
+ * before — or `null` when it already did.
520
+ *
521
+ * ## Why a copied design must be rewritten rather than carried
522
+ *
523
+ * A form's design names its own form in a prop (AGL-3024). That binding is
524
+ * what `/api/forms/submit` stamps a submission with and what the form's own
525
+ * submission list is an equality on, so a design that travels to a SECOND
526
+ * form — duplicated, imported, installed from a starter — arrives naming the
527
+ * first one, and every submission the second form collects is filed under the
528
+ * first. Nothing about that is visible: the copy renders, the visitor
529
+ * submits, the row lands, and the copy's own list simply never grows.
530
+ * `checkFormContract` calls it `form-id-unbound`, and it is the one violation
531
+ * a copy CAUSES rather than inherits.
532
+ *
533
+ * So every path that gives a stored design to a different form rebinds it
534
+ * here, with the same two props the Forms page's Create stamps on a new one:
535
+ * the id the submissions are keyed on, and the caption they are labelled
536
+ * with in the Inbox. Leaving the caption behind is the quieter half of the
537
+ * same bug — the copy's submissions arrive titled with the source's name.
538
+ *
539
+ * `null` for "nothing to write", so a caller holding a compressed tree can
540
+ * skip the decode-rewrite-encode round trip entirely in the common case.
541
+ * A design with no form node in it returns `null` too: there is no binding
542
+ * to move, and inventing one is not this function's decision.
543
+ *
544
+ * Pure — the input map and its nodes are not changed.
545
+ */ export function formDesignReboundTo(nodes, identity) {
546
+ var _identity_formId, _identity_formName;
547
+ const formId = String((_identity_formId = identity.formId) != null ? _identity_formId : '').trim();
548
+ if (!formId || !nodes) return null;
549
+ const requested = String((_identity_formName = identity.formName) != null ? _identity_formName : '').trim();
550
+ const formName = requested ? requested.slice(0, FORM_DISPLAY_NAME_MAX_LENGTH) : '';
551
+ const rebound = {};
552
+ let changed = false;
553
+ for (const entry of Object.entries(nodes)){
554
+ var _ref, _props_FORM_ID_PROP;
555
+ const [id, node] = entry;
556
+ const props = (_ref = node == null ? void 0 : node.props) != null ? _ref : {};
557
+ if ((node == null ? void 0 : node.componentId) !== FORM_COMPONENT_ID) {
558
+ rebound[id] = node;
559
+ continue;
560
+ }
561
+ const bound = String((_props_FORM_ID_PROP = props[FORM_ID_PROP]) != null ? _props_FORM_ID_PROP : '').trim();
562
+ if (bound === formId && (!formName || props['formName'] === formName)) {
563
+ rebound[id] = node;
564
+ continue;
565
+ }
566
+ changed = true;
567
+ rebound[id] = _extends({}, node, {
568
+ props: _extends({}, props, {
569
+ [FORM_ID_PROP]: formId
570
+ }, formName ? {
571
+ formName
572
+ } : {})
573
+ });
574
+ }
575
+ return changed ? rebound : null;
576
+ }
577
+ /**
578
+ * The placement kind that makes a placed form render its ENTITY'S design.
579
+ *
580
+ * Until this existed the entity's tree was written on every publish and read
581
+ * by nothing: a form's fields had to be redrawn on each page that placed it,
582
+ * and editing the form propagated nowhere. The two documents disagreed the
583
+ * moment either changed, and the page always won.
584
+ *
585
+ * `replacesAuthoredChildren` is what makes that propagation real, and it is
586
+ * the reason the resolution rule is strict. The rule, stated once:
587
+ *
588
+ * - Entity has a published design → the entity's fields ARE the form. Whatever
589
+ * the page drew inside the form node is discarded, exactly as a reusable
590
+ * instance's child list is replaced by its definition's. This is what "edit
591
+ * the form once" means; a merge would render a page's stale copy of a field
592
+ * beside the entity's current one.
593
+ * - Entity has no published design, is archived away, or the `formId` names
594
+ * nothing → the form node is left completely alone, inline fields included.
595
+ * Every form built before the entity existed is in this state, so this is
596
+ * the branch that keeps the live site rendering exactly what it renders
597
+ * today.
598
+ *
599
+ * A deleted or unpublished entity therefore degrades to the page's own copy
600
+ * rather than to an empty form — the same fail-open posture the component
601
+ * graft takes for an unresolvable `refId`, and for the same reason: a
602
+ * document going missing must not take a published page's content with it.
603
+ *
604
+ * The discard is a COMPOSE-time one, so it takes nothing away permanently:
605
+ * the page's fields stay in its document, and clearing the binding brings
606
+ * them straight back. That is what makes binding an existing hand-built form
607
+ * to an entity a reversible act rather than a destructive one.
608
+ */ export function placedFormPlacement(formsById) {
609
+ return {
610
+ componentId: FORM_COMPONENT_ID,
611
+ refProp: FORM_ID_PROP,
612
+ definitionsById: formsById,
613
+ replacesAuthoredChildren: true
614
+ };
615
+ }
616
+ /**
617
+ * The caption as the submit route stores it.
618
+ *
619
+ * Restated here so discovery and the backfill compare the same string the
620
+ * route wrote: `String(formName ?? 'Form').slice(0, 100)`. A differently
621
+ * derived caption on either side would make every legacy match miss, silently
622
+ * and in the safe direction — which is the failure that looks like success.
623
+ */ export function normalizeSubmissionFormName(value) {
624
+ return String(value != null ? value : '').trim() ? String(value).slice(0, FORM_DISPLAY_NAME_MAX_LENGTH) : 'Form';
625
+ }
626
+ /** The page path as the submit route stores it. */ export function normalizeSubmissionPath(value) {
627
+ return String(value != null ? value : '').slice(0, 500);
628
+ }
629
+ /**
630
+ * Which adopted form, if any, a pre-entity submission belongs to.
631
+ *
632
+ * ⛔ **An ambiguous submission is left UNSTAMPED, always.** The two failure
633
+ * modes are not symmetric and the asymmetry is the whole rule:
634
+ *
635
+ * - An unmatched row is still in the Inbox, still readable, still exportable
636
+ * over `/v1`. It is missing from ONE form's list, the Forms page says how
637
+ * many rows are in that state, and a later adoption can still claim it.
638
+ * - A wrongly stamped row is filed under a form it was never sent to. It
639
+ * leaves the Inbox's *Unassigned* view, joins a stranger's submission list,
640
+ * and nothing on any screen says it moved. It is invisible, and invisible
641
+ * is not recoverable.
642
+ *
643
+ * So the match is on the PAIR. `formName` alone is a caption two pages may
644
+ * legitimately share — that shared caption is the defect the form entity
645
+ * exists to fix, and using it as the migration key would carry the defect into
646
+ * the migration. `path` is what tells two same-named forms apart, and it only
647
+ * does so when it was distinct, so both must agree and exactly one form may
648
+ * claim the pair.
649
+ *
650
+ * @returns the form id to stamp, or `null` to leave the row alone. Never a
651
+ * best guess.
652
+ */ export function matchSubmissionToForm(submission, candidates) {
653
+ const formName = normalizeSubmissionFormName(submission.formName);
654
+ const path = normalizeSubmissionPath(submission.path);
655
+ // A submission that recorded no path cannot be disambiguated by one, and
656
+ // the pair rule has nothing to stand on. Older rows genuinely predate the
657
+ // field; they stay unstamped rather than falling back to the caption.
658
+ if (!path) return null;
659
+ const matched = candidates.filter((candidate)=>{
660
+ var _candidate_legacyMatch, _candidate_legacyMatch1;
661
+ return ((_candidate_legacyMatch = candidate.legacyMatch) == null ? void 0 : _candidate_legacyMatch.formName) === formName && Array.isArray((_candidate_legacyMatch1 = candidate.legacyMatch) == null ? void 0 : _candidate_legacyMatch1.paths) && candidate.legacyMatch.paths.includes(path);
662
+ });
663
+ return matched.length === 1 ? matched[0].formId : null;
664
+ }
665
+ /**
666
+ * The value of the declared consent field, as a marketing opt-in.
667
+ *
668
+ * ⛔ THE FACT OF SUBMISSION IS NOT AN OPT-IN, and a form that declares no
669
+ * consent field produces no consent record — on any plan, at any time. This
670
+ * reads ONE field, named by the form's own `consentFieldName`, and asks
671
+ * whether the visitor ticked it.
672
+ *
673
+ * That is not in tension with the standing rule that consent is never
674
+ * inferred: a checkbox the visitor ticked IS an explicit checkbox. What the
675
+ * entity adds is a declared place to look, in place of the closed name list
676
+ * the route has to fall back on when no form is bound.
677
+ *
678
+ * What counts as the tick is {@link isConsentCheckboxTicked}'s, asked with
679
+ * the consent field's own declaration from `form.fields`.
680
+ *
681
+ * Returns `false`, never `undefined`: every writer downstream stores consent
682
+ * absent-or-true and must never write `false` over an opt-in captured
683
+ * elsewhere.
684
+ */ export function readFormDeclaredConsent(form, fields) {
685
+ var _ref;
686
+ const fieldName = String((_ref = form == null ? void 0 : form.consentFieldName) != null ? _ref : '').trim();
687
+ if (!fieldName || !fields) return false;
688
+ const declaration = Array.isArray(form == null ? void 0 : form.fields) ? form.fields.find((entry)=>(entry == null ? void 0 : entry.fieldName) === fieldName) : undefined;
689
+ return isConsentCheckboxTicked(fields[fieldName], declaration);
690
+ }
691
+ /**
692
+ * Whether a posted value ticks a consent checkbox.
693
+ *
694
+ * A tick arrives in one of two shapes. A box with no text of its own posts
695
+ * one of {@link AFFIRMATIVE_CHECKBOX_VALUES}. A Checkboxes field posts the
696
+ * TEXT of the option that was ticked — which is what lets its option say what
697
+ * the person agrees to — so when the field's declaration is a checkbox with
698
+ * exactly one option, that option's text, alone, is a tick too: compared as
699
+ * the renderer draws it, trimmed, or as a list holding only it. A field with
700
+ * several options is a question with several answers, and none of them is
701
+ * the opt-in by its text.
702
+ *
703
+ * ⛔ The declaration must come from the STORED form document, never from the
704
+ * request: a declaration a caller could send would let any submission name
705
+ * its own words as the opt-in.
706
+ */ export function isConsentCheckboxTicked(value, declaration) {
707
+ if (value === true) return true;
708
+ if (AFFIRMATIVE_CHECKBOX_VALUES.has(String(value != null ? value : '').trim().toLowerCase())) {
709
+ return true;
710
+ }
711
+ const option = soleCheckboxOption(declaration);
712
+ if (!option) return false;
713
+ const posted = Array.isArray(value) ? value.length === 1 ? value[0] : undefined : value;
714
+ return typeof posted === 'string' && posted.trim() === option;
715
+ }
716
+ /** A checkbox declaration's one option, or `null` for any other declaration. */ function soleCheckboxOption(declaration) {
717
+ if ((declaration == null ? void 0 : declaration.fieldType) !== 'checkbox' || !Array.isArray(declaration.options)) {
718
+ return null;
719
+ }
720
+ const options = declaration.options.map((option)=>String(option != null ? option : '').trim()).filter(Boolean);
721
+ return options.length === 1 ? options[0] : null;
722
+ }
723
+ /** Checkbox values a browser form actually posts for a ticked box. */ export const AFFIRMATIVE_CHECKBOX_VALUES = new Set([
724
+ 'true',
725
+ 'on',
726
+ 'yes',
727
+ '1',
728
+ 'checked'
729
+ ]);
730
+ /**
731
+ * The field names the submit route reads an opt-in from when the form
732
+ * declares no consent field.
733
+ *
734
+ * A CLOSED list rather than a substring match on "consent": a merchant's
735
+ * field called `consentToTreatment` on a clinic intake form is a different
736
+ * instrument entirely, and matching it would manufacture a marketing basis
737
+ * out of a medical one. Compared after {@link isMarketingConsentFieldName}'s
738
+ * normalization, so `Subscribe to newsletter` and `subscribeToNewsletter`
739
+ * are one name.
740
+ */ export const MARKETING_CONSENT_FIELD_NAMES = new Set([
741
+ 'marketingconsent',
742
+ 'marketingoptin',
743
+ 'emailoptin',
744
+ 'newsletteroptin',
745
+ 'subscribe',
746
+ 'subscribetonewsletter'
747
+ ]);
748
+ /**
749
+ * Whether a field, by its name alone, is one the submit route reads an
750
+ * opt-in out of when no consent field is declared.
751
+ *
752
+ * Asked of a DESIGN by the publish check and of a PAYLOAD by the route, so
753
+ * the two cannot disagree about which undeclared field counts as consent.
754
+ */ export function isMarketingConsentFieldName(name) {
755
+ return MARKETING_CONSENT_FIELD_NAMES.has(String(name != null ? name : '').toLowerCase().replace(/[^a-z]/g, ''));
756
+ }
757
+ /**
758
+ * The marketing consent field: the props the Forms editor's **Marketing
759
+ * consent** preset places on a Form Field, and the ones a form generated from
760
+ * a brief carries.
761
+ *
762
+ * A Checkboxes field with ONE option, unticked and not required. The option
763
+ * says what the person agrees to, because a Checkboxes field posts the text
764
+ * of the option that was ticked and {@link isConsentCheckboxTicked} reads that
765
+ * text as the tick. So the option holds no comma and no line break: the
766
+ * Options setting starts a new box at each, and a second box is an answer
767
+ * that is not the opt-in. A site owner may reword the label and the option;
768
+ * the form names the field as its `consentFieldName` for a tick to count.
769
+ */ export const MARKETING_CONSENT_FORM_FIELD = {
770
+ fieldName: 'marketingConsent',
771
+ label: 'Marketing emails',
772
+ fieldType: 'checkbox',
773
+ options: 'Email me news and offers',
774
+ required: false
775
+ };
776
+
777
+ //# sourceMappingURL=forms.js.map