@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,130 @@
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
+ type Nodes = Record<string, any>;
18
+ /** What was wrong with one node, and what was done about it. */
19
+ export interface CanvasRepairFinding {
20
+ /** The node the finding is about — a map key, or an id listed on a parent. */
21
+ nodeId: string;
22
+ /** Best available human label: the node's name, else its componentId. */
23
+ label?: string;
24
+ kind: 'not-a-node' | 'no-component' | 'unknown-component' | 'dangling-child' | 'orphaned' | 'cycle' | 'unreachable' | 'unlisted';
25
+ action: 'removed' | 'reparented' | 'relisted' | 'unlinked';
26
+ /** One sentence an author can read, written for the preview dialog. */
27
+ detail: string;
28
+ }
29
+ export interface CanvasRepairResult {
30
+ /** The repaired map. Reference-equal to nothing — always a fresh object. */
31
+ nodes: Nodes;
32
+ findings: CanvasRepairFinding[];
33
+ /** Node ids dropped from the document. */
34
+ removed: string[];
35
+ /** Node ids that kept their content but moved. */
36
+ reparented: string[];
37
+ /** How many nodes the repair KEPT, root excluded. */
38
+ kept: number;
39
+ /** True when the document was already sound and `nodes` is unchanged. */
40
+ healthy: boolean;
41
+ }
42
+ export interface CanvasRepairOptions {
43
+ /**
44
+ * Whether a `componentId` still resolves to a registered component.
45
+ *
46
+ * OPTIONAL on purpose, and skipped entirely when absent. A resolver that
47
+ * has not finished loading its plugins answers "no" for everything, and a
48
+ * repair that believes it would delete the whole document — the same shape
49
+ * of mistake as a stubbed resolver making every capacity ceiling read zero.
50
+ * Pass it only from a caller that knows the registry is populated.
51
+ */
52
+ isKnownComponent?: (componentId: string) => boolean;
53
+ }
54
+ /**
55
+ * Strip what a canvas cannot render, keep everything that still works
56
+ * (AGL-2555).
57
+ *
58
+ * ## Why this exists rather than "clear and start again"
59
+ *
60
+ * A besigner document corrupted while `/alternatives/webflow` was being
61
+ * built: the hierarchy rendered literal `'Invalid node'` rows, section order
62
+ * scrambled, two component instances stopped resolving — and the damage
63
+ * survived a reload, so it was persisted in the draft rather than client
64
+ * state. **Most of the document was still fine.** The prose, the FAQ
65
+ * accordions and the layout binding all rendered correctly. Only some nodes
66
+ * were broken, and the only way out of it was to delete the screen and
67
+ * rebuild every one of them.
68
+ *
69
+ * That is the whole case: an author in this position should lose the handful
70
+ * of nodes that are actually broken, not the hours of work around them.
71
+ *
72
+ * ## What counts as broken
73
+ *
74
+ * Every case here is one the canvas already fails on somewhere, not a rule
75
+ * invented for this function:
76
+ *
77
+ * - **not-a-node** — `canvas-manager` throws `Invalid node` on a null or
78
+ * non-object entry.
79
+ * - **no-component** / **unknown-component** — nothing to render. The second
80
+ * is only checked when the caller supplies a resolver it trusts.
81
+ * - **dangling-child** — an id listed on a parent that the map does not
82
+ * hold. This is the one that renders `'Invalid node'`: `node-tree-view`
83
+ * maps over the parent's child ids and prints that string for every id
84
+ * that resolves to nothing. The PARENT is fine; the stale id is dropped.
85
+ * - **orphaned** — `parentId` names a node that is not in the map. Adopted
86
+ * by the root, which is the rule `ensureCanvasRoot` already established:
87
+ * recovering into an editable document beats discarding what is there.
88
+ * - **cycle** — a node that is its own ancestor. Walking `parent` upward is
89
+ * what the hierarchy and the breadcrumb both do, so a loop does not
90
+ * degrade the UI, it hangs the tab. A stored root that is its own parent
91
+ * is the shape this was measured in.
92
+ * - **unreachable** — in the map, but no walk from the root reaches it.
93
+ * These are invisible and still saved, still shipped, still counted
94
+ * against the 1 MiB ceiling — AGL-1363 found 61 of them on `/product`,
95
+ * 26 carrying the only copy of two Hero sections' text. So they are
96
+ * RE-PARENTED, never dropped: an author can see and delete a node that is
97
+ * on the canvas, and cannot do either to one that is not.
98
+ * - **unlisted** — `parentId` agrees, the parent's child list does not. The
99
+ * node is relisted rather than moved.
100
+ *
101
+ * ## What it will not do
102
+ *
103
+ * It removes nodes only for the first three, and every removal takes the
104
+ * subtree hanging off it — a child of an unrenderable node has nowhere to
105
+ * be. Everything else is a link repair that keeps the content, because a
106
+ * repair tool that deletes more than it has to is the corruption with
107
+ * better manners.
108
+ *
109
+ * ⚠️ Not an auto-heal. The result carries a full account of what it would
110
+ * do so a caller can put it in front of the author BEFORE anything is
111
+ * applied; a quiet repair that removes content is worse than the damage.
112
+ */
113
+ export declare function repairCanvasNodes(nodes: Nodes | undefined, options?: CanvasRepairOptions): CanvasRepairResult;
114
+ /**
115
+ * The document a newly created screen has: a root with nothing in it
116
+ * (AGL-2554).
117
+ *
118
+ * Built from `repairCanvasNodes` rather than `{}` so it works on the
119
+ * document that needs it most. Clearing is wanted precisely when the tree
120
+ * holds nodes the hierarchy cannot render — those rows are not selectable,
121
+ * so `Delete Element` cannot reach them and there is no click-path to empty
122
+ * the document at all. Running the repair first means the root that survives
123
+ * is a sound one whatever shape the map was in, including no root at all.
124
+ *
125
+ * The root's own fields are kept. It carries the document's own styling —
126
+ * background, padding, the page's own `sx` — and an author asking for a
127
+ * blank canvas is asking to remove the CONTENT, not to reset the page.
128
+ */
129
+ export declare function clearCanvasNodes(nodes: Nodes | undefined): Nodes;
130
+ export default repairCanvasNodes;
@@ -0,0 +1,298 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ /**
3
+ * @license
4
+ * Copyright 2026 Aglyn LLC
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */ import { CANVAS_ROOT_ELEMENT_ID } from "../foundation/constants/canvas.js";
18
+ import { ensureCanvasRoot } from "./ensure-canvas-root.js";
19
+ function labelOf(node) {
20
+ if (!node || typeof node !== 'object') return undefined;
21
+ const name = typeof node.name === 'string' ? node.name.trim() : '';
22
+ if (name) return name;
23
+ return typeof node.componentId === 'string' ? node.componentId : undefined;
24
+ }
25
+ /**
26
+ * Strip what a canvas cannot render, keep everything that still works
27
+ * (AGL-2555).
28
+ *
29
+ * ## Why this exists rather than "clear and start again"
30
+ *
31
+ * A besigner document corrupted while `/alternatives/webflow` was being
32
+ * built: the hierarchy rendered literal `'Invalid node'` rows, section order
33
+ * scrambled, two component instances stopped resolving — and the damage
34
+ * survived a reload, so it was persisted in the draft rather than client
35
+ * state. **Most of the document was still fine.** The prose, the FAQ
36
+ * accordions and the layout binding all rendered correctly. Only some nodes
37
+ * were broken, and the only way out of it was to delete the screen and
38
+ * rebuild every one of them.
39
+ *
40
+ * That is the whole case: an author in this position should lose the handful
41
+ * of nodes that are actually broken, not the hours of work around them.
42
+ *
43
+ * ## What counts as broken
44
+ *
45
+ * Every case here is one the canvas already fails on somewhere, not a rule
46
+ * invented for this function:
47
+ *
48
+ * - **not-a-node** — `canvas-manager` throws `Invalid node` on a null or
49
+ * non-object entry.
50
+ * - **no-component** / **unknown-component** — nothing to render. The second
51
+ * is only checked when the caller supplies a resolver it trusts.
52
+ * - **dangling-child** — an id listed on a parent that the map does not
53
+ * hold. This is the one that renders `'Invalid node'`: `node-tree-view`
54
+ * maps over the parent's child ids and prints that string for every id
55
+ * that resolves to nothing. The PARENT is fine; the stale id is dropped.
56
+ * - **orphaned** — `parentId` names a node that is not in the map. Adopted
57
+ * by the root, which is the rule `ensureCanvasRoot` already established:
58
+ * recovering into an editable document beats discarding what is there.
59
+ * - **cycle** — a node that is its own ancestor. Walking `parent` upward is
60
+ * what the hierarchy and the breadcrumb both do, so a loop does not
61
+ * degrade the UI, it hangs the tab. A stored root that is its own parent
62
+ * is the shape this was measured in.
63
+ * - **unreachable** — in the map, but no walk from the root reaches it.
64
+ * These are invisible and still saved, still shipped, still counted
65
+ * against the 1 MiB ceiling — AGL-1363 found 61 of them on `/product`,
66
+ * 26 carrying the only copy of two Hero sections' text. So they are
67
+ * RE-PARENTED, never dropped: an author can see and delete a node that is
68
+ * on the canvas, and cannot do either to one that is not.
69
+ * - **unlisted** — `parentId` agrees, the parent's child list does not. The
70
+ * node is relisted rather than moved.
71
+ *
72
+ * ## What it will not do
73
+ *
74
+ * It removes nodes only for the first three, and every removal takes the
75
+ * subtree hanging off it — a child of an unrenderable node has nowhere to
76
+ * be. Everything else is a link repair that keeps the content, because a
77
+ * repair tool that deletes more than it has to is the corruption with
78
+ * better manners.
79
+ *
80
+ * ⚠️ Not an auto-heal. The result carries a full account of what it would
81
+ * do so a caller can put it in front of the author BEFORE anything is
82
+ * applied; a quiet repair that removes content is worse than the damage.
83
+ */ export function repairCanvasNodes(nodes, options = {}) {
84
+ const { isKnownComponent } = options;
85
+ // A rootless map is its own defect, and it has an owner already. Doing it
86
+ // first means every walk below has a root to start from.
87
+ const source = ensureCanvasRoot(nodes);
88
+ const findings = [];
89
+ const removed = [];
90
+ const reparented = [];
91
+ // ── 1. Entries that are not renderable nodes ────────────────────────────
92
+ const map = {};
93
+ for (const [id, node] of Object.entries(source)){
94
+ if (!node || typeof node !== 'object') {
95
+ removed.push(id);
96
+ findings.push({
97
+ nodeId: id,
98
+ kind: 'not-a-node',
99
+ action: 'removed',
100
+ detail: 'Not an element — the canvas cannot render this entry.'
101
+ });
102
+ continue;
103
+ }
104
+ if (id !== CANVAS_ROOT_ELEMENT_ID) {
105
+ const componentId = node.componentId;
106
+ if (typeof componentId !== 'string' || !componentId) {
107
+ removed.push(id);
108
+ findings.push({
109
+ nodeId: id,
110
+ label: labelOf(node),
111
+ kind: 'no-component',
112
+ action: 'removed',
113
+ detail: 'No element type — there is nothing to draw.'
114
+ });
115
+ continue;
116
+ }
117
+ if (isKnownComponent && !isKnownComponent(componentId)) {
118
+ removed.push(id);
119
+ findings.push({
120
+ nodeId: id,
121
+ label: labelOf(node),
122
+ kind: 'unknown-component',
123
+ action: 'removed',
124
+ detail: `"${componentId}" is not an element this site has — it may come from a plugin that is switched off.`
125
+ });
126
+ continue;
127
+ }
128
+ }
129
+ map[id] = _extends({}, node, {
130
+ nodes: Array.isArray(node.nodes) ? [
131
+ ...node.nodes
132
+ ] : []
133
+ });
134
+ }
135
+ // A removed node takes its subtree: a child of something unrenderable has
136
+ // nowhere to be, and re-parenting it to the root would strand a fragment
137
+ // the author never authored at the top of the document.
138
+ let grew = true;
139
+ while(grew){
140
+ grew = false;
141
+ for (const [id, node] of Object.entries(map)){
142
+ if (id === CANVAS_ROOT_ELEMENT_ID) continue;
143
+ const parentId = node.parentId;
144
+ if (typeof parentId === 'string' && removed.includes(parentId)) {
145
+ delete map[id];
146
+ removed.push(id);
147
+ findings.push({
148
+ nodeId: id,
149
+ label: labelOf(node),
150
+ kind: 'not-a-node',
151
+ action: 'removed',
152
+ detail: 'Sat inside an element that had to be removed.'
153
+ });
154
+ grew = true;
155
+ }
156
+ }
157
+ }
158
+ // ── 2. Child ids that resolve to nothing — the 'Invalid node' rows ──────
159
+ for (const [id, node] of Object.entries(map)){
160
+ const kept = [];
161
+ for (const childId of node.nodes){
162
+ var _labelOf;
163
+ if (typeof childId === 'string' && map[childId]) {
164
+ kept.push(childId);
165
+ continue;
166
+ }
167
+ findings.push({
168
+ nodeId: typeof childId === 'string' ? childId : String(childId),
169
+ kind: 'dangling-child',
170
+ action: 'unlinked',
171
+ detail: `Listed inside "${(_labelOf = labelOf(node)) != null ? _labelOf : id}" but not present — this is what shows as "Invalid node".`
172
+ });
173
+ }
174
+ node.nodes = kept;
175
+ }
176
+ // ── 3. Parents that do not exist, and loops ─────────────────────────────
177
+ const adopt = (id, kind, detail)=>{
178
+ const node = map[id];
179
+ const previous = node.parentId;
180
+ node.parentId = CANVAS_ROOT_ELEMENT_ID;
181
+ if (typeof previous === 'string' && map[previous]) {
182
+ map[previous].nodes = map[previous].nodes.filter((child)=>child !== id);
183
+ }
184
+ if (!map[CANVAS_ROOT_ELEMENT_ID].nodes.includes(id)) {
185
+ ;
186
+ map[CANVAS_ROOT_ELEMENT_ID].nodes.push(id);
187
+ }
188
+ reparented.push(id);
189
+ findings.push({
190
+ nodeId: id,
191
+ label: labelOf(node),
192
+ kind,
193
+ action: 'reparented',
194
+ detail
195
+ });
196
+ };
197
+ for (const id of Object.keys(map)){
198
+ if (id === CANVAS_ROOT_ELEMENT_ID) continue;
199
+ const parentId = map[id].parentId;
200
+ if (typeof parentId !== 'string' || !map[parentId]) {
201
+ adopt(id, 'orphaned', 'Its container is gone — moved to the top level so you can put it back.');
202
+ }
203
+ }
204
+ for (const id of Object.keys(map)){
205
+ if (id === CANVAS_ROOT_ELEMENT_ID) continue;
206
+ // Bounded by the map size, so a loop ends rather than hanging the way
207
+ // the hierarchy's own upward walk does.
208
+ const seen = new Set([
209
+ id
210
+ ]);
211
+ let cursor = map[id].parentId;
212
+ let looped = false;
213
+ while(typeof cursor === 'string' && map[cursor]){
214
+ if (seen.has(cursor)) {
215
+ looped = true;
216
+ break;
217
+ }
218
+ seen.add(cursor);
219
+ if (cursor === CANVAS_ROOT_ELEMENT_ID) break;
220
+ cursor = map[cursor].parentId;
221
+ }
222
+ if (looped) {
223
+ adopt(id, 'cycle', 'Was inside itself — a loop the hierarchy cannot walk out of. Moved to the top level.');
224
+ }
225
+ }
226
+ // ── 4. Reachability, and links that disagree with themselves ───────────
227
+ for (const id of Object.keys(map)){
228
+ if (id === CANVAS_ROOT_ELEMENT_ID) continue;
229
+ const parent = map[map[id].parentId];
230
+ if (!parent) continue;
231
+ if (!parent.nodes.includes(id)) {
232
+ var _labelOf1;
233
+ ;
234
+ parent.nodes.push(id);
235
+ findings.push({
236
+ nodeId: id,
237
+ label: labelOf(map[id]),
238
+ kind: 'unlisted',
239
+ action: 'relisted',
240
+ detail: `Belonged to "${(_labelOf1 = labelOf(parent)) != null ? _labelOf1 : map[id].parentId}" but was not listed in it — put back in place.`
241
+ });
242
+ }
243
+ }
244
+ const reachable = new Set();
245
+ const queue = [
246
+ CANVAS_ROOT_ELEMENT_ID
247
+ ];
248
+ while(queue.length){
249
+ var _ref;
250
+ var _map_id;
251
+ const id = queue.shift();
252
+ if (reachable.has(id)) continue;
253
+ reachable.add(id);
254
+ for (const childId of (_ref = (_map_id = map[id]) == null ? void 0 : _map_id.nodes) != null ? _ref : []){
255
+ if (map[childId]) queue.push(childId);
256
+ }
257
+ }
258
+ for (const id of Object.keys(map)){
259
+ if (reachable.has(id)) continue;
260
+ adopt(id, 'unreachable', 'Saved with the document but never drawn — moved to the top level so you can see it and decide.');
261
+ }
262
+ const kept = Object.keys(map).length - 1;
263
+ return {
264
+ nodes: map,
265
+ findings,
266
+ removed,
267
+ reparented,
268
+ kept,
269
+ healthy: findings.length === 0
270
+ };
271
+ }
272
+ /**
273
+ * The document a newly created screen has: a root with nothing in it
274
+ * (AGL-2554).
275
+ *
276
+ * Built from `repairCanvasNodes` rather than `{}` so it works on the
277
+ * document that needs it most. Clearing is wanted precisely when the tree
278
+ * holds nodes the hierarchy cannot render — those rows are not selectable,
279
+ * so `Delete Element` cannot reach them and there is no click-path to empty
280
+ * the document at all. Running the repair first means the root that survives
281
+ * is a sound one whatever shape the map was in, including no root at all.
282
+ *
283
+ * The root's own fields are kept. It carries the document's own styling —
284
+ * background, padding, the page's own `sx` — and an author asking for a
285
+ * blank canvas is asking to remove the CONTENT, not to reset the page.
286
+ */ export function clearCanvasNodes(nodes) {
287
+ const { nodes: repaired } = repairCanvasNodes(nodes);
288
+ return {
289
+ [CANVAS_ROOT_ELEMENT_ID]: _extends({}, repaired[CANVAS_ROOT_ELEMENT_ID], {
290
+ $id: CANVAS_ROOT_ELEMENT_ID,
291
+ parentId: null,
292
+ nodes: []
293
+ })
294
+ };
295
+ }
296
+ export default repairCanvasNodes;
297
+
298
+ //# sourceMappingURL=repair-canvas-nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/repair-canvas-nodes.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CANVAS_ROOT_ELEMENT_ID } from '../foundation/constants/canvas'\nimport { ensureCanvasRoot } from './ensure-canvas-root'\n\ntype Nodes = Record<string, any>\n\n/** What was wrong with one node, and what was done about it. */\nexport interface CanvasRepairFinding {\n /** The node the finding is about — a map key, or an id listed on a parent. */\n nodeId: string\n /** Best available human label: the node's name, else its componentId. */\n label?: string\n kind:\n | 'not-a-node'\n | 'no-component'\n | 'unknown-component'\n | 'dangling-child'\n | 'orphaned'\n | 'cycle'\n | 'unreachable'\n | 'unlisted'\n action: 'removed' | 'reparented' | 'relisted' | 'unlinked'\n /** One sentence an author can read, written for the preview dialog. */\n detail: string\n}\n\nexport interface CanvasRepairResult {\n /** The repaired map. Reference-equal to nothing — always a fresh object. */\n nodes: Nodes\n findings: CanvasRepairFinding[]\n /** Node ids dropped from the document. */\n removed: string[]\n /** Node ids that kept their content but moved. */\n reparented: string[]\n /** How many nodes the repair KEPT, root excluded. */\n kept: number\n /** True when the document was already sound and `nodes` is unchanged. */\n healthy: boolean\n}\n\nexport interface CanvasRepairOptions {\n /**\n * Whether a `componentId` still resolves to a registered component.\n *\n * OPTIONAL on purpose, and skipped entirely when absent. A resolver that\n * has not finished loading its plugins answers \"no\" for everything, and a\n * repair that believes it would delete the whole document — the same shape\n * of mistake as a stubbed resolver making every capacity ceiling read zero.\n * Pass it only from a caller that knows the registry is populated.\n */\n isKnownComponent?: (componentId: string) => boolean\n}\n\nfunction labelOf(node: any): string | undefined {\n if (!node || typeof node !== 'object') return undefined\n const name = typeof node.name === 'string' ? node.name.trim() : ''\n if (name) return name\n return typeof node.componentId === 'string' ? node.componentId : undefined\n}\n\n/**\n * Strip what a canvas cannot render, keep everything that still works\n * (AGL-2555).\n *\n * ## Why this exists rather than \"clear and start again\"\n *\n * A besigner document corrupted while `/alternatives/webflow` was being\n * built: the hierarchy rendered literal `'Invalid node'` rows, section order\n * scrambled, two component instances stopped resolving — and the damage\n * survived a reload, so it was persisted in the draft rather than client\n * state. **Most of the document was still fine.** The prose, the FAQ\n * accordions and the layout binding all rendered correctly. Only some nodes\n * were broken, and the only way out of it was to delete the screen and\n * rebuild every one of them.\n *\n * That is the whole case: an author in this position should lose the handful\n * of nodes that are actually broken, not the hours of work around them.\n *\n * ## What counts as broken\n *\n * Every case here is one the canvas already fails on somewhere, not a rule\n * invented for this function:\n *\n * - **not-a-node** — `canvas-manager` throws `Invalid node` on a null or\n * non-object entry.\n * - **no-component** / **unknown-component** — nothing to render. The second\n * is only checked when the caller supplies a resolver it trusts.\n * - **dangling-child** — an id listed on a parent that the map does not\n * hold. This is the one that renders `'Invalid node'`: `node-tree-view`\n * maps over the parent's child ids and prints that string for every id\n * that resolves to nothing. The PARENT is fine; the stale id is dropped.\n * - **orphaned** — `parentId` names a node that is not in the map. Adopted\n * by the root, which is the rule `ensureCanvasRoot` already established:\n * recovering into an editable document beats discarding what is there.\n * - **cycle** — a node that is its own ancestor. Walking `parent` upward is\n * what the hierarchy and the breadcrumb both do, so a loop does not\n * degrade the UI, it hangs the tab. A stored root that is its own parent\n * is the shape this was measured in.\n * - **unreachable** — in the map, but no walk from the root reaches it.\n * These are invisible and still saved, still shipped, still counted\n * against the 1 MiB ceiling — AGL-1363 found 61 of them on `/product`,\n * 26 carrying the only copy of two Hero sections' text. So they are\n * RE-PARENTED, never dropped: an author can see and delete a node that is\n * on the canvas, and cannot do either to one that is not.\n * - **unlisted** — `parentId` agrees, the parent's child list does not. The\n * node is relisted rather than moved.\n *\n * ## What it will not do\n *\n * It removes nodes only for the first three, and every removal takes the\n * subtree hanging off it — a child of an unrenderable node has nowhere to\n * be. Everything else is a link repair that keeps the content, because a\n * repair tool that deletes more than it has to is the corruption with\n * better manners.\n *\n * ⚠️ Not an auto-heal. The result carries a full account of what it would\n * do so a caller can put it in front of the author BEFORE anything is\n * applied; a quiet repair that removes content is worse than the damage.\n */\nexport function repairCanvasNodes(\n nodes: Nodes | undefined,\n options: CanvasRepairOptions = {},\n): CanvasRepairResult {\n const { isKnownComponent } = options\n // A rootless map is its own defect, and it has an owner already. Doing it\n // first means every walk below has a root to start from.\n const source = ensureCanvasRoot(nodes)\n const findings: CanvasRepairFinding[] = []\n const removed: string[] = []\n const reparented: string[] = []\n\n // ── 1. Entries that are not renderable nodes ────────────────────────────\n const map: Nodes = {}\n for (const [id, node] of Object.entries(source)) {\n if (!node || typeof node !== 'object') {\n removed.push(id)\n findings.push({\n nodeId: id,\n kind: 'not-a-node',\n action: 'removed',\n detail: 'Not an element — the canvas cannot render this entry.',\n })\n continue\n }\n if (id !== CANVAS_ROOT_ELEMENT_ID) {\n const componentId = node.componentId\n if (typeof componentId !== 'string' || !componentId) {\n removed.push(id)\n findings.push({\n nodeId: id,\n label: labelOf(node),\n kind: 'no-component',\n action: 'removed',\n detail: 'No element type — there is nothing to draw.',\n })\n continue\n }\n if (isKnownComponent && !isKnownComponent(componentId)) {\n removed.push(id)\n findings.push({\n nodeId: id,\n label: labelOf(node),\n kind: 'unknown-component',\n action: 'removed',\n detail: `\"${componentId}\" is not an element this site has — it may come from a plugin that is switched off.`,\n })\n continue\n }\n }\n map[id] = { ...node, nodes: Array.isArray(node.nodes) ? [...node.nodes] : [] }\n }\n\n // A removed node takes its subtree: a child of something unrenderable has\n // nowhere to be, and re-parenting it to the root would strand a fragment\n // the author never authored at the top of the document.\n let grew = true\n while (grew) {\n grew = false\n for (const [id, node] of Object.entries(map)) {\n if (id === CANVAS_ROOT_ELEMENT_ID) continue\n const parentId = node.parentId\n if (typeof parentId === 'string' && removed.includes(parentId)) {\n delete map[id]\n removed.push(id)\n findings.push({\n nodeId: id,\n label: labelOf(node),\n kind: 'not-a-node',\n action: 'removed',\n detail: 'Sat inside an element that had to be removed.',\n })\n grew = true\n }\n }\n }\n\n // ── 2. Child ids that resolve to nothing — the 'Invalid node' rows ──────\n for (const [id, node] of Object.entries(map)) {\n const kept: string[] = []\n for (const childId of node.nodes as string[]) {\n if (typeof childId === 'string' && map[childId]) {\n kept.push(childId)\n continue\n }\n findings.push({\n nodeId: typeof childId === 'string' ? childId : String(childId),\n kind: 'dangling-child',\n action: 'unlinked',\n detail: `Listed inside \"${labelOf(node) ?? id}\" but not present — this is what shows as \"Invalid node\".`,\n })\n }\n node.nodes = kept\n }\n\n // ── 3. Parents that do not exist, and loops ─────────────────────────────\n const adopt = (\n id: string,\n kind: CanvasRepairFinding['kind'],\n detail: string,\n ) => {\n const node = map[id]\n const previous = node.parentId\n node.parentId = CANVAS_ROOT_ELEMENT_ID\n if (typeof previous === 'string' && map[previous]) {\n map[previous].nodes = (map[previous].nodes as string[]).filter(\n (child) => child !== id,\n )\n }\n if (!(map[CANVAS_ROOT_ELEMENT_ID].nodes as string[]).includes(id)) {\n ;(map[CANVAS_ROOT_ELEMENT_ID].nodes as string[]).push(id)\n }\n reparented.push(id)\n findings.push({ nodeId: id, label: labelOf(node), kind, action: 'reparented', detail })\n }\n\n for (const id of Object.keys(map)) {\n if (id === CANVAS_ROOT_ELEMENT_ID) continue\n const parentId = map[id].parentId\n if (typeof parentId !== 'string' || !map[parentId]) {\n adopt(\n id,\n 'orphaned',\n 'Its container is gone — moved to the top level so you can put it back.',\n )\n }\n }\n\n for (const id of Object.keys(map)) {\n if (id === CANVAS_ROOT_ELEMENT_ID) continue\n // Bounded by the map size, so a loop ends rather than hanging the way\n // the hierarchy's own upward walk does.\n const seen = new Set<string>([id])\n let cursor: string | undefined = map[id].parentId\n let looped = false\n while (typeof cursor === 'string' && map[cursor]) {\n if (seen.has(cursor)) {\n looped = true\n break\n }\n seen.add(cursor)\n if (cursor === CANVAS_ROOT_ELEMENT_ID) break\n cursor = map[cursor].parentId\n }\n if (looped) {\n adopt(\n id,\n 'cycle',\n 'Was inside itself — a loop the hierarchy cannot walk out of. Moved to the top level.',\n )\n }\n }\n\n // ── 4. Reachability, and links that disagree with themselves ───────────\n for (const id of Object.keys(map)) {\n if (id === CANVAS_ROOT_ELEMENT_ID) continue\n const parent = map[map[id].parentId]\n if (!parent) continue\n if (!(parent.nodes as string[]).includes(id)) {\n ;(parent.nodes as string[]).push(id)\n findings.push({\n nodeId: id,\n label: labelOf(map[id]),\n kind: 'unlisted',\n action: 'relisted',\n detail: `Belonged to \"${labelOf(parent) ?? map[id].parentId}\" but was not listed in it — put back in place.`,\n })\n }\n }\n\n const reachable = new Set<string>()\n const queue = [CANVAS_ROOT_ELEMENT_ID]\n while (queue.length) {\n const id = queue.shift()!\n if (reachable.has(id)) continue\n reachable.add(id)\n for (const childId of map[id]?.nodes ?? []) {\n if (map[childId]) queue.push(childId)\n }\n }\n for (const id of Object.keys(map)) {\n if (reachable.has(id)) continue\n adopt(\n id,\n 'unreachable',\n 'Saved with the document but never drawn — moved to the top level so you can see it and decide.',\n )\n }\n\n const kept = Object.keys(map).length - 1\n return {\n nodes: map,\n findings,\n removed,\n reparented,\n kept,\n healthy: findings.length === 0,\n }\n}\n\n/**\n * The document a newly created screen has: a root with nothing in it\n * (AGL-2554).\n *\n * Built from `repairCanvasNodes` rather than `{}` so it works on the\n * document that needs it most. Clearing is wanted precisely when the tree\n * holds nodes the hierarchy cannot render — those rows are not selectable,\n * so `Delete Element` cannot reach them and there is no click-path to empty\n * the document at all. Running the repair first means the root that survives\n * is a sound one whatever shape the map was in, including no root at all.\n *\n * The root's own fields are kept. It carries the document's own styling —\n * background, padding, the page's own `sx` — and an author asking for a\n * blank canvas is asking to remove the CONTENT, not to reset the page.\n */\nexport function clearCanvasNodes(nodes: Nodes | undefined): Nodes {\n const { nodes: repaired } = repairCanvasNodes(nodes)\n return {\n [CANVAS_ROOT_ELEMENT_ID]: {\n ...repaired[CANVAS_ROOT_ELEMENT_ID],\n $id: CANVAS_ROOT_ELEMENT_ID,\n parentId: null,\n nodes: [],\n },\n }\n}\n\nexport default repairCanvasNodes\n"],"names":["CANVAS_ROOT_ELEMENT_ID","ensureCanvasRoot","labelOf","node","undefined","name","trim","componentId","repairCanvasNodes","nodes","options","isKnownComponent","source","findings","removed","reparented","map","id","Object","entries","push","nodeId","kind","action","detail","label","Array","isArray","grew","parentId","includes","kept","childId","String","adopt","previous","filter","child","keys","seen","Set","cursor","looped","has","add","parent","reachable","queue","length","shift","healthy","clearCanvasNodes","repaired","$id"],"mappings":"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"}
@@ -0,0 +1,166 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * REPEAT-INFRINGER POLICY — the §512(i) condition, with a counter behind it
19
+ * (AGL-1983).
20
+ *
21
+ * §512(i)(1)(A) conditions the ENTIRE safe harbour — every limitation in
22
+ * §512, not just the hosting one — on a provider having "adopted and
23
+ * reasonably implemented" a policy for terminating repeat infringers, and on
24
+ * informing subscribers of it. This is the condition providers most often
25
+ * lose on, and they lose on the second half: courts have declined to credit a
26
+ * policy that existed as prose while nothing in the product counted anything.
27
+ * A policy page alone would not close AGL-1983 and the issue says so.
28
+ *
29
+ * So this module is the counting. It answers three questions and nothing else:
30
+ * what is a strike, when does one go away, and what happens at the threshold.
31
+ *
32
+ * ## A strike is an ACTIONED notice, counted against the ACCOUNT
33
+ *
34
+ * Not a received notice — anyone can send one, and counting receipts would
35
+ * let a competitor terminate a customer by filing three complaints. A strike
36
+ * is recorded when staff action a DMCA report: the point at which a human
37
+ * looked and took content down.
38
+ *
39
+ * Counted against the **org**, not the site. A repeat infringer who loses one
40
+ * site and opens another inside the same workspace has not been terminated in
41
+ * any sense the statute would recognise, and the org is the account we bill,
42
+ * suspend and close. {@link STRIKE_LEDGER_SUBCOLLECTION} therefore hangs off
43
+ * `orgs/{orgId}`.
44
+ *
45
+ * ## A strike is keyed by its report, which is what makes withdrawal work
46
+ *
47
+ * One ledger document per actioned report, with the report's id AS the
48
+ * document id. Two properties fall out of that and both are load-bearing:
49
+ *
50
+ * - **Idempotence.** Staff re-actioning a report they already actioned — or
51
+ * a route retried — cannot inflate the count. A counter that can be pumped
52
+ * by clicking twice is not one anybody should terminate an account on.
53
+ * - **Exact withdrawal.** When a notice is withdrawn, or a counter-notice
54
+ * leads to a restoration, the strike it created has to come off — and only
55
+ * that one. §512(g) restoration means the takedown is being reversed; a
56
+ * strike surviving it would count an infringement the process just
57
+ * declined to affirm, which is the shape of unfairness that makes a policy
58
+ * look unreasonable rather than reasonable. Deleting by report id removes
59
+ * exactly the right strike without recomputing anything.
60
+ *
61
+ * {@link strikeWithdrawalReason} names the three ways a strike comes off, so
62
+ * the ledger records WHY rather than silently shrinking.
63
+ *
64
+ * ## The threshold has to do something
65
+ *
66
+ * "Reasonably implemented" is the whole fight, so the escalation is defined
67
+ * here as data rather than left to whoever reads the queue:
68
+ * {@link repeatInfringerVerdict} maps a count onto a level, and each level
69
+ * names the consequence in terms of levers this product actually has. At
70
+ * `terminate` the staff queue refuses to close a DMCA report without an
71
+ * explicit recorded decision — see the admin route — so the threshold cannot
72
+ * be passed silently. That refusal is the difference between a counter and a
73
+ * policy.
74
+ *
75
+ * What this module deliberately does NOT do is suspend anything by itself. An
76
+ * automatic termination on a third strike would be a product that closes a
77
+ * paying customer's account on three unverified assertions by strangers, with
78
+ * no human in the loop — and §512 nowhere asks for that. The policy is
79
+ * "terminate in appropriate circumstances", and judging the circumstances is
80
+ * exactly the part a person must do. The counter makes the decision
81
+ * unavoidable and recorded; it does not make it automatically.
82
+ */
83
+ /** Per-org strike ledger. One document per actioned DMCA report. */
84
+ export declare const STRIKE_LEDGER_SUBCOLLECTION = "dmcaStrikes";
85
+ /**
86
+ * Strikes at which each consequence begins.
87
+ *
88
+ * Three is the termination threshold, which is the number the phrase "repeat
89
+ * infringer" is conventionally read against and the number the operator's own
90
+ * published repeat-infringer policy has to state — §512(i)(1)(A) conditions the
91
+ * whole safe harbour on subscribers having been *informed* of the policy, so a
92
+ * threshold this ledger enforces silently earns nothing (AGL-2044, AGL-2007).
93
+ * On a self-host install that policy is the operator's document, not ours: they
94
+ * inherit a working ledger and owe their own text. The two below it exist so
95
+ * termination is never the first
96
+ * thing a customer hears about a problem: a subscriber who does not know they
97
+ * are on a strike cannot correct their behaviour, and a policy that only
98
+ * speaks at the end is one a court can call unreasonable in its
99
+ * implementation.
100
+ */
101
+ export declare const STRIKE_WARN_AT = 1;
102
+ export declare const STRIKE_FINAL_AT = 2;
103
+ export declare const STRIKE_TERMINATE_AT = 3;
104
+ export type RepeatInfringerLevel = 'none' | 'warn' | 'final' | 'terminate';
105
+ export interface RepeatInfringerVerdict {
106
+ /** Strikes currently standing against the account. */
107
+ strikes: number;
108
+ level: RepeatInfringerLevel;
109
+ /**
110
+ * Does the account-level consequence require a recorded human decision
111
+ * before any further DMCA report on this org can be closed?
112
+ */
113
+ decisionRequired: boolean;
114
+ /** One line naming the consequence, shown to staff and quoted to the org. */
115
+ consequence: string;
116
+ }
117
+ /**
118
+ * Strikes → verdict.
119
+ *
120
+ * A pure function of the count, so the staff surface, the admin route and the
121
+ * docs cannot disagree about where the line is. Anything at or above
122
+ * {@link STRIKE_TERMINATE_AT} is `terminate`, including a count that somehow
123
+ * ran past it — a fourth strike must not read as less serious than the third.
124
+ */
125
+ export declare function repeatInfringerVerdict(strikes: unknown): RepeatInfringerVerdict;
126
+ /** Why a strike came off the ledger. Recorded, never silent. */
127
+ export declare const STRIKE_WITHDRAWAL_REASONS: readonly ["noticeWithdrawn", "counterNoticeRestored", "staffReversed"];
128
+ export type StrikeWithdrawalReason = (typeof STRIKE_WITHDRAWAL_REASONS)[number];
129
+ export declare function isStrikeWithdrawalReason(value: unknown): value is StrikeWithdrawalReason;
130
+ /**
131
+ * Does moving a DMCA report to `status` earn a strike?
132
+ *
133
+ * `actioned` only. `dismissed` is staff saying the notice did not hold up, so
134
+ * it must not count — and neither must `open` or `reviewing`, which are a
135
+ * report nobody has adjudicated yet. Counting anything but `actioned` would
136
+ * make the ledger a record of accusations rather than of upheld ones.
137
+ *
138
+ * The category gate matters as much as the status: the queue carries phishing
139
+ * and malware reports too, and a phishing takedown is not a copyright
140
+ * infringement. §512(i) is about infringement, so only `dmca` reports reach
141
+ * the ledger.
142
+ */
143
+ export declare function strikeEarnedBy(category: unknown, status: unknown): boolean;
144
+ /**
145
+ * Does moving a DMCA report to `status` REMOVE a strike it previously earned?
146
+ *
147
+ * The mirror of {@link strikeEarnedBy}, and the reason the pair is written as
148
+ * two functions rather than one: a report that goes `actioned` → `dismissed`
149
+ * has to give its strike back, and a naive "recount the actioned ones"
150
+ * implementation would get that right by accident while getting the
151
+ * counter-notice case wrong, because a restored counter-notice leaves the
152
+ * report `actioned` and reverses it by a different route.
153
+ */
154
+ export declare function strikeRemovedBy(category: unknown, status: unknown): boolean;
155
+ /**
156
+ * Count the strikes standing, given ledger rows.
157
+ *
158
+ * Rows carry a `withdrawnAt` when they have been reversed rather than being
159
+ * deleted, so the ledger stays a complete history — "did we know, and when"
160
+ * is the question the abuse queue exists to answer, and a strike that was
161
+ * lifted is part of that answer. Only rows without one count.
162
+ */
163
+ export declare function countStandingStrikes(rows: readonly {
164
+ withdrawnAt?: unknown;
165
+ }[] | null | undefined): number;
166
+ export default repeatInfringerVerdict;