@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,279 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ /**
3
+ * @license
4
+ * Copyright 2026 Aglyn LLC
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */ /**
18
+ * READING A SPREADSHEET INTO A CRM COLLECTION — the part that does not care
19
+ * which collection (AGL-2621).
20
+ *
21
+ * The contact import (AGL-2602) settled how a file becomes records: a
22
+ * header row is matched against an alias table to PROPOSE a column → field
23
+ * mapping, the operator corrects it, one line is mapped to a raw row of
24
+ * verbatim strings, and the server judges each row and tallies what it did.
25
+ * A companies file goes through the same three stages with a different
26
+ * field list, so the stages live here, parametric over the field union, and
27
+ * the CRM plugin's contact and company importers each supply their vocabulary
28
+ * — the fields, their aliases, their labels — and nothing else.
29
+ *
30
+ * ## A custom target is `custom:<key>`
31
+ *
32
+ * A column may also map to a custom field the merchant defined, which has
33
+ * no standard name. The target is one string rather than a discriminated
34
+ * object because it is the VALUE of a select control and travels through a
35
+ * form; the prefix is what tells the two apart on the way back.
36
+ *
37
+ * ## The ceilings are shared numbers
38
+ *
39
+ * One file, one request and one preview are bounded the same way for every
40
+ * collection, because the bounds are about the browser's memory and a
41
+ * console request's budget, not about what the rows hold.
42
+ */ /**
43
+ * The most rows one uploaded file may carry.
44
+ *
45
+ * A bound on the work one import represents and on the memory the browser
46
+ * holds while mapping it — five thousand rows of a wide export is already
47
+ * several megabytes of cells in a tab. A larger list is split and imported
48
+ * in pieces; the drawer says so on the file, before a single row is sent.
49
+ */ export const CSV_IMPORT_MAX_ROWS = 5000;
50
+ /**
51
+ * Rows per request.
52
+ *
53
+ * Each row costs the server a lookup and a write, plus whatever a name it
54
+ * has not seen in this request costs to resolve; two hundred of those sit
55
+ * comfortably inside a console request's budget and give the progress bar
56
+ * twenty-five steps on the largest file the drawer accepts.
57
+ */ export const CSV_IMPORT_CHUNK_SIZE = 200;
58
+ /**
59
+ * The most bytes one request may carry, checked before the body is judged.
60
+ *
61
+ * Two hundred rows of a wide export with long values is well under a
62
+ * megabyte; two megabytes is the line past which a request is not a chunk
63
+ * of a file but something else being pushed through this door.
64
+ */ export const CSV_IMPORT_MAX_BODY_BYTES = 2000000;
65
+ /** How many mapped rows the drawer shows before the operator commits. */ export const CSV_IMPORT_PREVIEW_ROWS = 10;
66
+ /** The prefix a custom-field target id carries. */ const CUSTOM_TARGET_PREFIX = 'custom:';
67
+ /** The custom-field target id for a definition key. */ export function customImportTarget(key) {
68
+ return `${CUSTOM_TARGET_PREFIX}${key}`;
69
+ }
70
+ /** The definition key a custom target names, or `null` for a standard field. */ export function customImportTargetKey(target) {
71
+ return target.startsWith(CUSTOM_TARGET_PREFIX) ? target.slice(CUSTOM_TARGET_PREFIX.length) : null;
72
+ }
73
+ /**
74
+ * Normalizes a header cell for alias matching.
75
+ *
76
+ * Underscores, dots and hyphens all become one space, so `e-mail`,
77
+ * `email_address` and `Email Address` compare as the words they are. The
78
+ * alias tables are written in the human spelling and pass through the same
79
+ * function, so a table stays readable and the comparison stays exact.
80
+ */ export function importHeaderKey(value) {
81
+ return String(value != null ? value : '').trim().toLowerCase().replace(/[_.\-/]+/g, ' ').replace(/\s+/g, ' ').trim();
82
+ }
83
+ /** An alias table, normalized once through {@link importHeaderKey}. */ export function importAliasKeys(fields, aliases) {
84
+ const keys = {};
85
+ for (const field of fields){
86
+ keys[field] = new Set(aliases[field].map(importHeaderKey));
87
+ }
88
+ return keys;
89
+ }
90
+ export function guessImportMapping(columns, fields, aliasKeys, customFields = []) {
91
+ const mapping = {};
92
+ const taken = new Set();
93
+ const customByHeader = new Map();
94
+ for (const field of customFields){
95
+ customByHeader.set(importHeaderKey(field.label), field.key);
96
+ customByHeader.set(importHeaderKey(field.key), field.key);
97
+ }
98
+ columns.forEach((column, index)=>{
99
+ const key = importHeaderKey(column);
100
+ if (!key) return;
101
+ const customKey = customByHeader.get(key);
102
+ if (customKey) {
103
+ const target = customImportTarget(customKey);
104
+ if (!taken.has(target)) {
105
+ mapping[index] = target;
106
+ taken.add(target);
107
+ }
108
+ return;
109
+ }
110
+ for (const field of fields){
111
+ if (taken.has(field)) continue;
112
+ if (aliasKeys[field].has(key)) {
113
+ mapping[index] = field;
114
+ taken.add(field);
115
+ return;
116
+ }
117
+ }
118
+ });
119
+ return mapping;
120
+ }
121
+ /**
122
+ * One parsed line under a mapping: the cells the mapping selected, under the
123
+ * field they were mapped to, verbatim, with custom values gathered under
124
+ * `custom` by definition key. Empty cells are left absent.
125
+ */ export function mapImportRow(cells, mapping) {
126
+ const standard = {};
127
+ const custom = {};
128
+ for (const [indexText, target] of Object.entries(mapping)){
129
+ var _cells_Number;
130
+ const value = String((_cells_Number = cells[Number(indexText)]) != null ? _cells_Number : '');
131
+ if (!value.trim()) continue;
132
+ const customKey = customImportTargetKey(target);
133
+ if (customKey) {
134
+ custom[customKey] = value;
135
+ } else {
136
+ standard[target] = value;
137
+ }
138
+ }
139
+ return Object.keys(custom).length ? _extends({}, standard, {
140
+ custom
141
+ }) : standard;
142
+ }
143
+ /**
144
+ * A tag cell as the tags it names.
145
+ *
146
+ * `|` or `,` separated — the CSV export writes `|`, most other products
147
+ * write `,` — lowercased and trimmed like a record's own tag field, so an
148
+ * imported `VIP` and a typed `vip` are one tag and not two.
149
+ */ export function parseImportTags(value, max) {
150
+ const parts = Array.isArray(value) ? value.map((entry)=>String(entry != null ? entry : '')) : String(value != null ? value : '').split(/[|,]/);
151
+ return [
152
+ ...new Set(parts.map((tag)=>tag.trim().toLowerCase()).filter(Boolean))
153
+ ].slice(0, max);
154
+ }
155
+ /**
156
+ * A yes/no cell as a boolean, or `null` when it is neither.
157
+ *
158
+ * The affirmatives are the ones consent and checkbox columns actually
159
+ * carry; the negatives are listed so that an explicit `no` is a `false`
160
+ * rather than an unreadable value that gets reported as dropped.
161
+ */ export function parseImportFlag(value) {
162
+ if (typeof value === 'boolean') return value;
163
+ if (typeof value === 'number') return value === 1 ? true : value === 0 ? false : null;
164
+ const text = String(value != null ? value : '').trim().toLowerCase();
165
+ if ([
166
+ 'yes',
167
+ 'y',
168
+ 'true',
169
+ '1',
170
+ 'on',
171
+ 'subscribed',
172
+ 'opted in',
173
+ 'opted-in'
174
+ ].includes(text)) {
175
+ return true;
176
+ }
177
+ if ([
178
+ 'no',
179
+ 'n',
180
+ 'false',
181
+ '0',
182
+ 'off',
183
+ 'unsubscribed',
184
+ ''
185
+ ].includes(text)) {
186
+ return false;
187
+ }
188
+ return null;
189
+ }
190
+ /** A cell as trimmed text capped at `max`, or `undefined` when blank. */ export function importTextValue(value, max) {
191
+ const text = String(value != null ? value : '').trim().slice(0, max);
192
+ return text || undefined;
193
+ }
194
+ /** A CSV cell, quoted only when it has to be. */ export function csvCell(value) {
195
+ const text = String(value != null ? value : '');
196
+ return /[",\r\n]/.test(text) ? `"${text.replace(/"/g, '""')}"` : text;
197
+ }
198
+ /**
199
+ * A whole CSV — the header, then one line per row — through {@link csvCell}.
200
+ *
201
+ * The one serializer for every CSV the console writes: each CRM section's
202
+ * export, the skipped-rows file an import hands back and each report
203
+ * table's export.
204
+ * Quoting is decided in {@link csvCell} and nowhere else — a cell holding a
205
+ * comma, a quote or a line break is wrapped in quotes with its quotes
206
+ * doubled, no other cell is touched, and a `null` or `undefined` cell is
207
+ * empty rather than the word — so that a report's file and a contacts file
208
+ * open the same way in a spreadsheet.
209
+ */ export function csvDocument(header, rows) {
210
+ return [
211
+ header,
212
+ ...rows
213
+ ].map((line)=>line.map(csvCell).join(',')).join('\n');
214
+ }
215
+ /**
216
+ * The skipped rows as a file the operator can fix and re-import.
217
+ *
218
+ * The original columns verbatim plus a trailing `Skipped because` column,
219
+ * so the file round-trips: correct the cell, delete the last column or
220
+ * leave it unmapped, and import it again.
221
+ */ export function importSkippedCsv(columns, entries, labels) {
222
+ return csvDocument([
223
+ ...columns,
224
+ 'Skipped because'
225
+ ], entries.map((entry)=>{
226
+ var _labels_entry_reason;
227
+ return [
228
+ ...columns.map((_column, index)=>{
229
+ var _entry_cells_index;
230
+ return (_entry_cells_index = entry.cells[index]) != null ? _entry_cells_index : '';
231
+ }),
232
+ (_labels_entry_reason = labels[entry.reason]) != null ? _labels_entry_reason : entry.reason
233
+ ];
234
+ }));
235
+ }
236
+ /** An empty tally, for the drawer to fold chunk results into. */ export function emptyImportResult() {
237
+ return {
238
+ received: 0,
239
+ created: 0,
240
+ merged: 0,
241
+ skipped: [],
242
+ dropped: {},
243
+ ownersUnresolved: []
244
+ };
245
+ }
246
+ /**
247
+ * Two results as one.
248
+ *
249
+ * `offset` is where the chunk started in the file, so a skipped row's index
250
+ * comes back as its position in the FILE rather than in the request — which
251
+ * is what the download of skipped rows has to look up.
252
+ */ export function mergeImportResults(total, chunk, offset = 0) {
253
+ var _chunk_dropped, _chunk_received, _chunk_created, _chunk_merged, _chunk_skipped, _chunk_ownersUnresolved;
254
+ const dropped = _extends({}, total.dropped);
255
+ for (const [field, count] of Object.entries((_chunk_dropped = chunk.dropped) != null ? _chunk_dropped : {})){
256
+ var _dropped_field;
257
+ dropped[field] = ((_dropped_field = dropped[field]) != null ? _dropped_field : 0) + Number(count != null ? count : 0);
258
+ }
259
+ return {
260
+ received: total.received + Number((_chunk_received = chunk.received) != null ? _chunk_received : 0),
261
+ created: total.created + Number((_chunk_created = chunk.created) != null ? _chunk_created : 0),
262
+ merged: total.merged + Number((_chunk_merged = chunk.merged) != null ? _chunk_merged : 0),
263
+ skipped: [
264
+ ...total.skipped,
265
+ ...((_chunk_skipped = chunk.skipped) != null ? _chunk_skipped : []).map((entry)=>_extends({}, entry, {
266
+ index: Number(entry.index) + offset
267
+ }))
268
+ ],
269
+ dropped,
270
+ ownersUnresolved: [
271
+ ...new Set([
272
+ ...total.ownersUnresolved,
273
+ ...(_chunk_ownersUnresolved = chunk.ownersUnresolved) != null ? _chunk_ownersUnresolved : []
274
+ ])
275
+ ]
276
+ };
277
+ }
278
+
279
+ //# sourceMappingURL=csv-import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/csv-import.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 * READING A SPREADSHEET INTO A CRM COLLECTION — the part that does not care\n * which collection (AGL-2621).\n *\n * The contact import (AGL-2602) settled how a file becomes records: a\n * header row is matched against an alias table to PROPOSE a column → field\n * mapping, the operator corrects it, one line is mapped to a raw row of\n * verbatim strings, and the server judges each row and tallies what it did.\n * A companies file goes through the same three stages with a different\n * field list, so the stages live here, parametric over the field union, and\n * the CRM plugin's contact and company importers each supply their vocabulary\n * — the fields, their aliases, their labels — and nothing else.\n *\n * ## A custom target is `custom:<key>`\n *\n * A column may also map to a custom field the merchant defined, which has\n * no standard name. The target is one string rather than a discriminated\n * object because it is the VALUE of a select control and travels through a\n * form; the prefix is what tells the two apart on the way back.\n *\n * ## The ceilings are shared numbers\n *\n * One file, one request and one preview are bounded the same way for every\n * collection, because the bounds are about the browser's memory and a\n * console request's budget, not about what the rows hold.\n */\n\n/**\n * The most rows one uploaded file may carry.\n *\n * A bound on the work one import represents and on the memory the browser\n * holds while mapping it — five thousand rows of a wide export is already\n * several megabytes of cells in a tab. A larger list is split and imported\n * in pieces; the drawer says so on the file, before a single row is sent.\n */\nexport const CSV_IMPORT_MAX_ROWS = 5_000\n\n/**\n * Rows per request.\n *\n * Each row costs the server a lookup and a write, plus whatever a name it\n * has not seen in this request costs to resolve; two hundred of those sit\n * comfortably inside a console request's budget and give the progress bar\n * twenty-five steps on the largest file the drawer accepts.\n */\nexport const CSV_IMPORT_CHUNK_SIZE = 200\n\n/**\n * The most bytes one request may carry, checked before the body is judged.\n *\n * Two hundred rows of a wide export with long values is well under a\n * megabyte; two megabytes is the line past which a request is not a chunk\n * of a file but something else being pushed through this door.\n */\nexport const CSV_IMPORT_MAX_BODY_BYTES = 2_000_000\n\n/** How many mapped rows the drawer shows before the operator commits. */\nexport const CSV_IMPORT_PREVIEW_ROWS = 10\n\n/** The prefix a custom-field target id carries. */\nconst CUSTOM_TARGET_PREFIX = 'custom:'\n\n/** The custom-field target id for a definition key. */\nexport function customImportTarget(key: string): `custom:${string}` {\n return `${CUSTOM_TARGET_PREFIX}${key}`\n}\n\n/** The definition key a custom target names, or `null` for a standard field. */\nexport function customImportTargetKey(target: string): string | null {\n return target.startsWith(CUSTOM_TARGET_PREFIX)\n ? target.slice(CUSTOM_TARGET_PREFIX.length)\n : null\n}\n\n/**\n * Normalizes a header cell for alias matching.\n *\n * Underscores, dots and hyphens all become one space, so `e-mail`,\n * `email_address` and `Email Address` compare as the words they are. The\n * alias tables are written in the human spelling and pass through the same\n * function, so a table stays readable and the comparison stays exact.\n */\nexport function importHeaderKey(value: unknown): string {\n return String(value ?? '')\n .trim()\n .toLowerCase()\n .replace(/[_.\\-/]+/g, ' ')\n .replace(/\\s+/g, ' ')\n .trim()\n}\n\n/** An alias table, normalized once through {@link importHeaderKey}. */\nexport function importAliasKeys<F extends string>(\n fields: readonly F[],\n aliases: Record<F, readonly string[]>,\n): Record<F, ReadonlySet<string>> {\n const keys = {} as Record<F, ReadonlySet<string>>\n for (const field of fields) {\n keys[field] = new Set(aliases[field].map(importHeaderKey))\n }\n return keys\n}\n\n/**\n * A proposed mapping from a file's header row.\n *\n * Custom fields win over standard aliases when a header matches a\n * definition's label or key exactly — a merchant who defined a field called\n * \"Status\" meant THEIR status, not our lifecycle stage. Each target is\n * taken at most once, by the first column that claims it, so a file with two\n * columns named \"Email\" maps the first and leaves the second for the\n * operator to decide.\n */\nexport function guessImportMapping<F extends string>(\n columns: readonly string[],\n fields: readonly F[],\n aliasKeys: Record<F, ReadonlySet<string>>,\n): Record<number, F>\nexport function guessImportMapping<F extends string>(\n columns: readonly string[],\n fields: readonly F[],\n aliasKeys: Record<F, ReadonlySet<string>>,\n customFields: readonly { key: string; label: string }[],\n): Record<number, F | `custom:${string}`>\nexport function guessImportMapping<F extends string>(\n columns: readonly string[],\n fields: readonly F[],\n aliasKeys: Record<F, ReadonlySet<string>>,\n customFields: readonly { key: string; label: string }[] = [],\n): Record<number, F | `custom:${string}`> {\n const mapping: Record<number, F | `custom:${string}`> = {}\n const taken = new Set<string>()\n const customByHeader = new Map<string, string>()\n for (const field of customFields) {\n customByHeader.set(importHeaderKey(field.label), field.key)\n customByHeader.set(importHeaderKey(field.key), field.key)\n }\n columns.forEach((column, index) => {\n const key = importHeaderKey(column)\n if (!key) return\n const customKey = customByHeader.get(key)\n if (customKey) {\n const target = customImportTarget(customKey)\n if (!taken.has(target)) {\n mapping[index] = target\n taken.add(target)\n }\n return\n }\n for (const field of fields) {\n if (taken.has(field)) continue\n if (aliasKeys[field].has(key)) {\n mapping[index] = field\n taken.add(field)\n return\n }\n }\n })\n return mapping\n}\n\n/**\n * One parsed line under a mapping: the cells the mapping selected, under the\n * field they were mapped to, verbatim, with custom values gathered under\n * `custom` by definition key. Empty cells are left absent.\n */\nexport function mapImportRow<F extends string>(\n cells: readonly string[],\n mapping: Record<number, F | `custom:${string}`>,\n): Partial<Record<F, string>> & { custom?: Record<string, string> } {\n const standard: Partial<Record<F, string>> = {}\n const custom: Record<string, string> = {}\n for (const [indexText, target] of Object.entries(mapping)) {\n const value = String(cells[Number(indexText)] ?? '')\n if (!value.trim()) continue\n const customKey = customImportTargetKey(target)\n if (customKey) {\n custom[customKey] = value\n } else {\n standard[target as F] = value\n }\n }\n return Object.keys(custom).length ? { ...standard, custom } : standard\n}\n\n/**\n * A tag cell as the tags it names.\n *\n * `|` or `,` separated — the CSV export writes `|`, most other products\n * write `,` — lowercased and trimmed like a record's own tag field, so an\n * imported `VIP` and a typed `vip` are one tag and not two.\n */\nexport function parseImportTags(value: unknown, max: number): string[] {\n const parts = Array.isArray(value)\n ? value.map((entry) => String(entry ?? ''))\n : String(value ?? '').split(/[|,]/)\n return [\n ...new Set(parts.map((tag) => tag.trim().toLowerCase()).filter(Boolean)),\n ].slice(0, max)\n}\n\n/**\n * A yes/no cell as a boolean, or `null` when it is neither.\n *\n * The affirmatives are the ones consent and checkbox columns actually\n * carry; the negatives are listed so that an explicit `no` is a `false`\n * rather than an unreadable value that gets reported as dropped.\n */\nexport function parseImportFlag(value: unknown): boolean | null {\n if (typeof value === 'boolean') return value\n if (typeof value === 'number') return value === 1 ? true : value === 0 ? false : null\n const text = String(value ?? '')\n .trim()\n .toLowerCase()\n if (['yes', 'y', 'true', '1', 'on', 'subscribed', 'opted in', 'opted-in'].includes(text)) {\n return true\n }\n if (['no', 'n', 'false', '0', 'off', 'unsubscribed', ''].includes(text)) {\n return false\n }\n return null\n}\n\n/** A cell as trimmed text capped at `max`, or `undefined` when blank. */\nexport function importTextValue(value: unknown, max: number): string | undefined {\n const text = String(value ?? '')\n .trim()\n .slice(0, max)\n return text || undefined\n}\n\n/** A cell the file carried that could not be read as the field it was mapped to. */\nexport interface ImportDroppedValue {\n /** The standard field name, or `custom:<key>`. */\n field: string\n value: string\n}\n\n/** A CSV cell, quoted only when it has to be. */\nexport function csvCell(value: unknown): string {\n const text = String(value ?? '')\n return /[\",\\r\\n]/.test(text) ? `\"${text.replace(/\"/g, '\"\"')}\"` : text\n}\n\n/**\n * A whole CSV — the header, then one line per row — through {@link csvCell}.\n *\n * The one serializer for every CSV the console writes: each CRM section's\n * export, the skipped-rows file an import hands back and each report\n * table's export.\n * Quoting is decided in {@link csvCell} and nowhere else — a cell holding a\n * comma, a quote or a line break is wrapped in quotes with its quotes\n * doubled, no other cell is touched, and a `null` or `undefined` cell is\n * empty rather than the word — so that a report's file and a contacts file\n * open the same way in a spreadsheet.\n */\nexport function csvDocument(\n header: readonly unknown[],\n rows: readonly (readonly unknown[])[],\n): string {\n return [header, ...rows]\n .map((line) => line.map(csvCell).join(','))\n .join('\\n')\n}\n\n/**\n * The skipped rows as a file the operator can fix and re-import.\n *\n * The original columns verbatim plus a trailing `Skipped because` column,\n * so the file round-trips: correct the cell, delete the last column or\n * leave it unmapped, and import it again.\n */\nexport function importSkippedCsv<R extends string>(\n columns: readonly string[],\n entries: readonly { cells: readonly string[]; reason: R }[],\n labels: Record<R, string>,\n): string {\n return csvDocument(\n [...columns, 'Skipped because'],\n entries.map((entry) => [\n ...columns.map((_column, index) => entry.cells[index] ?? ''),\n labels[entry.reason] ?? entry.reason,\n ]),\n )\n}\n\n/**\n * One row the server did not store, by its index in the request. Each\n * collection names the row back to the operator in its own field — an\n * address, a company name — beside these two.\n */\nexport interface ImportSkippedRow<R extends string> {\n index: number\n reason: R\n}\n\n/**\n * What one request did, in the shape every collection's import reports.\n * The drawer sums these across a file; a collection with more to say\n * extends the shape and folds its own field beside {@link mergeImportResults}.\n */\nexport interface ImportChunkResult<S extends ImportSkippedRow<string>> {\n received: number\n created: number\n merged: number\n skipped: S[]\n /** Unreadable cells, tallied by field. */\n dropped: Record<string, number>\n /** Owner addresses that matched no member of the organization. */\n ownersUnresolved: string[]\n}\n\n/** An empty tally, for the drawer to fold chunk results into. */\nexport function emptyImportResult<\n S extends ImportSkippedRow<string>,\n>(): ImportChunkResult<S> {\n return {\n received: 0,\n created: 0,\n merged: 0,\n skipped: [],\n dropped: {},\n ownersUnresolved: [],\n }\n}\n\n/**\n * Two results as one.\n *\n * `offset` is where the chunk started in the file, so a skipped row's index\n * comes back as its position in the FILE rather than in the request — which\n * is what the download of skipped rows has to look up.\n */\nexport function mergeImportResults<S extends ImportSkippedRow<string>>(\n total: ImportChunkResult<S>,\n chunk: Partial<ImportChunkResult<S>>,\n offset = 0,\n): ImportChunkResult<S> {\n const dropped = { ...total.dropped }\n for (const [field, count] of Object.entries(chunk.dropped ?? {})) {\n dropped[field] = (dropped[field] ?? 0) + Number(count ?? 0)\n }\n return {\n received: total.received + Number(chunk.received ?? 0),\n created: total.created + Number(chunk.created ?? 0),\n merged: total.merged + Number(chunk.merged ?? 0),\n skipped: [\n ...total.skipped,\n ...(chunk.skipped ?? []).map((entry) => ({\n ...entry,\n index: Number(entry.index) + offset,\n })),\n ],\n dropped,\n ownersUnresolved: [\n ...new Set([...total.ownersUnresolved, ...(chunk.ownersUnresolved ?? [])]),\n ],\n }\n}\n"],"names":["CSV_IMPORT_MAX_ROWS","CSV_IMPORT_CHUNK_SIZE","CSV_IMPORT_MAX_BODY_BYTES","CSV_IMPORT_PREVIEW_ROWS","CUSTOM_TARGET_PREFIX","customImportTarget","key","customImportTargetKey","target","startsWith","slice","length","importHeaderKey","value","String","trim","toLowerCase","replace","importAliasKeys","fields","aliases","keys","field","Set","map","guessImportMapping","columns","aliasKeys","customFields","mapping","taken","customByHeader","Map","set","label","forEach","column","index","customKey","get","has","add","mapImportRow","cells","standard","custom","indexText","Object","entries","Number","parseImportTags","max","parts","Array","isArray","entry","split","tag","filter","Boolean","parseImportFlag","text","includes","importTextValue","undefined","csvCell","test","csvDocument","header","rows","line","join","importSkippedCsv","labels","_column","reason","emptyImportResult","received","created","merged","skipped","dropped","ownersUnresolved","mergeImportResults","total","chunk","offset","count"],"mappings":"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"}
@@ -0,0 +1,109 @@
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
+ * Dataset CSV/JSON serialization (AGL-182). The predictable inverse of
19
+ * `coerceDocumentValues`: ISO dates, `lat, lon` coordinates, comma-joined
20
+ * lists, JSON maps, reference ids — so an export re-imports losslessly
21
+ * through the same coercion.
22
+ *
23
+ * **Why this lives in core rather than in `@aglyn/plugins-data`** (AGL-2335).
24
+ * AGL-413 moved dataset io out to the plugin, and the dataset-shaped half of
25
+ * the import machinery — column mapping against a `DatasetModel` — is still
26
+ * there, correctly: nothing outside that plugin maps a file onto a dataset.
27
+ *
28
+ * Writing one is different now. `/api/orgs/datasets/export` streams a
29
+ * dataset from the server, and `scope:app` may not import a lib tagged
30
+ * `aglyn:addons` — apps reach plugins only through the generated loader
31
+ * manifests (AGL-417/419). The choice was a second copy of the escaper in
32
+ * the console or one copy somewhere both may reach. There are already five
33
+ * divergent hand-rolled CSV escapers in this repo; this is not becoming the
34
+ * sixth. `dataset-io.ts` re-exports every name below, so the plugin's own
35
+ * imports are unchanged.
36
+ *
37
+ * READING one is shared for the same reason. The email list importer parses
38
+ * a merchant's contact file, and it lives in `@aglyn/plugins-email`, which
39
+ * may not import `@aglyn/plugins-data` either. So {@link parseCsv} sits here
40
+ * beside the escaper that is its inverse, and `dataset-io.ts` re-exports it
41
+ * exactly as it re-exports the writing half.
42
+ */
43
+ import type { DatasetFieldDefinition, DatasetModel } from './dataset-models';
44
+ /** Storage value → portable string (CSV cell / JSON value). */
45
+ export declare function serializeDatasetValue(field: DatasetFieldDefinition, value: unknown): string;
46
+ /**
47
+ * The header line — field ids, in model order (AGL-2335).
48
+ *
49
+ * Split out of {@link datasetRecordsToCsv} so a server export can emit the
50
+ * file a page at a time. The whole point of that export is that it is not
51
+ * bounded by what one process can hold in memory, and a helper that only
52
+ * takes a complete `rows` array cannot serve it. Everything below shares
53
+ * one escaper: there are already five divergent hand-rolled CSV escapers in
54
+ * this repo and this is not becoming the sixth.
55
+ */
56
+ export declare function datasetCsvHeader(model: DatasetModel): string;
57
+ /** One record's values (storage form) → one CSV line, no terminator. */
58
+ export declare function datasetCsvRow(model: DatasetModel, row: Record<string, unknown>): string;
59
+ /** One record's values → the portable JSON object the JSON export emits. */
60
+ export declare function datasetRecordToJson(model: DatasetModel, row: Record<string, unknown>): Record<string, string>;
61
+ /**
62
+ * Data rows in a CSV document — the header excluded, quoted newlines not
63
+ * counted as row breaks (AGL-2335).
64
+ *
65
+ * This exists so a download can be CHECKED against the row count the server
66
+ * promised, rather than trusted. A truncated export is the defect this whole
67
+ * area is about, and a stream that dies halfway produces a perfectly
68
+ * well-formed shorter file: nothing about the bytes says they are short.
69
+ *
70
+ * Single pass, no array building — {@link parseCsv} answers the same
71
+ * question but materializes every cell, which is the wrong trade when the
72
+ * file may be hundreds of thousands of rows and the only thing wanted is
73
+ * how many there are.
74
+ */
75
+ export declare function countCsvDataRows(text: string): number;
76
+ /**
77
+ * Did a downloaded export arrive whole? (AGL-2335)
78
+ *
79
+ * The server streams and reports its `count()` aggregate in a header, so the
80
+ * client can CHECK rather than trust. This is the check, kept here as a pure
81
+ * function because a guard living inline in a component is a guard nobody
82
+ * can force red — and this one exists precisely to catch a silent shortfall.
83
+ *
84
+ * `short` is only true when the count is both KNOWN and lower. A missing or
85
+ * unparseable header is not evidence of truncation, and refusing a download
86
+ * on the strength of a header that never arrived would fail the user for the
87
+ * server's bookkeeping. More rows than promised is not short either — the
88
+ * count is a snapshot taken before the first page, so a concurrent insert
89
+ * can legitimately overtake it.
90
+ */
91
+ export declare function exportShortfall(promisedHeader: string | null | undefined, body: string, format: 'csv' | 'json'): {
92
+ promised: number;
93
+ received: number;
94
+ short: boolean;
95
+ };
96
+ /** Rows (storage-form value maps) → CSV with a fieldId header row. */
97
+ export declare function datasetRecordsToCsv(model: DatasetModel, rows: Array<Record<string, unknown>>): string;
98
+ /**
99
+ * Minimal RFC-4180 CSV parser (quoted fields, escaped quotes, CRLF).
100
+ *
101
+ * The inverse of the escaper above, and the one parser in the repo — see the
102
+ * module note for why the email list importer reaches this rather than
103
+ * writing its own.
104
+ *
105
+ * A wholly blank row is dropped. Every spreadsheet writes a trailing newline
106
+ * and a row of empty cells is not a record; carrying it through would give
107
+ * every caller the same off-by-one to remember.
108
+ */
109
+ export declare function parseCsv(text: string): string[][];
@@ -0,0 +1,235 @@
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
+ * Dataset CSV/JSON serialization (AGL-182). The predictable inverse of
18
+ * `coerceDocumentValues`: ISO dates, `lat, lon` coordinates, comma-joined
19
+ * lists, JSON maps, reference ids — so an export re-imports losslessly
20
+ * through the same coercion.
21
+ *
22
+ * **Why this lives in core rather than in `@aglyn/plugins-data`** (AGL-2335).
23
+ * AGL-413 moved dataset io out to the plugin, and the dataset-shaped half of
24
+ * the import machinery — column mapping against a `DatasetModel` — is still
25
+ * there, correctly: nothing outside that plugin maps a file onto a dataset.
26
+ *
27
+ * Writing one is different now. `/api/orgs/datasets/export` streams a
28
+ * dataset from the server, and `scope:app` may not import a lib tagged
29
+ * `aglyn:addons` — apps reach plugins only through the generated loader
30
+ * manifests (AGL-417/419). The choice was a second copy of the escaper in
31
+ * the console or one copy somewhere both may reach. There are already five
32
+ * divergent hand-rolled CSV escapers in this repo; this is not becoming the
33
+ * sixth. `dataset-io.ts` re-exports every name below, so the plugin's own
34
+ * imports are unchanged.
35
+ *
36
+ * READING one is shared for the same reason. The email list importer parses
37
+ * a merchant's contact file, and it lives in `@aglyn/plugins-email`, which
38
+ * may not import `@aglyn/plugins-data` either. So {@link parseCsv} sits here
39
+ * beside the escaper that is its inverse, and `dataset-io.ts` re-exports it
40
+ * exactly as it re-exports the writing half.
41
+ */ /** Storage value → portable string (CSV cell / JSON value). */ export function serializeDatasetValue(field, value) {
42
+ if (value == null) return '';
43
+ switch(field.type){
44
+ case 'timestamp':
45
+ return typeof value === 'number' && Number.isFinite(value) ? new Date(value).toISOString() : String(value);
46
+ case 'coordinates':
47
+ {
48
+ const coordinates = value;
49
+ return coordinates && typeof coordinates.latitude === 'number' && typeof coordinates.longitude === 'number' ? `${coordinates.latitude}, ${coordinates.longitude}` : String(value);
50
+ }
51
+ case 'sorted':
52
+ case 'reference':
53
+ return Array.isArray(value) ? value.join(', ') : String(value);
54
+ case 'map':
55
+ try {
56
+ return JSON.stringify(value);
57
+ } catch (unused) {
58
+ return String(value);
59
+ }
60
+ default:
61
+ return String(value);
62
+ }
63
+ }
64
+ const csvEscape = (cell)=>/[",\r\n]/.test(cell) ? `"${cell.replace(/"/g, '""')}"` : cell;
65
+ /**
66
+ * The header line — field ids, in model order (AGL-2335).
67
+ *
68
+ * Split out of {@link datasetRecordsToCsv} so a server export can emit the
69
+ * file a page at a time. The whole point of that export is that it is not
70
+ * bounded by what one process can hold in memory, and a helper that only
71
+ * takes a complete `rows` array cannot serve it. Everything below shares
72
+ * one escaper: there are already five divergent hand-rolled CSV escapers in
73
+ * this repo and this is not becoming the sixth.
74
+ */ export function datasetCsvHeader(model) {
75
+ return model.order.map(csvEscape).join(',');
76
+ }
77
+ /** One record's values (storage form) → one CSV line, no terminator. */ export function datasetCsvRow(model, row) {
78
+ return model.order.map((fieldId)=>{
79
+ const field = model.fields[fieldId];
80
+ return csvEscape(field ? serializeDatasetValue(field, row[fieldId]) : '');
81
+ }).join(',');
82
+ }
83
+ /** One record's values → the portable JSON object the JSON export emits. */ export function datasetRecordToJson(model, row) {
84
+ return Object.fromEntries(model.order.map((fieldId)=>{
85
+ const field = model.fields[fieldId];
86
+ return [
87
+ fieldId,
88
+ field ? serializeDatasetValue(field, row[fieldId]) : ''
89
+ ];
90
+ }));
91
+ }
92
+ /**
93
+ * Data rows in a CSV document — the header excluded, quoted newlines not
94
+ * counted as row breaks (AGL-2335).
95
+ *
96
+ * This exists so a download can be CHECKED against the row count the server
97
+ * promised, rather than trusted. A truncated export is the defect this whole
98
+ * area is about, and a stream that dies halfway produces a perfectly
99
+ * well-formed shorter file: nothing about the bytes says they are short.
100
+ *
101
+ * Single pass, no array building — {@link parseCsv} answers the same
102
+ * question but materializes every cell, which is the wrong trade when the
103
+ * file may be hundreds of thousands of rows and the only thing wanted is
104
+ * how many there are.
105
+ */ export function countCsvDataRows(text) {
106
+ const source = String(text != null ? text : '');
107
+ if (!source) return 0;
108
+ let rows = 0;
109
+ let quoted = false;
110
+ let cellsSeen = false;
111
+ for(let index = 0; index < source.length; index += 1){
112
+ const char = source[index];
113
+ if (quoted) {
114
+ if (char === '"') {
115
+ if (source[index + 1] === '"') index += 1;
116
+ else quoted = false;
117
+ }
118
+ cellsSeen = true;
119
+ continue;
120
+ }
121
+ if (char === '"') {
122
+ quoted = true;
123
+ cellsSeen = true;
124
+ continue;
125
+ }
126
+ if (char === '\n') {
127
+ rows += 1;
128
+ cellsSeen = false;
129
+ continue;
130
+ }
131
+ if (char !== '\r') cellsSeen = true;
132
+ }
133
+ // A file that does not end in a newline still has a final row.
134
+ if (cellsSeen) rows += 1;
135
+ // The header is not data.
136
+ return Math.max(0, rows - 1);
137
+ }
138
+ /**
139
+ * Did a downloaded export arrive whole? (AGL-2335)
140
+ *
141
+ * The server streams and reports its `count()` aggregate in a header, so the
142
+ * client can CHECK rather than trust. This is the check, kept here as a pure
143
+ * function because a guard living inline in a component is a guard nobody
144
+ * can force red — and this one exists precisely to catch a silent shortfall.
145
+ *
146
+ * `short` is only true when the count is both KNOWN and lower. A missing or
147
+ * unparseable header is not evidence of truncation, and refusing a download
148
+ * on the strength of a header that never arrived would fail the user for the
149
+ * server's bookkeeping. More rows than promised is not short either — the
150
+ * count is a snapshot taken before the first page, so a concurrent insert
151
+ * can legitimately overtake it.
152
+ */ export function exportShortfall(promisedHeader, body, format) {
153
+ const promised = Number(promisedHeader);
154
+ let received;
155
+ if (format === 'csv') {
156
+ received = countCsvDataRows(body);
157
+ } else {
158
+ try {
159
+ const parsed = JSON.parse(body);
160
+ received = Array.isArray(parsed) ? parsed.length : 0;
161
+ } catch (unused) {
162
+ // A body that is not JSON at all did not arrive whole.
163
+ return {
164
+ promised,
165
+ received: 0,
166
+ short: true
167
+ };
168
+ }
169
+ }
170
+ return {
171
+ promised,
172
+ received,
173
+ short: Number.isFinite(promised) && promisedHeader != null && received < promised
174
+ };
175
+ }
176
+ /** Rows (storage-form value maps) → CSV with a fieldId header row. */ export function datasetRecordsToCsv(model, rows) {
177
+ return [
178
+ datasetCsvHeader(model),
179
+ ...rows.map((row)=>datasetCsvRow(model, row))
180
+ ].join('\n');
181
+ }
182
+ /**
183
+ * Minimal RFC-4180 CSV parser (quoted fields, escaped quotes, CRLF).
184
+ *
185
+ * The inverse of the escaper above, and the one parser in the repo — see the
186
+ * module note for why the email list importer reaches this rather than
187
+ * writing its own.
188
+ *
189
+ * A wholly blank row is dropped. Every spreadsheet writes a trailing newline
190
+ * and a row of empty cells is not a record; carrying it through would give
191
+ * every caller the same off-by-one to remember.
192
+ */ export function parseCsv(text) {
193
+ const rows = [];
194
+ let row = [];
195
+ let cell = '';
196
+ let quoted = false;
197
+ const source = String(text != null ? text : '');
198
+ for(let index = 0; index < source.length; index += 1){
199
+ const char = source[index];
200
+ if (quoted) {
201
+ if (char === '"') {
202
+ if (source[index + 1] === '"') {
203
+ cell += '"';
204
+ index += 1;
205
+ } else {
206
+ quoted = false;
207
+ }
208
+ } else {
209
+ cell += char;
210
+ }
211
+ continue;
212
+ }
213
+ if (char === '"') {
214
+ quoted = true;
215
+ } else if (char === ',') {
216
+ row.push(cell);
217
+ cell = '';
218
+ } else if (char === '\n' || char === '\r') {
219
+ if (char === '\r' && source[index + 1] === '\n') index += 1;
220
+ row.push(cell);
221
+ cell = '';
222
+ rows.push(row);
223
+ row = [];
224
+ } else {
225
+ cell += char;
226
+ }
227
+ }
228
+ if (cell !== '' || row.length) {
229
+ row.push(cell);
230
+ rows.push(row);
231
+ }
232
+ return rows.filter((cells)=>cells.some((value)=>value.trim() !== ''));
233
+ }
234
+
235
+ //# sourceMappingURL=dataset-csv.js.map