@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,120 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * A version document's `nodes` field, decoded to the map every reader wants
19
+ * (AGL-1223).
20
+ *
21
+ * **`nodes` is stored in TWO live forms and both must be handled.** A plain
22
+ * Firestore map, and msgpack bytes: `screenVersionConverter` compresses on
23
+ * write (AGL-1151) and decodes only binary payloads on read, because "nodes
24
+ * saved while updateDoc bypassed the client converter are plain maps rather
25
+ * than compressed bytes". Server code that reads `snapshot.get('nodes')` raw
26
+ * therefore gets a Node `Buffer` for the compressed majority.
27
+ *
28
+ * That is a SILENT failure, not a loud one, which is why this exists as a
29
+ * shared helper rather than a note. Every scan predicate in this library
30
+ * walks the map with `Object.values(nodes)`; over a Buffer that yields the
31
+ * individual byte NUMBERS, none of which has a `props` or a `componentId`, so
32
+ * the loop completes and reports no matches. The endpoint answers "used
33
+ * nowhere" — for `/api/hosts/where-used` an invitation to delete something a
34
+ * live page renders, and for the media scan the sentence the AGL-1045 scope
35
+ * confirmation quotes before telling an author it is safe to restrict an
36
+ * asset.
37
+ *
38
+ * Returns `null` for absent AND for undecodable, logging the latter: a caller
39
+ * skipping a document is the same shape either way, and a decode failure that
40
+ * threw would fail the whole scan rather than one document.
41
+ *
42
+ * Every write path encodes, but the corpus does not: documents written before
43
+ * a given path learned to are still plain maps and nothing migrates them.
44
+ * Passing one through here is correct and is the point — a plain map returns
45
+ * unchanged, so a reader never has to know which it has.
46
+ *
47
+ * The bytes arrive as a Node `Buffer` on the server and as a Firestore
48
+ * `Bytes` on the CLIENT (AGL-1397), and only the first is an `ArrayBuffer`
49
+ * view. `Bytes` is a wrapper — `decompress` has always accepted it via
50
+ * `ByteSource`, but this helper used to route only views into `decompress`, so
51
+ * a `Bytes` fell through to the plain-map branch and came back UNCHANGED.
52
+ * That is the worst possible outcome for a client caller, because the wrapper
53
+ * is walkable: its `_byteString.binaryString` is the msgpack payload held as a
54
+ * latin-1 string, so `rewriteBindingTokensDeep` reads the page's text right
55
+ * out of the encoded bytes, "normalizes" a token inside them, and hands back
56
+ * `{_byteString: {binaryString: …}}` for something to write.
57
+ *
58
+ * A THIRD form arrives from outside Firestore: `{type: 'Buffer', data: […]}`,
59
+ * which is what `JSON.stringify` makes of a Node `Buffer` (AGL-1391). Site
60
+ * export bundles downloaded before that fix carry it, and it is the nastiest
61
+ * of the three — an `ArrayBuffer` view survives this helper, but a envelope is
62
+ * a plain object, so without this branch it returns UNCHANGED and every reader
63
+ * downstream walks an object whose only keys are `type` and `data`.
64
+ */
65
+ export declare function decodeStoredNodes<T = Record<string, any>>(raw: unknown): T | null;
66
+ /**
67
+ * Which live storage form a `nodes` field is in.
68
+ *
69
+ * `absent` covers both "no field" and a scalar, because the only two things a
70
+ * caller does with either are skip the document or write a fresh tree.
71
+ */
72
+ export type StoredNodesForm = 'bytes' | 'map' | 'absent';
73
+ /**
74
+ * Read the form off a stored field, so a partial update can write back the
75
+ * way the document came out.
76
+ *
77
+ * Rewriting a compressed document as a plain map inflates it by roughly 1.4x,
78
+ * which is the whole hazard this module exists to keep away from Firestore's
79
+ * per-document ceiling. A writer that merges one field into a document it did
80
+ * not fully read has no business changing the encoding of another.
81
+ *
82
+ * Recognises every form {@link decodeStoredNodes} does, and answers from the
83
+ * same predicates, so "what form is this" and "how do I read it" can never
84
+ * drift apart.
85
+ */
86
+ export declare function storedNodesForm(raw: unknown): StoredNodesForm;
87
+ /**
88
+ * A node map in the form it should be STORED in — msgpack bytes.
89
+ *
90
+ * The write-side twin of {@link decodeStoredNodes}, and deliberately in the
91
+ * same file: a reader who finds one finds the other, which is what stops the
92
+ * next write path from being added without an encoding.
93
+ *
94
+ * Returns a bare `Uint8Array` and knows NOTHING about Firestore, for the
95
+ * reason `compress` documents — one value import of the client SDK's `Bytes`
96
+ * pulls the whole Firestore client into the tenant bundle. The caller wraps:
97
+ * `Bytes.fromUint8Array(...)` on the client SDK, `Buffer.from(...)` on the
98
+ * Admin SDK, which is what each accepts for a bytes field.
99
+ *
100
+ * ALREADY-encoded input passes through rather than being encoded again. A
101
+ * write path that copies a stored document — a version snapshot, an install
102
+ * from a published artifact — receives whichever form that document held, and
103
+ * msgpack of msgpack is a tree no reader can decode.
104
+ *
105
+ * Returns `null` for an absent field, so a caller can omit the key entirely
106
+ * rather than writing an empty map over a real tree (AGL-1250).
107
+ */
108
+ export declare function encodeStoredNodes(nodes: unknown): Uint8Array | null;
109
+ /**
110
+ * The tree in the form the document already used.
111
+ *
112
+ * For the partial-update case: a writer that changes one field of a document
113
+ * it did not create must not also change how `nodes` is encoded. Pass the
114
+ * form read off the stored field and this hands back something to write.
115
+ *
116
+ * `absent` encodes, because a document with no stored form yet is a new one
117
+ * and new documents are compressed.
118
+ */
119
+ export declare function matchStoredNodesForm<T>(nodes: T, form: StoredNodesForm): Uint8Array | T | null;
120
+ export default decodeStoredNodes;
@@ -0,0 +1,174 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ import { compress } from "./compress.js";
17
+ import { decompress } from "./decompress.js";
18
+ /**
19
+ * A version document's `nodes` field, decoded to the map every reader wants
20
+ * (AGL-1223).
21
+ *
22
+ * **`nodes` is stored in TWO live forms and both must be handled.** A plain
23
+ * Firestore map, and msgpack bytes: `screenVersionConverter` compresses on
24
+ * write (AGL-1151) and decodes only binary payloads on read, because "nodes
25
+ * saved while updateDoc bypassed the client converter are plain maps rather
26
+ * than compressed bytes". Server code that reads `snapshot.get('nodes')` raw
27
+ * therefore gets a Node `Buffer` for the compressed majority.
28
+ *
29
+ * That is a SILENT failure, not a loud one, which is why this exists as a
30
+ * shared helper rather than a note. Every scan predicate in this library
31
+ * walks the map with `Object.values(nodes)`; over a Buffer that yields the
32
+ * individual byte NUMBERS, none of which has a `props` or a `componentId`, so
33
+ * the loop completes and reports no matches. The endpoint answers "used
34
+ * nowhere" — for `/api/hosts/where-used` an invitation to delete something a
35
+ * live page renders, and for the media scan the sentence the AGL-1045 scope
36
+ * confirmation quotes before telling an author it is safe to restrict an
37
+ * asset.
38
+ *
39
+ * Returns `null` for absent AND for undecodable, logging the latter: a caller
40
+ * skipping a document is the same shape either way, and a decode failure that
41
+ * threw would fail the whole scan rather than one document.
42
+ *
43
+ * Every write path encodes, but the corpus does not: documents written before
44
+ * a given path learned to are still plain maps and nothing migrates them.
45
+ * Passing one through here is correct and is the point — a plain map returns
46
+ * unchanged, so a reader never has to know which it has.
47
+ *
48
+ * The bytes arrive as a Node `Buffer` on the server and as a Firestore
49
+ * `Bytes` on the CLIENT (AGL-1397), and only the first is an `ArrayBuffer`
50
+ * view. `Bytes` is a wrapper — `decompress` has always accepted it via
51
+ * `ByteSource`, but this helper used to route only views into `decompress`, so
52
+ * a `Bytes` fell through to the plain-map branch and came back UNCHANGED.
53
+ * That is the worst possible outcome for a client caller, because the wrapper
54
+ * is walkable: its `_byteString.binaryString` is the msgpack payload held as a
55
+ * latin-1 string, so `rewriteBindingTokensDeep` reads the page's text right
56
+ * out of the encoded bytes, "normalizes" a token inside them, and hands back
57
+ * `{_byteString: {binaryString: …}}` for something to write.
58
+ *
59
+ * A THIRD form arrives from outside Firestore: `{type: 'Buffer', data: […]}`,
60
+ * which is what `JSON.stringify` makes of a Node `Buffer` (AGL-1391). Site
61
+ * export bundles downloaded before that fix carry it, and it is the nastiest
62
+ * of the three — an `ArrayBuffer` view survives this helper, but a envelope is
63
+ * a plain object, so without this branch it returns UNCHANGED and every reader
64
+ * downstream walks an object whose only keys are `type` and `data`.
65
+ */ export function decodeStoredNodes(raw) {
66
+ var _byteSource;
67
+ if (raw === null || raw === undefined) return null;
68
+ const bytes = ArrayBuffer.isView(raw) ? raw : (_byteSource = byteSource(raw)) != null ? _byteSource : bufferEnvelopeBytes(raw);
69
+ if (bytes) {
70
+ try {
71
+ return decompress(bytes);
72
+ } catch (error) {
73
+ // Undecodable nodes must never read as "no references".
74
+ console.error('could not decode stored nodes', error);
75
+ return null;
76
+ }
77
+ }
78
+ return raw;
79
+ }
80
+ /**
81
+ * Read the form off a stored field, so a partial update can write back the
82
+ * way the document came out.
83
+ *
84
+ * Rewriting a compressed document as a plain map inflates it by roughly 1.4x,
85
+ * which is the whole hazard this module exists to keep away from Firestore's
86
+ * per-document ceiling. A writer that merges one field into a document it did
87
+ * not fully read has no business changing the encoding of another.
88
+ *
89
+ * Recognises every form {@link decodeStoredNodes} does, and answers from the
90
+ * same predicates, so "what form is this" and "how do I read it" can never
91
+ * drift apart.
92
+ */ export function storedNodesForm(raw) {
93
+ if (raw === null || raw === undefined) return 'absent';
94
+ if (ArrayBuffer.isView(raw)) return 'bytes';
95
+ if (typeof raw !== 'object') return 'absent';
96
+ if (byteSource(raw) || bufferEnvelopeBytes(raw)) return 'bytes';
97
+ return 'map';
98
+ }
99
+ /**
100
+ * A node map in the form it should be STORED in — msgpack bytes.
101
+ *
102
+ * The write-side twin of {@link decodeStoredNodes}, and deliberately in the
103
+ * same file: a reader who finds one finds the other, which is what stops the
104
+ * next write path from being added without an encoding.
105
+ *
106
+ * Returns a bare `Uint8Array` and knows NOTHING about Firestore, for the
107
+ * reason `compress` documents — one value import of the client SDK's `Bytes`
108
+ * pulls the whole Firestore client into the tenant bundle. The caller wraps:
109
+ * `Bytes.fromUint8Array(...)` on the client SDK, `Buffer.from(...)` on the
110
+ * Admin SDK, which is what each accepts for a bytes field.
111
+ *
112
+ * ALREADY-encoded input passes through rather than being encoded again. A
113
+ * write path that copies a stored document — a version snapshot, an install
114
+ * from a published artifact — receives whichever form that document held, and
115
+ * msgpack of msgpack is a tree no reader can decode.
116
+ *
117
+ * Returns `null` for an absent field, so a caller can omit the key entirely
118
+ * rather than writing an empty map over a real tree (AGL-1250).
119
+ */ export function encodeStoredNodes(nodes) {
120
+ if (nodes === null || nodes === undefined) return null;
121
+ if (ArrayBuffer.isView(nodes)) {
122
+ // Offset and length, for the reason `decompress` documents: firebase-admin
123
+ // hands back POOLED Buffers, so the whole backing ArrayBuffer is usually
124
+ // somebody else's data.
125
+ return new Uint8Array(nodes.buffer, nodes.byteOffset, nodes.byteLength);
126
+ }
127
+ if (typeof nodes !== 'object') return null;
128
+ const source = byteSource(nodes);
129
+ if (source) return source.toUint8Array();
130
+ const envelope = bufferEnvelopeBytes(nodes);
131
+ if (envelope) return envelope;
132
+ return compress(nodes);
133
+ }
134
+ /**
135
+ * The tree in the form the document already used.
136
+ *
137
+ * For the partial-update case: a writer that changes one field of a document
138
+ * it did not create must not also change how `nodes` is encoded. Pass the
139
+ * form read off the stored field and this hands back something to write.
140
+ *
141
+ * `absent` encodes, because a document with no stored form yet is a new one
142
+ * and new documents are compressed.
143
+ */ export function matchStoredNodesForm(nodes, form) {
144
+ return form === 'map' ? nodes : encodeStoredNodes(nodes);
145
+ }
146
+ /**
147
+ * The client SDK's `Bytes`, structurally, or `null` for anything else.
148
+ *
149
+ * Matched on the method rather than the class so `firebase/firestore` stays
150
+ * out of this library — the same reason `decompress` types its input as
151
+ * `ByteSource`. A node map cannot collide: its values are node OBJECTS, never
152
+ * functions.
153
+ */ function byteSource(raw) {
154
+ if (typeof raw !== 'object') return null;
155
+ return typeof raw.toUint8Array === 'function' ? raw : null;
156
+ }
157
+ /**
158
+ * A JSON-serialized Node `Buffer`, or `null` for anything else.
159
+ *
160
+ * The test is deliberately exact — `type === 'Buffer'`, an array `data`, and
161
+ * NOTHING else — because the alternative reading of this object is a node map
162
+ * with nodes called `type` and `data`. That map cannot exist: a node map's
163
+ * values are node objects, so `type` would have to hold the literal string
164
+ * `'Buffer'` and `data` an array, at the same time, in the same document.
165
+ */ function bufferEnvelopeBytes(raw) {
166
+ if (typeof raw !== 'object' || Array.isArray(raw)) return null;
167
+ const value = raw;
168
+ if (value.type !== 'Buffer' || !Array.isArray(value.data)) return null;
169
+ if (Object.keys(value).length !== 2) return null;
170
+ return Uint8Array.from(value.data);
171
+ }
172
+ export default decodeStoredNodes;
173
+
174
+ //# sourceMappingURL=stored-nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/stored-nodes.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { compress } from './compress'\nimport { decompress, type ByteSource } from './decompress'\n\n/**\n * A version document's `nodes` field, decoded to the map every reader wants\n * (AGL-1223).\n *\n * **`nodes` is stored in TWO live forms and both must be handled.** A plain\n * Firestore map, and msgpack bytes: `screenVersionConverter` compresses on\n * write (AGL-1151) and decodes only binary payloads on read, because \"nodes\n * saved while updateDoc bypassed the client converter are plain maps rather\n * than compressed bytes\". Server code that reads `snapshot.get('nodes')` raw\n * therefore gets a Node `Buffer` for the compressed majority.\n *\n * That is a SILENT failure, not a loud one, which is why this exists as a\n * shared helper rather than a note. Every scan predicate in this library\n * walks the map with `Object.values(nodes)`; over a Buffer that yields the\n * individual byte NUMBERS, none of which has a `props` or a `componentId`, so\n * the loop completes and reports no matches. The endpoint answers \"used\n * nowhere\" — for `/api/hosts/where-used` an invitation to delete something a\n * live page renders, and for the media scan the sentence the AGL-1045 scope\n * confirmation quotes before telling an author it is safe to restrict an\n * asset.\n *\n * Returns `null` for absent AND for undecodable, logging the latter: a caller\n * skipping a document is the same shape either way, and a decode failure that\n * threw would fail the whole scan rather than one document.\n *\n * Every write path encodes, but the corpus does not: documents written before\n * a given path learned to are still plain maps and nothing migrates them.\n * Passing one through here is correct and is the point — a plain map returns\n * unchanged, so a reader never has to know which it has.\n *\n * The bytes arrive as a Node `Buffer` on the server and as a Firestore\n * `Bytes` on the CLIENT (AGL-1397), and only the first is an `ArrayBuffer`\n * view. `Bytes` is a wrapper — `decompress` has always accepted it via\n * `ByteSource`, but this helper used to route only views into `decompress`, so\n * a `Bytes` fell through to the plain-map branch and came back UNCHANGED.\n * That is the worst possible outcome for a client caller, because the wrapper\n * is walkable: its `_byteString.binaryString` is the msgpack payload held as a\n * latin-1 string, so `rewriteBindingTokensDeep` reads the page's text right\n * out of the encoded bytes, \"normalizes\" a token inside them, and hands back\n * `{_byteString: {binaryString: …}}` for something to write.\n *\n * A THIRD form arrives from outside Firestore: `{type: 'Buffer', data: […]}`,\n * which is what `JSON.stringify` makes of a Node `Buffer` (AGL-1391). Site\n * export bundles downloaded before that fix carry it, and it is the nastiest\n * of the three — an `ArrayBuffer` view survives this helper, but a envelope is\n * a plain object, so without this branch it returns UNCHANGED and every reader\n * downstream walks an object whose only keys are `type` and `data`.\n */\nexport function decodeStoredNodes<T = Record<string, any>>(\n raw: unknown,\n): T | null {\n if (raw === null || raw === undefined) return null\n const bytes = ArrayBuffer.isView(raw)\n ? raw\n : byteSource(raw) ?? bufferEnvelopeBytes(raw)\n if (bytes) {\n try {\n return decompress<T>(bytes)\n } catch (error) {\n // Undecodable nodes must never read as \"no references\".\n console.error('could not decode stored nodes', error)\n return null\n }\n }\n return raw as T\n}\n\n/**\n * Which live storage form a `nodes` field is in.\n *\n * `absent` covers both \"no field\" and a scalar, because the only two things a\n * caller does with either are skip the document or write a fresh tree.\n */\nexport type StoredNodesForm = 'bytes' | 'map' | 'absent'\n\n/**\n * Read the form off a stored field, so a partial update can write back the\n * way the document came out.\n *\n * Rewriting a compressed document as a plain map inflates it by roughly 1.4x,\n * which is the whole hazard this module exists to keep away from Firestore's\n * per-document ceiling. A writer that merges one field into a document it did\n * not fully read has no business changing the encoding of another.\n *\n * Recognises every form {@link decodeStoredNodes} does, and answers from the\n * same predicates, so \"what form is this\" and \"how do I read it\" can never\n * drift apart.\n */\nexport function storedNodesForm(raw: unknown): StoredNodesForm {\n if (raw === null || raw === undefined) return 'absent'\n if (ArrayBuffer.isView(raw)) return 'bytes'\n if (typeof raw !== 'object') return 'absent'\n if (byteSource(raw) || bufferEnvelopeBytes(raw)) return 'bytes'\n return 'map'\n}\n\n/**\n * A node map in the form it should be STORED in — msgpack bytes.\n *\n * The write-side twin of {@link decodeStoredNodes}, and deliberately in the\n * same file: a reader who finds one finds the other, which is what stops the\n * next write path from being added without an encoding.\n *\n * Returns a bare `Uint8Array` and knows NOTHING about Firestore, for the\n * reason `compress` documents — one value import of the client SDK's `Bytes`\n * pulls the whole Firestore client into the tenant bundle. The caller wraps:\n * `Bytes.fromUint8Array(...)` on the client SDK, `Buffer.from(...)` on the\n * Admin SDK, which is what each accepts for a bytes field.\n *\n * ALREADY-encoded input passes through rather than being encoded again. A\n * write path that copies a stored document — a version snapshot, an install\n * from a published artifact — receives whichever form that document held, and\n * msgpack of msgpack is a tree no reader can decode.\n *\n * Returns `null` for an absent field, so a caller can omit the key entirely\n * rather than writing an empty map over a real tree (AGL-1250).\n */\nexport function encodeStoredNodes(nodes: unknown): Uint8Array | null {\n if (nodes === null || nodes === undefined) return null\n if (ArrayBuffer.isView(nodes)) {\n // Offset and length, for the reason `decompress` documents: firebase-admin\n // hands back POOLED Buffers, so the whole backing ArrayBuffer is usually\n // somebody else's data.\n return new Uint8Array(nodes.buffer, nodes.byteOffset, nodes.byteLength)\n }\n if (typeof nodes !== 'object') return null\n const source = byteSource(nodes)\n if (source) return source.toUint8Array()\n const envelope = bufferEnvelopeBytes(nodes)\n if (envelope) return envelope\n return compress(nodes)\n}\n\n/**\n * The tree in the form the document already used.\n *\n * For the partial-update case: a writer that changes one field of a document\n * it did not create must not also change how `nodes` is encoded. Pass the\n * form read off the stored field and this hands back something to write.\n *\n * `absent` encodes, because a document with no stored form yet is a new one\n * and new documents are compressed.\n */\nexport function matchStoredNodesForm<T>(\n nodes: T,\n form: StoredNodesForm,\n): Uint8Array | T | null {\n return form === 'map' ? nodes : encodeStoredNodes(nodes)\n}\n\n/**\n * The client SDK's `Bytes`, structurally, or `null` for anything else.\n *\n * Matched on the method rather than the class so `firebase/firestore` stays\n * out of this library — the same reason `decompress` types its input as\n * `ByteSource`. A node map cannot collide: its values are node OBJECTS, never\n * functions.\n */\nfunction byteSource(raw: unknown): ByteSource | null {\n if (typeof raw !== 'object') return null\n return typeof (raw as ByteSource).toUint8Array === 'function'\n ? (raw as ByteSource)\n : null\n}\n\n/**\n * A JSON-serialized Node `Buffer`, or `null` for anything else.\n *\n * The test is deliberately exact — `type === 'Buffer'`, an array `data`, and\n * NOTHING else — because the alternative reading of this object is a node map\n * with nodes called `type` and `data`. That map cannot exist: a node map's\n * values are node objects, so `type` would have to hold the literal string\n * `'Buffer'` and `data` an array, at the same time, in the same document.\n */\nfunction bufferEnvelopeBytes(raw: unknown): Uint8Array | null {\n if (typeof raw !== 'object' || Array.isArray(raw)) return null\n const value = raw as { type?: unknown; data?: unknown }\n if (value.type !== 'Buffer' || !Array.isArray(value.data)) return null\n if (Object.keys(value).length !== 2) return null\n return Uint8Array.from(value.data as number[])\n}\n\nexport default decodeStoredNodes\n"],"names":["compress","decompress","decodeStoredNodes","raw","byteSource","undefined","bytes","ArrayBuffer","isView","bufferEnvelopeBytes","error","console","storedNodesForm","encodeStoredNodes","nodes","Uint8Array","buffer","byteOffset","byteLength","source","toUint8Array","envelope","matchStoredNodesForm","form","Array","isArray","value","type","data","Object","keys","length","from"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,QAAQ,QAAQ,gBAAY;AACrC,SAASC,UAAU,QAAyB,kBAAc;AAE1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+CC,GACD,OAAO,SAASC,kBACdC,GAAY;QAKRC;IAHJ,IAAID,QAAQ,QAAQA,QAAQE,WAAW,OAAO;IAC9C,MAAMC,QAAQC,YAAYC,MAAM,CAACL,OAC7BA,OACAC,cAAAA,WAAWD,gBAAXC,cAAmBK,oBAAoBN;IAC3C,IAAIG,OAAO;QACT,IAAI;YACF,OAAOL,WAAcK;QACvB,EAAE,OAAOI,OAAO;YACd,wDAAwD;YACxDC,QAAQD,KAAK,CAAC,iCAAiCA;YAC/C,OAAO;QACT;IACF;IACA,OAAOP;AACT;AAUA;;;;;;;;;;;;CAYC,GACD,OAAO,SAASS,gBAAgBT,GAAY;IAC1C,IAAIA,QAAQ,QAAQA,QAAQE,WAAW,OAAO;IAC9C,IAAIE,YAAYC,MAAM,CAACL,MAAM,OAAO;IACpC,IAAI,OAAOA,QAAQ,UAAU,OAAO;IACpC,IAAIC,WAAWD,QAAQM,oBAAoBN,MAAM,OAAO;IACxD,OAAO;AACT;AAEA;;;;;;;;;;;;;;;;;;;;CAoBC,GACD,OAAO,SAASU,kBAAkBC,KAAc;IAC9C,IAAIA,UAAU,QAAQA,UAAUT,WAAW,OAAO;IAClD,IAAIE,YAAYC,MAAM,CAACM,QAAQ;QAC7B,2EAA2E;QAC3E,yEAAyE;QACzE,wBAAwB;QACxB,OAAO,IAAIC,WAAWD,MAAME,MAAM,EAAEF,MAAMG,UAAU,EAAEH,MAAMI,UAAU;IACxE;IACA,IAAI,OAAOJ,UAAU,UAAU,OAAO;IACtC,MAAMK,SAASf,WAAWU;IAC1B,IAAIK,QAAQ,OAAOA,OAAOC,YAAY;IACtC,MAAMC,WAAWZ,oBAAoBK;IACrC,IAAIO,UAAU,OAAOA;IACrB,OAAOrB,SAASc;AAClB;AAEA;;;;;;;;;CASC,GACD,OAAO,SAASQ,qBACdR,KAAQ,EACRS,IAAqB;IAErB,OAAOA,SAAS,QAAQT,QAAQD,kBAAkBC;AACpD;AAEA;;;;;;;CAOC,GACD,SAASV,WAAWD,GAAY;IAC9B,IAAI,OAAOA,QAAQ,UAAU,OAAO;IACpC,OAAO,OAAO,AAACA,IAAmBiB,YAAY,KAAK,aAC9CjB,MACD;AACN;AAEA;;;;;;;;CAQC,GACD,SAASM,oBAAoBN,GAAY;IACvC,IAAI,OAAOA,QAAQ,YAAYqB,MAAMC,OAAO,CAACtB,MAAM,OAAO;IAC1D,MAAMuB,QAAQvB;IACd,IAAIuB,MAAMC,IAAI,KAAK,YAAY,CAACH,MAAMC,OAAO,CAACC,MAAME,IAAI,GAAG,OAAO;IAClE,IAAIC,OAAOC,IAAI,CAACJ,OAAOK,MAAM,KAAK,GAAG,OAAO;IAC5C,OAAOhB,WAAWiB,IAAI,CAACN,MAAME,IAAI;AACnC;AAEA,eAAe1B,kBAAiB"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * Remove every `undefined` value from a serialized node payload (AGL-1334).
19
+ *
20
+ * An editor form hands back its whole field set, so an optional attribute the
21
+ * author never set — or cleared — arrives as an OWN key whose value is
22
+ * `undefined` (the icon pickers do exactly this: `startIconPath` is written on
23
+ * every edit of a Button whose Start icon reads `(NONE)`). `undefined` is not
24
+ * a storable value, and the two besigner write paths disagreed about it in the
25
+ * worst possible way:
26
+ *
27
+ * - A **save** goes through a version-doc converter that msgpack-encodes the
28
+ * node map, and msgpack encodes an `undefined` member as nil — so the write
29
+ * succeeded and quietly persisted `startIconPath: null`. That null is the
30
+ * exact shape `dropClearedProps` has to defend against at RENDER time
31
+ * (AGL-1226), where it once 500'd every `/product/*` page.
32
+ * - A **publish** copies the same map onto the component document as a plain
33
+ * Firestore map, and `updateDoc()` rejects `undefined` outright:
34
+ * `Unsupported field value: undefined (found in field nodes.<id>.props.…)`.
35
+ *
36
+ * So the author saved, saw `UP TO DATE`, clicked Publish, and got a raw
37
+ * Firestore error — with every instance still rendering the old markup.
38
+ *
39
+ * Dropping the key is what "cleared" means for an optional prop: absent, so
40
+ * the component's own default applies. Not `null`, which is a value, and not
41
+ * `deleteField()`, which cannot appear inside a nested map written wholesale.
42
+ * Applied at the ONE place both write paths serialize from
43
+ * (`AglynNode.toJSON`), so save and publish agree by construction rather than
44
+ * by two strippers that can drift.
45
+ *
46
+ * `null`, `0`, `''` and `false` are kept — those are values an author can mean
47
+ * (and, unlike `undefined`, all four store fine).
48
+ *
49
+ * Recurses into plain objects and arrays only: a `Date`, a Firestore
50
+ * `Timestamp`, a `Bytes` or any other class instance is a leaf and is passed
51
+ * through untouched. An `undefined` array ELEMENT is dropped rather than
52
+ * held as a hole, because Firestore rejects those too and a node's arrays are
53
+ * id lists and sx layers, where a hole means nothing.
54
+ *
55
+ * Returns the input by reference when there is nothing to strip, so the common
56
+ * case allocates nothing and identity-based memoization is undisturbed.
57
+ */
58
+ export declare function stripUndefinedDeep<T>(value: T): T;
59
+ export default stripUndefinedDeep;
@@ -0,0 +1,95 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ const isPlainObject = (value)=>{
17
+ if (typeof value !== 'object' || value === null) return false;
18
+ const proto = Object.getPrototypeOf(value);
19
+ return proto === Object.prototype || proto === null;
20
+ };
21
+ /**
22
+ * Remove every `undefined` value from a serialized node payload (AGL-1334).
23
+ *
24
+ * An editor form hands back its whole field set, so an optional attribute the
25
+ * author never set — or cleared — arrives as an OWN key whose value is
26
+ * `undefined` (the icon pickers do exactly this: `startIconPath` is written on
27
+ * every edit of a Button whose Start icon reads `(NONE)`). `undefined` is not
28
+ * a storable value, and the two besigner write paths disagreed about it in the
29
+ * worst possible way:
30
+ *
31
+ * - A **save** goes through a version-doc converter that msgpack-encodes the
32
+ * node map, and msgpack encodes an `undefined` member as nil — so the write
33
+ * succeeded and quietly persisted `startIconPath: null`. That null is the
34
+ * exact shape `dropClearedProps` has to defend against at RENDER time
35
+ * (AGL-1226), where it once 500'd every `/product/*` page.
36
+ * - A **publish** copies the same map onto the component document as a plain
37
+ * Firestore map, and `updateDoc()` rejects `undefined` outright:
38
+ * `Unsupported field value: undefined (found in field nodes.<id>.props.…)`.
39
+ *
40
+ * So the author saved, saw `UP TO DATE`, clicked Publish, and got a raw
41
+ * Firestore error — with every instance still rendering the old markup.
42
+ *
43
+ * Dropping the key is what "cleared" means for an optional prop: absent, so
44
+ * the component's own default applies. Not `null`, which is a value, and not
45
+ * `deleteField()`, which cannot appear inside a nested map written wholesale.
46
+ * Applied at the ONE place both write paths serialize from
47
+ * (`AglynNode.toJSON`), so save and publish agree by construction rather than
48
+ * by two strippers that can drift.
49
+ *
50
+ * `null`, `0`, `''` and `false` are kept — those are values an author can mean
51
+ * (and, unlike `undefined`, all four store fine).
52
+ *
53
+ * Recurses into plain objects and arrays only: a `Date`, a Firestore
54
+ * `Timestamp`, a `Bytes` or any other class instance is a leaf and is passed
55
+ * through untouched. An `undefined` array ELEMENT is dropped rather than
56
+ * held as a hole, because Firestore rejects those too and a node's arrays are
57
+ * id lists and sx layers, where a hole means nothing.
58
+ *
59
+ * Returns the input by reference when there is nothing to strip, so the common
60
+ * case allocates nothing and identity-based memoization is undisturbed.
61
+ */ export function stripUndefinedDeep(value) {
62
+ if (Array.isArray(value)) {
63
+ let changed = false;
64
+ const next = [];
65
+ for (const item of value){
66
+ if (item === undefined) {
67
+ changed = true;
68
+ continue;
69
+ }
70
+ const stripped = stripUndefinedDeep(item);
71
+ if (stripped !== item) changed = true;
72
+ next.push(stripped);
73
+ }
74
+ return changed ? next : value;
75
+ }
76
+ if (isPlainObject(value)) {
77
+ let changed = false;
78
+ const next = {};
79
+ for (const key of Object.keys(value)){
80
+ const item = value[key];
81
+ if (item === undefined) {
82
+ changed = true;
83
+ continue;
84
+ }
85
+ const stripped = stripUndefinedDeep(item);
86
+ if (stripped !== item) changed = true;
87
+ next[key] = stripped;
88
+ }
89
+ return changed ? next : value;
90
+ }
91
+ return value;
92
+ }
93
+ export default stripUndefinedDeep;
94
+
95
+ //# sourceMappingURL=strip-undefined.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/strip-undefined.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\nconst isPlainObject = (value: unknown): value is Record<string, unknown> => {\n if (typeof value !== 'object' || value === null) return false\n const proto = Object.getPrototypeOf(value)\n return proto === Object.prototype || proto === null\n}\n\n/**\n * Remove every `undefined` value from a serialized node payload (AGL-1334).\n *\n * An editor form hands back its whole field set, so an optional attribute the\n * author never set — or cleared — arrives as an OWN key whose value is\n * `undefined` (the icon pickers do exactly this: `startIconPath` is written on\n * every edit of a Button whose Start icon reads `(NONE)`). `undefined` is not\n * a storable value, and the two besigner write paths disagreed about it in the\n * worst possible way:\n *\n * - A **save** goes through a version-doc converter that msgpack-encodes the\n * node map, and msgpack encodes an `undefined` member as nil — so the write\n * succeeded and quietly persisted `startIconPath: null`. That null is the\n * exact shape `dropClearedProps` has to defend against at RENDER time\n * (AGL-1226), where it once 500'd every `/product/*` page.\n * - A **publish** copies the same map onto the component document as a plain\n * Firestore map, and `updateDoc()` rejects `undefined` outright:\n * `Unsupported field value: undefined (found in field nodes.<id>.props.…)`.\n *\n * So the author saved, saw `UP TO DATE`, clicked Publish, and got a raw\n * Firestore error — with every instance still rendering the old markup.\n *\n * Dropping the key is what \"cleared\" means for an optional prop: absent, so\n * the component's own default applies. Not `null`, which is a value, and not\n * `deleteField()`, which cannot appear inside a nested map written wholesale.\n * Applied at the ONE place both write paths serialize from\n * (`AglynNode.toJSON`), so save and publish agree by construction rather than\n * by two strippers that can drift.\n *\n * `null`, `0`, `''` and `false` are kept — those are values an author can mean\n * (and, unlike `undefined`, all four store fine).\n *\n * Recurses into plain objects and arrays only: a `Date`, a Firestore\n * `Timestamp`, a `Bytes` or any other class instance is a leaf and is passed\n * through untouched. An `undefined` array ELEMENT is dropped rather than\n * held as a hole, because Firestore rejects those too and a node's arrays are\n * id lists and sx layers, where a hole means nothing.\n *\n * Returns the input by reference when there is nothing to strip, so the common\n * case allocates nothing and identity-based memoization is undisturbed.\n */\nexport function stripUndefinedDeep<T>(value: T): T {\n if (Array.isArray(value)) {\n let changed = false\n const next: unknown[] = []\n for (const item of value) {\n if (item === undefined) {\n changed = true\n continue\n }\n const stripped = stripUndefinedDeep(item)\n if (stripped !== item) changed = true\n next.push(stripped)\n }\n return (changed ? next : value) as T\n }\n\n if (isPlainObject(value)) {\n let changed = false\n const next: Record<string, unknown> = {}\n for (const key of Object.keys(value)) {\n const item = value[key]\n if (item === undefined) {\n changed = true\n continue\n }\n const stripped = stripUndefinedDeep(item)\n if (stripped !== item) changed = true\n next[key] = stripped\n }\n return (changed ? next : value) as T\n }\n\n return value\n}\n\nexport default stripUndefinedDeep\n"],"names":["isPlainObject","value","proto","Object","getPrototypeOf","prototype","stripUndefinedDeep","Array","isArray","changed","next","item","undefined","stripped","push","key","keys"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,MAAMA,gBAAgB,CAACC;IACrB,IAAI,OAAOA,UAAU,YAAYA,UAAU,MAAM,OAAO;IACxD,MAAMC,QAAQC,OAAOC,cAAc,CAACH;IACpC,OAAOC,UAAUC,OAAOE,SAAS,IAAIH,UAAU;AACjD;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwCC,GACD,OAAO,SAASI,mBAAsBL,KAAQ;IAC5C,IAAIM,MAAMC,OAAO,CAACP,QAAQ;QACxB,IAAIQ,UAAU;QACd,MAAMC,OAAkB,EAAE;QAC1B,KAAK,MAAMC,QAAQV,MAAO;YACxB,IAAIU,SAASC,WAAW;gBACtBH,UAAU;gBACV;YACF;YACA,MAAMI,WAAWP,mBAAmBK;YACpC,IAAIE,aAAaF,MAAMF,UAAU;YACjCC,KAAKI,IAAI,CAACD;QACZ;QACA,OAAQJ,UAAUC,OAAOT;IAC3B;IAEA,IAAID,cAAcC,QAAQ;QACxB,IAAIQ,UAAU;QACd,MAAMC,OAAgC,CAAC;QACvC,KAAK,MAAMK,OAAOZ,OAAOa,IAAI,CAACf,OAAQ;YACpC,MAAMU,OAAOV,KAAK,CAACc,IAAI;YACvB,IAAIJ,SAASC,WAAW;gBACtBH,UAAU;gBACV;YACF;YACA,MAAMI,WAAWP,mBAAmBK;YACpC,IAAIE,aAAaF,MAAMF,UAAU;YACjCC,IAAI,CAACK,IAAI,GAAGF;QACd;QACA,OAAQJ,UAAUC,OAAOT;IAC3B;IAEA,OAAOA;AACT;AAEA,eAAeK,mBAAkB"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * Whether THIS deployment is the live one.
19
+ *
20
+ * Derived from `STRIPE_SECRET_KEY`'s prefix, with an explicit
21
+ * `STRIPE_LIVEMODE=true|false` override that wins when set. Note the
22
+ * asymmetry, which is deliberate: only `sk_live_` yields `true`. An unset or
23
+ * unrecognised key is NOT a live deployment, because a deployment with no
24
+ * Stripe secret key cannot be charging anyone.
25
+ */
26
+ export declare function deploymentLivemode(env?: Partial<Record<string, string>>): boolean;
27
+ /**
28
+ * Whether a Stripe object id belongs to TEST mode.
29
+ *
30
+ * Stripe stamps the environment into the id itself — `cs_test_…`, `pi_test_…`,
31
+ * `in_test_…` — and that is the only signal a stored document carries when
32
+ * nothing recorded `livemode` beside it.
33
+ *
34
+ * ONE NAMED PLACE, and that is the point of the function rather than a
35
+ * `.startsWith()` at each call site. This is STRIPE'S convention, not our
36
+ * data: it is a fact about a third party's id format that we happen to depend
37
+ * on, so it needs somewhere to be documented, somewhere to be changed, and
38
+ * somewhere a reader can find every consumer of it. A recorded `livemode`
39
+ * beats it and callers should prefer one; this is the fallback for documents
40
+ * written before anything recorded the fact.
41
+ *
42
+ * Strict prefix match on the segment, never `includes('test')`: a live id can
43
+ * contain the letters `test` anywhere in its random tail, and a substring
44
+ * check would read a real sale as a rehearsal — the direction that erases
45
+ * revenue.
46
+ */
47
+ export declare function stripeIdIsTestMode(id: unknown): boolean;
@@ -0,0 +1,70 @@
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
+ * Which Stripe world THIS deployment lives in (AGL-2040, shared in AGL-2486).
18
+ *
19
+ * Lifted out of `apps/console/utils/server/stripe-livemode.ts` verbatim so a
20
+ * LIBRARY can ask the question too — `org-billing.ts` now keys the stored
21
+ * Stripe customer id by mode, and a lib cannot import from an app. That file
22
+ * re-exports this one, so the webhook's livemode gate and its spec are
23
+ * untouched and there is still exactly ONE definition of "are we live".
24
+ *
25
+ * Duplicating the `sk_live_` inference instead would have put a second answer
26
+ * to a money-path question in the tree, and the two would drift the first time
27
+ * the override was extended.
28
+ */ /** Explicit ops override, for the case where key-prefix inference is wrong. */ const LIVEMODE_OVERRIDE = 'STRIPE_LIVEMODE';
29
+ /**
30
+ * Whether THIS deployment is the live one.
31
+ *
32
+ * Derived from `STRIPE_SECRET_KEY`'s prefix, with an explicit
33
+ * `STRIPE_LIVEMODE=true|false` override that wins when set. Note the
34
+ * asymmetry, which is deliberate: only `sk_live_` yields `true`. An unset or
35
+ * unrecognised key is NOT a live deployment, because a deployment with no
36
+ * Stripe secret key cannot be charging anyone.
37
+ */ export function deploymentLivemode(env = process.env) {
38
+ var _env_STRIPE_SECRET_KEY;
39
+ const override = env[LIVEMODE_OVERRIDE];
40
+ if (override === 'true') return true;
41
+ if (override === 'false') return false;
42
+ return String((_env_STRIPE_SECRET_KEY = env['STRIPE_SECRET_KEY']) != null ? _env_STRIPE_SECRET_KEY : '').startsWith('sk_live_');
43
+ }
44
+ /**
45
+ * Whether a Stripe object id belongs to TEST mode.
46
+ *
47
+ * Stripe stamps the environment into the id itself — `cs_test_…`, `pi_test_…`,
48
+ * `in_test_…` — and that is the only signal a stored document carries when
49
+ * nothing recorded `livemode` beside it.
50
+ *
51
+ * ONE NAMED PLACE, and that is the point of the function rather than a
52
+ * `.startsWith()` at each call site. This is STRIPE'S convention, not our
53
+ * data: it is a fact about a third party's id format that we happen to depend
54
+ * on, so it needs somewhere to be documented, somewhere to be changed, and
55
+ * somewhere a reader can find every consumer of it. A recorded `livemode`
56
+ * beats it and callers should prefer one; this is the fallback for documents
57
+ * written before anything recorded the fact.
58
+ *
59
+ * Strict prefix match on the segment, never `includes('test')`: a live id can
60
+ * contain the letters `test` anywhere in its random tail, and a substring
61
+ * check would read a real sale as a rehearsal — the direction that erases
62
+ * revenue.
63
+ */ export function stripeIdIsTestMode(id) {
64
+ const value = typeof id === 'string' ? id.trim() : '';
65
+ if (!value) return false;
66
+ // `cs_test_…`, and also the `_test_` infix Stripe uses on some prefixed ids.
67
+ return /^[a-z]+_test_/.test(value);
68
+ }
69
+
70
+ //# sourceMappingURL=stripe-deployment-mode.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/stripe-deployment-mode.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 * Which Stripe world THIS deployment lives in (AGL-2040, shared in AGL-2486).\n *\n * Lifted out of `apps/console/utils/server/stripe-livemode.ts` verbatim so a\n * LIBRARY can ask the question too — `org-billing.ts` now keys the stored\n * Stripe customer id by mode, and a lib cannot import from an app. That file\n * re-exports this one, so the webhook's livemode gate and its spec are\n * untouched and there is still exactly ONE definition of \"are we live\".\n *\n * Duplicating the `sk_live_` inference instead would have put a second answer\n * to a money-path question in the tree, and the two would drift the first time\n * the override was extended.\n */\n\n/** Explicit ops override, for the case where key-prefix inference is wrong. */\nconst LIVEMODE_OVERRIDE = 'STRIPE_LIVEMODE'\n\n/**\n * Whether THIS deployment is the live one.\n *\n * Derived from `STRIPE_SECRET_KEY`'s prefix, with an explicit\n * `STRIPE_LIVEMODE=true|false` override that wins when set. Note the\n * asymmetry, which is deliberate: only `sk_live_` yields `true`. An unset or\n * unrecognised key is NOT a live deployment, because a deployment with no\n * Stripe secret key cannot be charging anyone.\n */\nexport function deploymentLivemode(\n env: Partial<Record<string, string>> = process.env,\n): boolean {\n const override = env[LIVEMODE_OVERRIDE]\n if (override === 'true') return true\n if (override === 'false') return false\n return String(env['STRIPE_SECRET_KEY'] ?? '').startsWith('sk_live_')\n}\n\n/**\n * Whether a Stripe object id belongs to TEST mode.\n *\n * Stripe stamps the environment into the id itself — `cs_test_…`, `pi_test_…`,\n * `in_test_…` — and that is the only signal a stored document carries when\n * nothing recorded `livemode` beside it.\n *\n * ONE NAMED PLACE, and that is the point of the function rather than a\n * `.startsWith()` at each call site. This is STRIPE'S convention, not our\n * data: it is a fact about a third party's id format that we happen to depend\n * on, so it needs somewhere to be documented, somewhere to be changed, and\n * somewhere a reader can find every consumer of it. A recorded `livemode`\n * beats it and callers should prefer one; this is the fallback for documents\n * written before anything recorded the fact.\n *\n * Strict prefix match on the segment, never `includes('test')`: a live id can\n * contain the letters `test` anywhere in its random tail, and a substring\n * check would read a real sale as a rehearsal — the direction that erases\n * revenue.\n */\nexport function stripeIdIsTestMode(id: unknown): boolean {\n const value = typeof id === 'string' ? id.trim() : ''\n if (!value) return false\n // `cs_test_…`, and also the `_test_` infix Stripe uses on some prefixed ids.\n return /^[a-z]+_test_/.test(value)\n}\n"],"names":["LIVEMODE_OVERRIDE","deploymentLivemode","env","process","override","String","startsWith","stripeIdIsTestMode","id","value","trim","test"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;CAYC,GAED,6EAA6E,GAC7E,MAAMA,oBAAoB;AAE1B;;;;;;;;CAQC,GACD,OAAO,SAASC,mBACdC,MAAuCC,QAAQD,GAAG;QAKpCA;IAHd,MAAME,WAAWF,GAAG,CAACF,kBAAkB;IACvC,IAAII,aAAa,QAAQ,OAAO;IAChC,IAAIA,aAAa,SAAS,OAAO;IACjC,OAAOC,QAAOH,yBAAAA,GAAG,CAAC,oBAAoB,YAAxBA,yBAA4B,IAAII,UAAU,CAAC;AAC3D;AAEA;;;;;;;;;;;;;;;;;;;CAmBC,GACD,OAAO,SAASC,mBAAmBC,EAAW;IAC5C,MAAMC,QAAQ,OAAOD,OAAO,WAAWA,GAAGE,IAAI,KAAK;IACnD,IAAI,CAACD,OAAO,OAAO;IACnB,6EAA6E;IAC7E,OAAO,gBAAgBE,IAAI,CAACF;AAC9B"}