@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,529 @@
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
+ * No-code functions (Component Builder, AGL-92): the mockup's Edit Function
18
+ * model — parameters, local variables, conditional SET operations, and a
19
+ * return value — plus a small, safe expression evaluator. No eval(), no
20
+ * loops, bounded operation count; expressions only reference declared
21
+ * names, numeric/string/boolean literals, + - * / ( ), and the fixed table
22
+ * of built-ins below.
23
+ *
24
+ * WHAT A REAL CALCULATOR NEEDED (AGL-3202). The first page built on this — a
25
+ * cost sheet comparing five platforms — could compute its static table and
26
+ * could not carry its interactive half, for three reasons that live here:
27
+ *
28
+ * - No `min`, no rounding, no number formatting. "Cheapest of three plans"
29
+ * took three compares, a per-site cost could not be shown at all, and
30
+ * "$1,396" was built by peeling thousands off with a ladder of six
31
+ * compares. {@link BUILTINS} closes that: a FIXED table, called as
32
+ * `name(args)`. Nothing a site author writes can add to it, so the
33
+ * evaluator's promise — no eval, no loops, bounded — is unchanged.
34
+ * - A function could not read a site variable, so a widget's function had
35
+ * to repeat every price as a literal. `globals` on
36
+ * {@link EvaluateFunctionOptions} is that outer scope: readable, never
37
+ * settable, and shadowed by a parameter or local of the same name.
38
+ * - A parameter was a bare identifier and a type. It may now carry what a
39
+ * visitor should see and start with: `label`, `options`, `defaultValue`.
40
+ */ /**
41
+ * A choice list as ONE line of text (AGL-3202):
42
+ * `cms: A CMS and room to grow, entry: The entry plan only`. A bare entry is
43
+ * both the value and what the visitor reads.
44
+ *
45
+ * One line, not a nested editor, because every surface that asks for choices
46
+ * already asks for several other things in the same row. The cost is that a
47
+ * value cannot itself contain a comma, and a label cannot either; a choice
48
+ * that needs one is a sign the question wants rewording.
49
+ *
50
+ * In core because two plugins read it — the function builder that stores a
51
+ * parameter's choices and the canvas element that offers its own — and a
52
+ * plugin may not import another.
53
+ */ export function parseFunctionParameterOptions(text) {
54
+ const options = [];
55
+ const seen = new Set();
56
+ for (const part of String(text != null ? text : '').split(',')){
57
+ const colon = part.indexOf(':');
58
+ const value = (colon < 0 ? part : part.slice(0, colon)).trim();
59
+ // The second copy of a value is a typo, not a second choice: a select
60
+ // with two identical values cannot tell the function which was picked.
61
+ if (!value || seen.has(value)) continue;
62
+ seen.add(value);
63
+ const label = colon < 0 ? '' : part.slice(colon + 1).trim();
64
+ options.push(label && label !== value ? {
65
+ value,
66
+ label
67
+ } : {
68
+ value
69
+ });
70
+ }
71
+ return options;
72
+ }
73
+ /** The inverse, for showing a stored list in that one line. */ export function formatFunctionParameterOptions(options) {
74
+ return (options != null ? options : []).map((option)=>option.label && option.label !== option.value ? `${option.value}: ${option.label}` : option.value).join(', ');
75
+ }
76
+ /**
77
+ * How many SETs one run may apply. A BOUND, not a budget anyone is meant to
78
+ * approach: there are no loops, so a run applies at most one SET per SET
79
+ * written, and this is what stops a definition pasted in by the thousand.
80
+ *
81
+ * It was 100, sized for "if P1 <= P2 then P3 = P1 + P2". The first pricing
82
+ * calculator built on site functions — six plans, a line per meter, a row per
83
+ * competitor — applies about 150 (AGL-3202). Each SET is one short expression
84
+ * over a flat scope, so a thousand of them is still well under a millisecond.
85
+ */ export const FUNCTION_MAX_OPERATIONS = 1000;
86
+ function tokenize(text) {
87
+ const tokens = [];
88
+ let index = 0;
89
+ while(index < text.length){
90
+ const char = text[index];
91
+ if (/\s/.test(char)) {
92
+ index += 1;
93
+ } else if ('+-*/'.includes(char)) {
94
+ tokens.push({
95
+ kind: 'op',
96
+ value: char
97
+ });
98
+ index += 1;
99
+ } else if (char === '(') {
100
+ tokens.push({
101
+ kind: 'lparen'
102
+ });
103
+ index += 1;
104
+ } else if (char === ')') {
105
+ tokens.push({
106
+ kind: 'rparen'
107
+ });
108
+ index += 1;
109
+ } else if (char === ',') {
110
+ // Only meaningful between a built-in's arguments; anywhere else the
111
+ // parser reports it as trailing input.
112
+ tokens.push({
113
+ kind: 'comma'
114
+ });
115
+ index += 1;
116
+ } else if (char === "'" || char === '"') {
117
+ const end = text.indexOf(char, index + 1);
118
+ if (end < 0) throw new Error('Unterminated string');
119
+ tokens.push({
120
+ kind: 'string',
121
+ value: text.slice(index + 1, end)
122
+ });
123
+ index = end + 1;
124
+ } else if (/[0-9.]/.test(char)) {
125
+ const match = /^[0-9]*\.?[0-9]+/.exec(text.slice(index));
126
+ if (!match) throw new Error(`Bad number at "${text.slice(index)}"`);
127
+ tokens.push({
128
+ kind: 'number',
129
+ value: Number(match[0])
130
+ });
131
+ index += match[0].length;
132
+ } else if (/[a-zA-Z_]/.test(char)) {
133
+ // A dotted path is ONE name: `plan_pro.annual` reads a member of a
134
+ // dictionary (AGL-3202). A number never starts here, so `1.5` is not
135
+ // at risk, and a trailing dot is left for the parser to refuse.
136
+ const match = /^[a-zA-Z_][a-zA-Z0-9_]*(?:\.[a-zA-Z_][a-zA-Z0-9_]*)*/.exec(text.slice(index));
137
+ const word = match[0];
138
+ if (word === 'true' || word === 'false') {
139
+ tokens.push({
140
+ kind: 'boolean',
141
+ value: word === 'true'
142
+ });
143
+ } else {
144
+ tokens.push({
145
+ kind: 'ident',
146
+ value: word
147
+ });
148
+ }
149
+ index += word.length;
150
+ } else {
151
+ throw new Error(`Unexpected character "${char}"`);
152
+ }
153
+ }
154
+ return tokens;
155
+ }
156
+ /** More arguments than any built-in can use; a typo, not a calculation. */ const MAX_CALL_ARGUMENTS = 16;
157
+ /** Decimal places `round` and `format` accept. */ const MAX_DIGITS = 10;
158
+ function digitsOf(value) {
159
+ if (value === undefined) return 0;
160
+ const digits = Math.trunc(toNumber(value));
161
+ if (digits < 0 || digits > MAX_DIGITS) {
162
+ throw new Error(`Decimal places must be between 0 and ${MAX_DIGITS}`);
163
+ }
164
+ return digits;
165
+ }
166
+ /**
167
+ * Half away from zero, on the DECIMAL value. The exponent form is what makes
168
+ * `round(1.005, 2)` answer 1.01: multiplying by 100 first gives
169
+ * 100.49999999999999 and rounds it down.
170
+ */ function roundTo(value, digits) {
171
+ const magnitude = Number(`${Math.round(Number(`${Math.abs(value)}e${digits}`))}e-${digits}`);
172
+ return value < 0 ? -magnitude : magnitude;
173
+ }
174
+ function arity(name, args, least, most) {
175
+ if (args.length < least || args.length > most) {
176
+ const wanted = least === most ? `${least}` : `${least} to ${most}`;
177
+ throw new Error(`${name}() takes ${wanted} argument(s)`);
178
+ }
179
+ }
180
+ /**
181
+ * THE WHOLE TABLE, and it is closed. A site author calls these; nothing they
182
+ * write can add one, and none of them loops, allocates by input size or
183
+ * reaches outside its arguments.
184
+ *
185
+ * `format` is pinned to `en-US` on purpose. The same function runs on the
186
+ * server for a `{{fn:…}}` token and in a visitor's browser for a widget, and
187
+ * the machine's own locale would make those two disagree about "1,396".
188
+ */ const BUILTINS = {
189
+ min: (args)=>{
190
+ arity('min', args, 1, MAX_CALL_ARGUMENTS);
191
+ return Math.min(...args.map(toNumber));
192
+ },
193
+ max: (args)=>{
194
+ arity('max', args, 1, MAX_CALL_ARGUMENTS);
195
+ return Math.max(...args.map(toNumber));
196
+ },
197
+ round: (args)=>{
198
+ arity('round', args, 1, 2);
199
+ return roundTo(toNumber(args[0]), digitsOf(args[1]));
200
+ },
201
+ floor: (args)=>{
202
+ arity('floor', args, 1, 1);
203
+ return Math.floor(toNumber(args[0]));
204
+ },
205
+ ceil: (args)=>{
206
+ arity('ceil', args, 1, 1);
207
+ return Math.ceil(toNumber(args[0]));
208
+ },
209
+ abs: (args)=>{
210
+ arity('abs', args, 1, 1);
211
+ return Math.abs(toNumber(args[0]));
212
+ },
213
+ format: (args)=>{
214
+ arity('format', args, 1, 2);
215
+ const digits = digitsOf(args[1]);
216
+ return roundTo(toNumber(args[0]), digits).toLocaleString('en-US', {
217
+ minimumFractionDigits: digits,
218
+ maximumFractionDigits: digits
219
+ });
220
+ }
221
+ };
222
+ // ── Dictionary members (AGL-3202) ──────────────────────────────────────────
223
+ /**
224
+ * Parsed dictionaries, by their JSON text. A pricing function reads thirty
225
+ * members of the same six dictionaries on every keystroke, and the text is
226
+ * the only identity a scope value has. Small and bounded: a page holds a
227
+ * handful of dictionaries, and a miss only costs a parse.
228
+ */ const DICTIONARY_CACHE = new Map();
229
+ const DICTIONARY_CACHE_MAX = 64;
230
+ function parseDictionary(text) {
231
+ var _DICTIONARY_CACHE_get;
232
+ if (DICTIONARY_CACHE.has(text)) return (_DICTIONARY_CACHE_get = DICTIONARY_CACHE.get(text)) != null ? _DICTIONARY_CACHE_get : null;
233
+ let parsed = null;
234
+ try {
235
+ const value = JSON.parse(text);
236
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
237
+ parsed = value;
238
+ }
239
+ } catch (unused) {
240
+ parsed = null;
241
+ }
242
+ if (DICTIONARY_CACHE.size >= DICTIONARY_CACHE_MAX) {
243
+ const oldest = DICTIONARY_CACHE.keys().next().value;
244
+ if (oldest !== undefined) DICTIONARY_CACHE.delete(oldest);
245
+ }
246
+ DICTIONARY_CACHE.set(text, parsed);
247
+ return parsed;
248
+ }
249
+ /**
250
+ * `plan.annual`: a member of a DICTIONARY — a site variable of that type, or
251
+ * a text local holding one, which is how a function picks one of several
252
+ * ("the plan that won") and then reads its members.
253
+ *
254
+ * A site that prices six plans on twenty-five meters would otherwise need a
255
+ * hundred and fifty number variables, and the published page reads a
256
+ * hundred. One dictionary per plan is what an author would reach for anyway.
257
+ *
258
+ * OWN members only, and only a number, a text or a true/false comes out: a
259
+ * nested dictionary is walked by a longer path, never returned.
260
+ */ function readMember(path, scope) {
261
+ const [base, ...members] = path.split('.');
262
+ if (!Object.prototype.hasOwnProperty.call(scope, base)) {
263
+ throw new Error(`Unknown name "${base}"`);
264
+ }
265
+ let current = typeof scope[base] === 'string' ? parseDictionary(scope[base]) : null;
266
+ if (!current) throw new Error(`"${base}" is not a dictionary`);
267
+ for (const member of members){
268
+ if (!current || typeof current !== 'object' || Array.isArray(current) || !Object.prototype.hasOwnProperty.call(current, member)) {
269
+ throw new Error(`Unknown name "${path}"`);
270
+ }
271
+ current = current[member];
272
+ }
273
+ if (typeof current === 'number' || typeof current === 'string' || typeof current === 'boolean') {
274
+ return current;
275
+ }
276
+ throw new Error(`"${path}" is not a number, a text or a true/false`);
277
+ }
278
+ /** The built-in names, for an editor's help text and for tests. */ export const FUNCTION_BUILTIN_NAMES = Object.keys(BUILTINS);
279
+ function isBuiltin(name) {
280
+ return Object.prototype.hasOwnProperty.call(BUILTINS, name);
281
+ }
282
+ /**
283
+ * The names an expression READS, in order, without evaluating it: every
284
+ * identifier that is not a built-in being called. Malformed text names
285
+ * nothing — the evaluator is where a bad expression is reported.
286
+ */ export function expressionIdentifiers(text) {
287
+ let tokens;
288
+ try {
289
+ tokens = tokenize(String(text != null ? text : ''));
290
+ } catch (unused) {
291
+ return [];
292
+ }
293
+ const names = [];
294
+ tokens.forEach((token, index)=>{
295
+ var _tokens_;
296
+ if (token.kind !== 'ident') return;
297
+ if (((_tokens_ = tokens[index + 1]) == null ? void 0 : _tokens_.kind) === 'lparen' && isBuiltin(token.value)) return;
298
+ // `plan_pro.annual` reads the variable `plan_pro`: the base is the name.
299
+ names.push(token.value.split('.')[0]);
300
+ });
301
+ return names;
302
+ }
303
+ /** Evaluates an expression against the scope. Throws on any invalid input. */ export function evaluateExpression(text, scope) {
304
+ const tokens = tokenize(text);
305
+ let position = 0;
306
+ const peek = ()=>tokens[position];
307
+ const next = ()=>tokens[position++];
308
+ function factor() {
309
+ const token = next();
310
+ if (!token) throw new Error('Unexpected end of expression');
311
+ if (token.kind === 'number' || token.kind === 'string' || token.kind === 'boolean') {
312
+ return token.value;
313
+ }
314
+ if (token.kind === 'ident') {
315
+ var _peek;
316
+ // A CALL, only when the parenthesis follows. A scope may still hold a
317
+ // value named `min` and read it as `min`, which is what every
318
+ // definition written before the built-ins existed relies on.
319
+ if (((_peek = peek()) == null ? void 0 : _peek.kind) === 'lparen') {
320
+ var _peek1;
321
+ if (!isBuiltin(token.value)) {
322
+ throw new Error(`Unknown function "${token.value}"`);
323
+ }
324
+ next();
325
+ const args = [];
326
+ if (((_peek1 = peek()) == null ? void 0 : _peek1.kind) !== 'rparen') {
327
+ var _peek2;
328
+ args.push(expression());
329
+ while(((_peek2 = peek()) == null ? void 0 : _peek2.kind) === 'comma'){
330
+ next();
331
+ args.push(expression());
332
+ }
333
+ }
334
+ const closing = next();
335
+ if (!closing || closing.kind !== 'rparen') {
336
+ throw new Error('Missing closing parenthesis');
337
+ }
338
+ return BUILTINS[token.value](args);
339
+ }
340
+ if (token.value.includes('.')) return readMember(token.value, scope);
341
+ // OWN properties only: `in` walks the prototype chain, so `toString`
342
+ // and `constructor` used to read as names every scope declared.
343
+ if (!Object.prototype.hasOwnProperty.call(scope, token.value)) {
344
+ throw new Error(`Unknown name "${token.value}"`);
345
+ }
346
+ return scope[token.value];
347
+ }
348
+ if (token.kind === 'lparen') {
349
+ const value = expression();
350
+ const closing = next();
351
+ if (!closing || closing.kind !== 'rparen') {
352
+ throw new Error('Missing closing parenthesis');
353
+ }
354
+ return value;
355
+ }
356
+ if (token.kind === 'op' && token.value === '-') {
357
+ return -toNumber(factor());
358
+ }
359
+ throw new Error('Unexpected token');
360
+ }
361
+ function term() {
362
+ var _peek;
363
+ let value = factor();
364
+ while(((_peek = peek()) == null ? void 0 : _peek.kind) === 'op' && [
365
+ '*',
366
+ '/'
367
+ ].includes(peek().value)){
368
+ const operator = next().value;
369
+ const right = toNumber(factor());
370
+ value = operator === '*' ? toNumber(value) * right : toNumber(value) / right;
371
+ }
372
+ return value;
373
+ }
374
+ function expression() {
375
+ var _peek;
376
+ let value = term();
377
+ while(((_peek = peek()) == null ? void 0 : _peek.kind) === 'op' && [
378
+ '+',
379
+ '-'
380
+ ].includes(peek().value)){
381
+ const operator = next().value;
382
+ const right = term();
383
+ if (operator === '+') {
384
+ // `+` concatenates when either side is a string, like the templates.
385
+ value = typeof value === 'string' || typeof right === 'string' ? String(value) + String(right) : toNumber(value) + toNumber(right);
386
+ } else {
387
+ value = toNumber(value) - toNumber(right);
388
+ }
389
+ }
390
+ return value;
391
+ }
392
+ const result = expression();
393
+ if (position < tokens.length) throw new Error('Unexpected trailing input');
394
+ return result;
395
+ }
396
+ function toNumber(value) {
397
+ const parsed = Number(value);
398
+ if (!Number.isFinite(parsed)) {
399
+ throw new Error(`"${value}" is not a number`);
400
+ }
401
+ return parsed;
402
+ }
403
+ function compare(left, comparator, right) {
404
+ switch(comparator){
405
+ case '==':
406
+ return left === right;
407
+ case '!=':
408
+ return left !== right;
409
+ case '<':
410
+ return toNumber(left) < toNumber(right);
411
+ case '<=':
412
+ return toNumber(left) <= toNumber(right);
413
+ case '>':
414
+ return toNumber(left) > toNumber(right);
415
+ case '>=':
416
+ return toNumber(left) >= toNumber(right);
417
+ default:
418
+ throw new Error(`Unknown comparator "${comparator}"`);
419
+ }
420
+ }
421
+ function defaultValue(type) {
422
+ return type === 'number' ? 0 : type === 'boolean' ? false : '';
423
+ }
424
+ function coerce(type, value) {
425
+ if (type === 'number') return toNumber(value);
426
+ if (type === 'boolean') return value === true || value === 'true';
427
+ return String(value != null ? value : '');
428
+ }
429
+ export function evaluateHostFunction(definition, args, options) {
430
+ try {
431
+ var _ref, _definition_parameters, _definition_variables, _definition_operations;
432
+ const scope = {};
433
+ for (const [name, value] of Object.entries((_ref = options == null ? void 0 : options.globals) != null ? _ref : {})){
434
+ scope[name] = value;
435
+ }
436
+ // What a SET may target: the function's own names, never a global.
437
+ const writable = new Set();
438
+ for (const parameter of (_definition_parameters = definition.parameters) != null ? _definition_parameters : []){
439
+ const provided = args[parameter.name];
440
+ const fallback = parameter.defaultValue;
441
+ if (provided == null || provided === '') {
442
+ if (fallback != null && fallback !== '') {
443
+ scope[parameter.name] = coerce(parameter.type, fallback);
444
+ } else if (parameter.required) {
445
+ throw new Error(`Parameter "${parameter.name}" is required`);
446
+ } else {
447
+ scope[parameter.name] = defaultValue(parameter.type);
448
+ }
449
+ } else {
450
+ scope[parameter.name] = coerce(parameter.type, provided);
451
+ }
452
+ writable.add(parameter.name);
453
+ }
454
+ for (const variable of (_definition_variables = definition.variables) != null ? _definition_variables : []){
455
+ scope[variable.name] = defaultValue(variable.type);
456
+ writable.add(variable.name);
457
+ }
458
+ const operations = (_definition_operations = definition.operations) != null ? _definition_operations : [];
459
+ let applied = 0;
460
+ for (const operation of operations){
461
+ var _operation_then, _operation_otherwise;
462
+ const passed = compare(evaluateExpression(operation.if.left, scope), operation.if.comparator, evaluateExpression(operation.if.right, scope));
463
+ for (const setOperation of passed ? (_operation_then = operation.then) != null ? _operation_then : [] : (_operation_otherwise = operation.otherwise) != null ? _operation_otherwise : []){
464
+ if ((applied += 1) > FUNCTION_MAX_OPERATIONS) {
465
+ throw new Error('Operation limit exceeded');
466
+ }
467
+ if (!writable.has(setOperation.set)) {
468
+ throw new Error(Object.prototype.hasOwnProperty.call(scope, setOperation.set) ? `"${setOperation.set}" is a site variable: a function can ` + 'read it, not set it' : `Unknown variable "${setOperation.set}"`);
469
+ }
470
+ if (setOperation.workflow) {
471
+ if (!(options == null ? void 0 : options.invokeWorkflow)) {
472
+ throw new Error('Workflow calls are not available here');
473
+ }
474
+ scope[setOperation.set] = options.invokeWorkflow(setOperation.workflow, scope);
475
+ } else {
476
+ scope[setOperation.set] = evaluateExpression(setOperation.expression, scope);
477
+ }
478
+ }
479
+ }
480
+ const returnName = definition.returnValue;
481
+ const value = returnName && Object.prototype.hasOwnProperty.call(scope, returnName) ? scope[returnName] : '';
482
+ return {
483
+ ok: true,
484
+ value,
485
+ scope
486
+ };
487
+ } catch (error) {
488
+ return {
489
+ ok: false,
490
+ error: error.message
491
+ };
492
+ }
493
+ }
494
+ /**
495
+ * The OUTSIDE names a function reads (AGL-3202): every identifier in its
496
+ * conditions and expressions that is not one of its own parameters or
497
+ * locals. Compose uses this to hand a Function Widget only the site
498
+ * variables its function asks for, so a published page never carries a
499
+ * variable nobody named.
500
+ */ export function functionReferencedNames(definition) {
501
+ var _definition_parameters, _definition_variables, _definition_operations;
502
+ const own = new Set([
503
+ ...((_definition_parameters = definition.parameters) != null ? _definition_parameters : []).map((parameter)=>parameter.name),
504
+ ...((_definition_variables = definition.variables) != null ? _definition_variables : []).map((variable)=>variable.name)
505
+ ]);
506
+ const names = new Set();
507
+ const read = (text)=>{
508
+ for (const name of expressionIdentifiers(String(text != null ? text : ''))){
509
+ if (!own.has(name)) names.add(name);
510
+ }
511
+ };
512
+ for (const operation of (_definition_operations = definition.operations) != null ? _definition_operations : []){
513
+ var _operation_then, _operation_otherwise;
514
+ var _operation_if, _operation_if1;
515
+ read((_operation_if = operation.if) == null ? void 0 : _operation_if.left);
516
+ read((_operation_if1 = operation.if) == null ? void 0 : _operation_if1.right);
517
+ for (const setOperation of [
518
+ ...(_operation_then = operation.then) != null ? _operation_then : [],
519
+ ...(_operation_otherwise = operation.otherwise) != null ? _operation_otherwise : []
520
+ ]){
521
+ read(setOperation.expression);
522
+ }
523
+ }
524
+ return [
525
+ ...names
526
+ ];
527
+ }
528
+
529
+ //# sourceMappingURL=functions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/functions.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * No-code functions (Component Builder, AGL-92): the mockup's Edit Function\n * model — parameters, local variables, conditional SET operations, and a\n * return value — plus a small, safe expression evaluator. No eval(), no\n * loops, bounded operation count; expressions only reference declared\n * names, numeric/string/boolean literals, + - * / ( ), and the fixed table\n * of built-ins below.\n *\n * WHAT A REAL CALCULATOR NEEDED (AGL-3202). The first page built on this — a\n * cost sheet comparing five platforms — could compute its static table and\n * could not carry its interactive half, for three reasons that live here:\n *\n * - No `min`, no rounding, no number formatting. \"Cheapest of three plans\"\n * took three compares, a per-site cost could not be shown at all, and\n * \"$1,396\" was built by peeling thousands off with a ladder of six\n * compares. {@link BUILTINS} closes that: a FIXED table, called as\n * `name(args)`. Nothing a site author writes can add to it, so the\n * evaluator's promise — no eval, no loops, bounded — is unchanged.\n * - A function could not read a site variable, so a widget's function had\n * to repeat every price as a literal. `globals` on\n * {@link EvaluateFunctionOptions} is that outer scope: readable, never\n * settable, and shadowed by a parameter or local of the same name.\n * - A parameter was a bare identifier and a type. It may now carry what a\n * visitor should see and start with: `label`, `options`, `defaultValue`.\n */\n\nexport type FunctionValueType = 'number' | 'text' | 'boolean'\n\n/** One entry of a parameter's choice list (AGL-3202). */\nexport interface HostFunctionParameterOption {\n /** What the function receives; coerced to the parameter's type. */\n value: string\n /** What the visitor reads; the value when absent. */\n label?: string\n}\n\n/**\n * A choice list as ONE line of text (AGL-3202):\n * `cms: A CMS and room to grow, entry: The entry plan only`. A bare entry is\n * both the value and what the visitor reads.\n *\n * One line, not a nested editor, because every surface that asks for choices\n * already asks for several other things in the same row. The cost is that a\n * value cannot itself contain a comma, and a label cannot either; a choice\n * that needs one is a sign the question wants rewording.\n *\n * In core because two plugins read it — the function builder that stores a\n * parameter's choices and the canvas element that offers its own — and a\n * plugin may not import another.\n */\nexport function parseFunctionParameterOptions(\n text: string | null | undefined,\n): HostFunctionParameterOption[] {\n const options: HostFunctionParameterOption[] = []\n const seen = new Set<string>()\n for (const part of String(text ?? '').split(',')) {\n const colon = part.indexOf(':')\n const value = (colon < 0 ? part : part.slice(0, colon)).trim()\n // The second copy of a value is a typo, not a second choice: a select\n // with two identical values cannot tell the function which was picked.\n if (!value || seen.has(value)) continue\n seen.add(value)\n const label = colon < 0 ? '' : part.slice(colon + 1).trim()\n options.push(label && label !== value ? { value, label } : { value })\n }\n return options\n}\n\n/** The inverse, for showing a stored list in that one line. */\nexport function formatFunctionParameterOptions(\n options: HostFunctionParameterOption[] | null | undefined,\n): string {\n return (options ?? [])\n .map((option) =>\n option.label && option.label !== option.value\n ? `${option.value}: ${option.label}`\n : option.value,\n )\n .join(', ')\n}\n\nexport interface HostFunctionParameter {\n name: string\n type: FunctionValueType\n required?: boolean\n /**\n * What a visitor reads above the input (AGL-3202). The identifier is an\n * authoring name — `client_sites` — and was the only label a Function\n * Widget had.\n */\n label?: string\n /**\n * A fixed list to choose from; the widget renders a select. There is no\n * other way to ASK a visitor for a choice: a free-text box that has to be\n * typed into exactly is not a question.\n */\n options?: HostFunctionParameterOption[]\n /**\n * What the input starts with, and what an empty input evaluates as. It\n * satisfies `required`: a parameter with a default is never missing.\n */\n defaultValue?: string\n}\n\nexport interface HostFunctionVariable {\n name: string\n type: FunctionValueType\n}\n\nexport type FunctionComparator = '==' | '!=' | '<' | '<=' | '>' | '>='\n\nexport interface FunctionSetOperation {\n /** Variable (or parameter) name receiving the value. */\n set: string\n /** Expression text, e.g. `P1 + P2` or `(P1 + 1) * 2`. */\n expression: string\n /**\n * Workflow (by name) whose result to assign instead of `expression`\n * (AGL-129). Runs with the function's current scope visible; only\n * honored when the caller provides a workflow runner.\n */\n workflow?: string\n}\n\n/** The mockup's numbered operation card: if / then / otherwise. */\nexport interface FunctionConditionalOperation {\n if: { left: string; comparator: FunctionComparator; right: string }\n then: FunctionSetOperation[]\n otherwise: FunctionSetOperation[]\n}\n\n/** `hosts/{hostId}/functions/{id}` doc. */\nexport interface HostFunction {\n name: string\n parameters: HostFunctionParameter[]\n variables: HostFunctionVariable[]\n operations: FunctionConditionalOperation[]\n /** Name whose final value the function returns. */\n returnValue?: string\n}\n\n/**\n * How many SETs one run may apply. A BOUND, not a budget anyone is meant to\n * approach: there are no loops, so a run applies at most one SET per SET\n * written, and this is what stops a definition pasted in by the thousand.\n *\n * It was 100, sized for \"if P1 <= P2 then P3 = P1 + P2\". The first pricing\n * calculator built on site functions — six plans, a line per meter, a row per\n * competitor — applies about 150 (AGL-3202). Each SET is one short expression\n * over a flat scope, so a thousand of them is still well under a millisecond.\n */\nexport const FUNCTION_MAX_OPERATIONS = 1000\n\ntype Scope = Record<string, number | string | boolean>\n\n// ── Expression parsing (recursive descent, standard precedence) ────────────\n\ntype Token =\n | { kind: 'number'; value: number }\n | { kind: 'string'; value: string }\n | { kind: 'boolean'; value: boolean }\n | { kind: 'ident'; value: string }\n | { kind: 'op'; value: '+' | '-' | '*' | '/' }\n | { kind: 'lparen' }\n | { kind: 'rparen' }\n | { kind: 'comma' }\n\nfunction tokenize(text: string): Token[] {\n const tokens: Token[] = []\n let index = 0\n while (index < text.length) {\n const char = text[index]\n if (/\\s/.test(char)) {\n index += 1\n } else if ('+-*/'.includes(char)) {\n tokens.push({ kind: 'op', value: char as any })\n index += 1\n } else if (char === '(') {\n tokens.push({ kind: 'lparen' })\n index += 1\n } else if (char === ')') {\n tokens.push({ kind: 'rparen' })\n index += 1\n } else if (char === ',') {\n // Only meaningful between a built-in's arguments; anywhere else the\n // parser reports it as trailing input.\n tokens.push({ kind: 'comma' })\n index += 1\n } else if (char === \"'\" || char === '\"') {\n const end = text.indexOf(char, index + 1)\n if (end < 0) throw new Error('Unterminated string')\n tokens.push({ kind: 'string', value: text.slice(index + 1, end) })\n index = end + 1\n } else if (/[0-9.]/.test(char)) {\n const match = /^[0-9]*\\.?[0-9]+/.exec(text.slice(index))\n if (!match) throw new Error(`Bad number at \"${text.slice(index)}\"`)\n tokens.push({ kind: 'number', value: Number(match[0]) })\n index += match[0].length\n } else if (/[a-zA-Z_]/.test(char)) {\n // A dotted path is ONE name: `plan_pro.annual` reads a member of a\n // dictionary (AGL-3202). A number never starts here, so `1.5` is not\n // at risk, and a trailing dot is left for the parser to refuse.\n const match = /^[a-zA-Z_][a-zA-Z0-9_]*(?:\\.[a-zA-Z_][a-zA-Z0-9_]*)*/.exec(\n text.slice(index),\n )!\n const word = match[0]\n if (word === 'true' || word === 'false') {\n tokens.push({ kind: 'boolean', value: word === 'true' })\n } else {\n tokens.push({ kind: 'ident', value: word })\n }\n index += word.length\n } else {\n throw new Error(`Unexpected character \"${char}\"`)\n }\n }\n return tokens\n}\n\n// ── Built-ins (AGL-3202) ───────────────────────────────────────────────────\n\ntype Value = number | string | boolean\n\n/** More arguments than any built-in can use; a typo, not a calculation. */\nconst MAX_CALL_ARGUMENTS = 16\n/** Decimal places `round` and `format` accept. */\nconst MAX_DIGITS = 10\n\nfunction digitsOf(value: Value | undefined): number {\n if (value === undefined) return 0\n const digits = Math.trunc(toNumber(value))\n if (digits < 0 || digits > MAX_DIGITS) {\n throw new Error(`Decimal places must be between 0 and ${MAX_DIGITS}`)\n }\n return digits\n}\n\n/**\n * Half away from zero, on the DECIMAL value. The exponent form is what makes\n * `round(1.005, 2)` answer 1.01: multiplying by 100 first gives\n * 100.49999999999999 and rounds it down.\n */\nfunction roundTo(value: number, digits: number): number {\n const magnitude = Number(\n `${Math.round(Number(`${Math.abs(value)}e${digits}`))}e-${digits}`,\n )\n return value < 0 ? -magnitude : magnitude\n}\n\nfunction arity(name: string, args: Value[], least: number, most: number): void {\n if (args.length < least || args.length > most) {\n const wanted = least === most ? `${least}` : `${least} to ${most}`\n throw new Error(`${name}() takes ${wanted} argument(s)`)\n }\n}\n\n/**\n * THE WHOLE TABLE, and it is closed. A site author calls these; nothing they\n * write can add one, and none of them loops, allocates by input size or\n * reaches outside its arguments.\n *\n * `format` is pinned to `en-US` on purpose. The same function runs on the\n * server for a `{{fn:…}}` token and in a visitor's browser for a widget, and\n * the machine's own locale would make those two disagree about \"1,396\".\n */\nconst BUILTINS: Record<string, (args: Value[]) => Value> = {\n min: (args) => {\n arity('min', args, 1, MAX_CALL_ARGUMENTS)\n return Math.min(...args.map(toNumber))\n },\n max: (args) => {\n arity('max', args, 1, MAX_CALL_ARGUMENTS)\n return Math.max(...args.map(toNumber))\n },\n round: (args) => {\n arity('round', args, 1, 2)\n return roundTo(toNumber(args[0]), digitsOf(args[1]))\n },\n floor: (args) => {\n arity('floor', args, 1, 1)\n return Math.floor(toNumber(args[0]))\n },\n ceil: (args) => {\n arity('ceil', args, 1, 1)\n return Math.ceil(toNumber(args[0]))\n },\n abs: (args) => {\n arity('abs', args, 1, 1)\n return Math.abs(toNumber(args[0]))\n },\n format: (args) => {\n arity('format', args, 1, 2)\n const digits = digitsOf(args[1])\n return roundTo(toNumber(args[0]), digits).toLocaleString('en-US', {\n minimumFractionDigits: digits,\n maximumFractionDigits: digits,\n })\n },\n}\n\n// ── Dictionary members (AGL-3202) ──────────────────────────────────────────\n\n/**\n * Parsed dictionaries, by their JSON text. A pricing function reads thirty\n * members of the same six dictionaries on every keystroke, and the text is\n * the only identity a scope value has. Small and bounded: a page holds a\n * handful of dictionaries, and a miss only costs a parse.\n */\nconst DICTIONARY_CACHE = new Map<string, Record<string, unknown> | null>()\nconst DICTIONARY_CACHE_MAX = 64\n\nfunction parseDictionary(text: string): Record<string, unknown> | null {\n if (DICTIONARY_CACHE.has(text)) return DICTIONARY_CACHE.get(text) ?? null\n let parsed: Record<string, unknown> | null = null\n try {\n const value: unknown = JSON.parse(text)\n if (value && typeof value === 'object' && !Array.isArray(value)) {\n parsed = value as Record<string, unknown>\n }\n } catch {\n parsed = null\n }\n if (DICTIONARY_CACHE.size >= DICTIONARY_CACHE_MAX) {\n const oldest = DICTIONARY_CACHE.keys().next().value\n if (oldest !== undefined) DICTIONARY_CACHE.delete(oldest)\n }\n DICTIONARY_CACHE.set(text, parsed)\n return parsed\n}\n\n/**\n * `plan.annual`: a member of a DICTIONARY — a site variable of that type, or\n * a text local holding one, which is how a function picks one of several\n * (\"the plan that won\") and then reads its members.\n *\n * A site that prices six plans on twenty-five meters would otherwise need a\n * hundred and fifty number variables, and the published page reads a\n * hundred. One dictionary per plan is what an author would reach for anyway.\n *\n * OWN members only, and only a number, a text or a true/false comes out: a\n * nested dictionary is walked by a longer path, never returned.\n */\nfunction readMember(path: string, scope: Scope): Value {\n const [base, ...members] = path.split('.')\n if (!Object.prototype.hasOwnProperty.call(scope, base)) {\n throw new Error(`Unknown name \"${base}\"`)\n }\n let current: unknown =\n typeof scope[base] === 'string' ? parseDictionary(scope[base] as string) : null\n if (!current) throw new Error(`\"${base}\" is not a dictionary`)\n for (const member of members) {\n if (\n !current ||\n typeof current !== 'object' ||\n Array.isArray(current) ||\n !Object.prototype.hasOwnProperty.call(current, member)\n ) {\n throw new Error(`Unknown name \"${path}\"`)\n }\n current = (current as Record<string, unknown>)[member]\n }\n if (\n typeof current === 'number' ||\n typeof current === 'string' ||\n typeof current === 'boolean'\n ) {\n return current\n }\n throw new Error(`\"${path}\" is not a number, a text or a true/false`)\n}\n\n/** The built-in names, for an editor's help text and for tests. */\nexport const FUNCTION_BUILTIN_NAMES: readonly string[] = Object.keys(BUILTINS)\n\nfunction isBuiltin(name: string): boolean {\n return Object.prototype.hasOwnProperty.call(BUILTINS, name)\n}\n\n/**\n * The names an expression READS, in order, without evaluating it: every\n * identifier that is not a built-in being called. Malformed text names\n * nothing — the evaluator is where a bad expression is reported.\n */\nexport function expressionIdentifiers(text: string): string[] {\n let tokens: Token[]\n try {\n tokens = tokenize(String(text ?? ''))\n } catch {\n return []\n }\n const names: string[] = []\n tokens.forEach((token, index) => {\n if (token.kind !== 'ident') return\n if (tokens[index + 1]?.kind === 'lparen' && isBuiltin(token.value)) return\n // `plan_pro.annual` reads the variable `plan_pro`: the base is the name.\n names.push(token.value.split('.')[0])\n })\n return names\n}\n\n/** Evaluates an expression against the scope. Throws on any invalid input. */\nexport function evaluateExpression(\n text: string,\n scope: Scope,\n): number | string | boolean {\n const tokens = tokenize(text)\n let position = 0\n\n const peek = () => tokens[position]\n const next = () => tokens[position++]\n\n function factor(): number | string | boolean {\n const token = next()\n if (!token) throw new Error('Unexpected end of expression')\n if (token.kind === 'number' || token.kind === 'string' || token.kind === 'boolean') {\n return token.value\n }\n if (token.kind === 'ident') {\n // A CALL, only when the parenthesis follows. A scope may still hold a\n // value named `min` and read it as `min`, which is what every\n // definition written before the built-ins existed relies on.\n if (peek()?.kind === 'lparen') {\n if (!isBuiltin(token.value)) {\n throw new Error(`Unknown function \"${token.value}\"`)\n }\n next()\n const args: Value[] = []\n if (peek()?.kind !== 'rparen') {\n args.push(expression())\n while (peek()?.kind === 'comma') {\n next()\n args.push(expression())\n }\n }\n const closing = next()\n if (!closing || closing.kind !== 'rparen') {\n throw new Error('Missing closing parenthesis')\n }\n return BUILTINS[token.value](args)\n }\n if (token.value.includes('.')) return readMember(token.value, scope)\n // OWN properties only: `in` walks the prototype chain, so `toString`\n // and `constructor` used to read as names every scope declared.\n if (!Object.prototype.hasOwnProperty.call(scope, token.value)) {\n throw new Error(`Unknown name \"${token.value}\"`)\n }\n return scope[token.value]\n }\n if (token.kind === 'lparen') {\n const value = expression()\n const closing = next()\n if (!closing || closing.kind !== 'rparen') {\n throw new Error('Missing closing parenthesis')\n }\n return value\n }\n if (token.kind === 'op' && token.value === '-') {\n return -toNumber(factor())\n }\n throw new Error('Unexpected token')\n }\n\n function term(): number | string | boolean {\n let value = factor()\n while (peek()?.kind === 'op' && ['*', '/'].includes((peek() as any).value)) {\n const operator = (next() as any).value\n const right = toNumber(factor())\n value =\n operator === '*' ? toNumber(value) * right : toNumber(value) / right\n }\n return value\n }\n\n function expression(): number | string | boolean {\n let value = term()\n while (peek()?.kind === 'op' && ['+', '-'].includes((peek() as any).value)) {\n const operator = (next() as any).value\n const right = term()\n if (operator === '+') {\n // `+` concatenates when either side is a string, like the templates.\n value =\n typeof value === 'string' || typeof right === 'string'\n ? String(value) + String(right)\n : toNumber(value) + toNumber(right)\n } else {\n value = toNumber(value) - toNumber(right)\n }\n }\n return value\n }\n\n const result = expression()\n if (position < tokens.length) throw new Error('Unexpected trailing input')\n return result\n}\n\nfunction toNumber(value: unknown): number {\n const parsed = Number(value)\n if (!Number.isFinite(parsed)) {\n throw new Error(`\"${value}\" is not a number`)\n }\n return parsed\n}\n\nfunction compare(\n left: number | string | boolean,\n comparator: FunctionComparator,\n right: number | string | boolean,\n): boolean {\n switch (comparator) {\n case '==':\n return left === right\n case '!=':\n return left !== right\n case '<':\n return toNumber(left) < toNumber(right)\n case '<=':\n return toNumber(left) <= toNumber(right)\n case '>':\n return toNumber(left) > toNumber(right)\n case '>=':\n return toNumber(left) >= toNumber(right)\n default:\n throw new Error(`Unknown comparator \"${comparator}\"`)\n }\n}\n\nfunction defaultValue(type: FunctionValueType): number | string | boolean {\n return type === 'number' ? 0 : type === 'boolean' ? false : ''\n}\n\nfunction coerce(\n type: FunctionValueType,\n value: unknown,\n): number | string | boolean {\n if (type === 'number') return toNumber(value)\n if (type === 'boolean') return value === true || value === 'true'\n return String(value ?? '')\n}\n\nexport type FunctionRunResult =\n | { ok: true; value: number | string | boolean; scope: Scope }\n | { ok: false; error: string }\n\n/**\n * Runs a function definition against arguments: parameters coerce/validate\n * into scope, variables initialize to type defaults, each conditional\n * evaluates its `if` and applies the matching SET list in order, and the\n * `returnValue` name's final value comes back.\n */\nexport interface EvaluateFunctionOptions {\n /**\n * Workflow invoker for `set.workflow` operations (AGL-129); wired by\n * `runWorkflow` so cross-calls share one depth guard. Absent means\n * workflow operations fail with a clear error.\n */\n invokeWorkflow?: (\n name: string,\n scope: Scope,\n ) => number | string | boolean\n /**\n * Site variables by NAME (AGL-3202): the scope outside the function.\n *\n * READ-ONLY, and the function's own names win. A parameter or local of the\n * same name shadows the variable, so adding a site variable can never\n * change what an existing function computes; and a SET may only target a\n * parameter or a local, so a function cannot appear to change a value that\n * every other page reads.\n */\n globals?: Scope\n}\n\nexport function evaluateHostFunction(\n definition: HostFunction,\n args: Record<string, unknown>,\n options?: EvaluateFunctionOptions,\n): FunctionRunResult {\n try {\n const scope: Scope = {}\n for (const [name, value] of Object.entries(options?.globals ?? {})) {\n scope[name] = value\n }\n // What a SET may target: the function's own names, never a global.\n const writable = new Set<string>()\n for (const parameter of definition.parameters ?? []) {\n const provided = args[parameter.name]\n const fallback = parameter.defaultValue\n if (provided == null || provided === '') {\n if (fallback != null && fallback !== '') {\n scope[parameter.name] = coerce(parameter.type, fallback)\n } else if (parameter.required) {\n throw new Error(`Parameter \"${parameter.name}\" is required`)\n } else {\n scope[parameter.name] = defaultValue(parameter.type)\n }\n } else {\n scope[parameter.name] = coerce(parameter.type, provided)\n }\n writable.add(parameter.name)\n }\n for (const variable of definition.variables ?? []) {\n scope[variable.name] = defaultValue(variable.type)\n writable.add(variable.name)\n }\n\n const operations = definition.operations ?? []\n let applied = 0\n for (const operation of operations) {\n const passed = compare(\n evaluateExpression(operation.if.left, scope),\n operation.if.comparator,\n evaluateExpression(operation.if.right, scope),\n )\n for (const setOperation of passed\n ? (operation.then ?? [])\n : (operation.otherwise ?? [])) {\n if ((applied += 1) > FUNCTION_MAX_OPERATIONS) {\n throw new Error('Operation limit exceeded')\n }\n if (!writable.has(setOperation.set)) {\n throw new Error(\n Object.prototype.hasOwnProperty.call(scope, setOperation.set)\n ? `\"${setOperation.set}\" is a site variable: a function can ` +\n 'read it, not set it'\n : `Unknown variable \"${setOperation.set}\"`,\n )\n }\n if (setOperation.workflow) {\n if (!options?.invokeWorkflow) {\n throw new Error('Workflow calls are not available here')\n }\n scope[setOperation.set] = options.invokeWorkflow(\n setOperation.workflow,\n scope,\n )\n } else {\n scope[setOperation.set] = evaluateExpression(\n setOperation.expression,\n scope,\n )\n }\n }\n }\n\n const returnName = definition.returnValue\n const value =\n returnName && Object.prototype.hasOwnProperty.call(scope, returnName)\n ? scope[returnName]\n : ''\n return { ok: true, value, scope }\n } catch (error) {\n return { ok: false, error: (error as Error).message }\n }\n}\n\n/**\n * The OUTSIDE names a function reads (AGL-3202): every identifier in its\n * conditions and expressions that is not one of its own parameters or\n * locals. Compose uses this to hand a Function Widget only the site\n * variables its function asks for, so a published page never carries a\n * variable nobody named.\n */\nexport function functionReferencedNames(definition: HostFunction): string[] {\n const own = new Set<string>([\n ...(definition.parameters ?? []).map((parameter) => parameter.name),\n ...(definition.variables ?? []).map((variable) => variable.name),\n ])\n const names = new Set<string>()\n const read = (text: unknown) => {\n for (const name of expressionIdentifiers(String(text ?? ''))) {\n if (!own.has(name)) names.add(name)\n }\n }\n for (const operation of definition.operations ?? []) {\n read(operation.if?.left)\n read(operation.if?.right)\n for (const setOperation of [\n ...(operation.then ?? []),\n ...(operation.otherwise ?? []),\n ]) {\n read(setOperation.expression)\n }\n }\n return [...names]\n}\n"],"names":["parseFunctionParameterOptions","text","options","seen","Set","part","String","split","colon","indexOf","value","slice","trim","has","add","label","push","formatFunctionParameterOptions","map","option","join","FUNCTION_MAX_OPERATIONS","tokenize","tokens","index","length","char","test","includes","kind","end","Error","match","exec","Number","word","MAX_CALL_ARGUMENTS","MAX_DIGITS","digitsOf","undefined","digits","Math","trunc","toNumber","roundTo","magnitude","round","abs","arity","name","args","least","most","wanted","BUILTINS","min","max","floor","ceil","format","toLocaleString","minimumFractionDigits","maximumFractionDigits","DICTIONARY_CACHE","Map","DICTIONARY_CACHE_MAX","parseDictionary","get","parsed","JSON","parse","Array","isArray","size","oldest","keys","next","delete","set","readMember","path","scope","base","members","Object","prototype","hasOwnProperty","call","current","member","FUNCTION_BUILTIN_NAMES","isBuiltin","expressionIdentifiers","names","forEach","token","evaluateExpression","position","peek","factor","expression","closing","term","operator","right","result","isFinite","compare","left","comparator","defaultValue","type","coerce","evaluateHostFunction","definition","entries","globals","writable","parameter","parameters","provided","fallback","required","variable","variables","operations","applied","operation","passed","if","setOperation","then","otherwise","workflow","invokeWorkflow","returnName","returnValue","ok","error","message","functionReferencedNames","own","read"],"mappings":"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"}