@aglyn/aglyn 1.0.0-beta.219 → 1.0.0-beta.220
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.
- package/package.json +12 -12
- package/src/lib/app-utils/actions.d.ts +1 -59
- package/src/lib/app-utils/actions.js +7 -72
- package/src/lib/app-utils/actions.js.map +1 -1
- package/src/lib/app-utils/consent-groups.d.ts +1 -1
- package/src/lib/app-utils/consent-groups.js.map +1 -1
- package/src/lib/app-utils/console-routes.d.ts +0 -36
- package/src/lib/app-utils/console-routes.js +2 -37
- package/src/lib/app-utils/console-routes.js.map +1 -1
- package/src/lib/app-utils/contacts.d.ts +1 -1
- package/src/lib/app-utils/contacts.js.map +1 -1
- package/src/lib/app-utils/container-membership.d.ts +93 -0
- package/src/lib/app-utils/container-membership.js +165 -0
- package/src/lib/app-utils/container-membership.js.map +1 -0
- package/src/lib/app-utils/crm-task-reminders.d.ts +23 -6
- package/src/lib/app-utils/crm-task-reminders.js +32 -11
- package/src/lib/app-utils/crm-task-reminders.js.map +1 -1
- package/src/lib/app-utils/crm.d.ts +24 -4
- package/src/lib/app-utils/crm.js +23 -0
- package/src/lib/app-utils/crm.js.map +1 -1
- package/src/lib/app-utils/csv-upload.d.ts +1 -1
- package/src/lib/app-utils/csv-upload.js +1 -1
- package/src/lib/app-utils/csv-upload.js.map +1 -1
- package/src/lib/app-utils/{dataset-csv.d.ts → csv.d.ts} +10 -43
- package/src/lib/app-utils/{dataset-csv.js → csv.js} +10 -81
- package/src/lib/app-utils/csv.js.map +1 -0
- package/src/lib/app-utils/datasets.d.ts +0 -19
- package/src/lib/app-utils/datasets.js +0 -13
- package/src/lib/app-utils/datasets.js.map +1 -1
- package/src/lib/app-utils/docs-help.generated.d.ts +2 -2
- package/src/lib/app-utils/docs-help.generated.js +2 -0
- package/src/lib/app-utils/docs-help.generated.js.map +1 -1
- package/src/lib/app-utils/docs-index.generated.js +63 -35
- package/src/lib/app-utils/docs-index.generated.js.map +1 -1
- package/src/lib/app-utils/dynamic-list-rule.js +3 -3
- package/src/lib/app-utils/dynamic-list-rule.js.map +1 -1
- package/src/lib/app-utils/email-text.d.ts +80 -0
- package/src/lib/app-utils/email-text.js +189 -0
- package/src/lib/app-utils/email-text.js.map +1 -0
- package/src/lib/app-utils/{list-assignment-policy.d.ts → enrollment-basis.d.ts} +4 -0
- package/src/lib/app-utils/{list-assignment-policy.js → enrollment-basis.js} +5 -1
- package/src/lib/app-utils/enrollment-basis.js.map +1 -0
- package/src/lib/app-utils/expand-repeatables.js +4 -4
- package/src/lib/app-utils/expand-repeatables.js.map +1 -1
- package/src/lib/app-utils/forms.js +2 -2
- package/src/lib/app-utils/forms.js.map +1 -1
- package/src/lib/app-utils/health-report.d.ts +2 -3
- package/src/lib/app-utils/health-report.js +8 -6
- package/src/lib/app-utils/health-report.js.map +1 -1
- package/src/lib/app-utils/inbound-mail-domain.d.ts +27 -0
- package/src/lib/app-utils/inbound-mail-domain.js +31 -0
- package/src/lib/app-utils/inbound-mail-domain.js.map +1 -0
- package/src/lib/app-utils/lockdown.d.ts +11 -0
- package/src/lib/app-utils/lockdown.js +33 -3
- package/src/lib/app-utils/lockdown.js.map +1 -1
- package/src/lib/app-utils/member-email-aliases.d.ts +25 -0
- package/src/lib/app-utils/member-email-aliases.js +29 -0
- package/src/lib/app-utils/member-email-aliases.js.map +1 -1
- package/src/lib/app-utils/notifications.d.ts +69 -0
- package/src/lib/app-utils/notifications.js +119 -0
- package/src/lib/app-utils/notifications.js.map +1 -1
- package/src/lib/app-utils/operator-alerts.d.ts +15 -1
- package/src/lib/app-utils/operator-alerts.js +47 -10
- package/src/lib/app-utils/operator-alerts.js.map +1 -1
- package/src/lib/app-utils/plan-entitlements.d.ts +164 -178
- package/src/lib/app-utils/plan-entitlements.js +200 -224
- package/src/lib/app-utils/plan-entitlements.js.map +1 -1
- package/src/lib/app-utils/platform-marketing-consent.d.ts +56 -2
- package/src/lib/app-utils/platform-marketing-consent.js +6 -5
- package/src/lib/app-utils/platform-marketing-consent.js.map +1 -1
- package/src/lib/app-utils/plugin-starter-templates.generated.d.ts +12 -0
- package/src/lib/app-utils/plugin-starter-templates.generated.js +711 -0
- package/src/lib/app-utils/plugin-starter-templates.generated.js.map +1 -0
- package/src/lib/app-utils/repeat-query.d.ts +56 -0
- package/src/lib/app-utils/{dataset-query.js → repeat-query.js} +16 -16
- package/src/lib/app-utils/repeat-query.js.map +1 -0
- package/src/lib/app-utils/server.d.ts +7 -9
- package/src/lib/app-utils/server.js +18 -26
- package/src/lib/app-utils/server.js.map +1 -1
- package/src/lib/app-utils/starter-template-nodes.d.ts +137 -0
- package/src/lib/app-utils/starter-template-nodes.js +129 -0
- package/src/lib/app-utils/starter-template-nodes.js.map +1 -0
- package/src/lib/app-utils/starter-templates.d.ts +11 -34
- package/src/lib/app-utils/starter-templates.js +19 -230
- package/src/lib/app-utils/starter-templates.js.map +1 -1
- package/src/lib/app-utils/{email-topics.d.ts → subscription-topics.d.ts} +64 -48
- package/src/lib/app-utils/{email-topics.js → subscription-topics.js} +39 -109
- package/src/lib/app-utils/subscription-topics.js.map +1 -0
- package/src/lib/app-utils/usage-budget.d.ts +73 -188
- package/src/lib/app-utils/usage-budget.js +58 -194
- package/src/lib/app-utils/usage-budget.js.map +1 -1
- package/src/lib/app-utils/utm-attribution.d.ts +1 -1
- package/src/lib/app-utils/utm-attribution.js +1 -1
- package/src/lib/app-utils/utm-attribution.js.map +1 -1
- package/src/lib/app-utils/{campaign-touch.d.ts → utm-touch.d.ts} +21 -13
- package/src/lib/app-utils/{campaign-touch.js → utm-touch.js} +30 -22
- package/src/lib/app-utils/utm-touch.js.map +1 -0
- package/src/lib/app-utils/variables.d.ts +9 -9
- package/src/lib/app-utils/variables.js.map +1 -1
- package/src/lib/app-utils/visitor-record-ceiling.d.ts +32 -0
- package/src/lib/app-utils/visitor-record-ceiling.js +39 -0
- package/src/lib/app-utils/visitor-record-ceiling.js.map +1 -1
- package/src/lib/foundation/definitions/org-billing.types.d.ts +2 -2
- package/src/lib/foundation/definitions/org-billing.types.js.map +1 -1
- package/src/lib/plugin-manager/feature-plugins.d.ts +80 -79
- package/src/lib/plugin-manager/feature-plugins.js +22 -35
- package/src/lib/plugin-manager/feature-plugins.js.map +1 -1
- package/src/lib/plugin-manager/first-party-plugins.generated.d.ts +12 -1
- package/src/lib/plugin-manager/first-party-plugins.generated.js +58 -2
- package/src/lib/plugin-manager/first-party-plugins.generated.js.map +1 -1
- package/src/lib/plugin-manager/index.d.ts +0 -1
- package/src/lib/plugin-manager/index.js +0 -1
- package/src/lib/plugin-manager/index.js.map +1 -1
- package/src/lib/plugin-manager/plugin-contact-capture.d.ts +9 -4
- package/src/lib/plugin-manager/plugin-contact-capture.js.map +1 -1
- package/src/lib/plugin-manager/plugin-containers.d.ts +68 -0
- package/src/lib/plugin-manager/plugin-containers.generated.d.ts +10 -0
- package/src/lib/plugin-manager/plugin-containers.generated.js +20 -0
- package/src/lib/plugin-manager/plugin-containers.generated.js.map +1 -0
- package/src/lib/plugin-manager/plugin-containers.js +27 -0
- package/src/lib/plugin-manager/plugin-containers.js.map +1 -0
- package/src/lib/plugin-manager/plugin-entitlements.d.ts +8 -0
- package/src/lib/plugin-manager/plugin-entitlements.js.map +1 -1
- package/src/lib/plugin-manager/plugin-membership-detach.js +1 -1
- package/src/lib/plugin-manager/plugin-membership-detach.js.map +1 -1
- package/src/lib/plugin-manager/plugin-record-email-state.d.ts +69 -0
- package/src/lib/plugin-manager/plugin-record-email-state.js +32 -0
- package/src/lib/plugin-manager/plugin-record-email-state.js.map +1 -1
- package/src/lib/plugin-manager/plugin-record-lists.d.ts +115 -0
- package/src/lib/plugin-manager/plugin-record-lists.js +75 -0
- package/src/lib/plugin-manager/plugin-record-lists.js.map +1 -0
- package/src/lib/plugin-manager/plugin-record-timeline.d.ts +42 -8
- package/src/lib/plugin-manager/plugin-record-timeline.js.map +1 -1
- package/src/lib/plugin-manager/plugin-site-beacons.d.ts +71 -0
- package/src/lib/plugin-manager/plugin-site-beacons.js +54 -0
- package/src/lib/plugin-manager/plugin-site-beacons.js.map +1 -0
- package/src/lib/plugin-manager/plugin-subscription-topics.generated.d.ts +11 -0
- package/src/lib/plugin-manager/plugin-subscription-topics.generated.js +41 -0
- package/src/lib/plugin-manager/plugin-subscription-topics.generated.js.map +1 -0
- package/src/lib/plugin-manager/plugin-usage-axes.d.ts +212 -0
- package/src/lib/plugin-manager/plugin-usage-axes.js +82 -3
- package/src/lib/plugin-manager/plugin-usage-axes.js.map +1 -1
- package/src/lib/plugin-manager/plugin-usage-meters.d.ts +108 -0
- package/src/lib/plugin-manager/plugin-usage-meters.js +105 -0
- package/src/lib/plugin-manager/plugin-usage-meters.js.map +1 -0
- package/src/lib/plugin-manager/usage-alert-contributors.d.ts +76 -6
- package/src/lib/plugin-manager/usage-alert-contributors.js +23 -10
- package/src/lib/plugin-manager/usage-alert-contributors.js.map +1 -1
- package/src/lib/app-utils/assist-credits.d.ts +0 -482
- package/src/lib/app-utils/assist-credits.js +0 -510
- package/src/lib/app-utils/assist-credits.js.map +0 -1
- package/src/lib/app-utils/campaign-membership.d.ts +0 -121
- package/src/lib/app-utils/campaign-membership.js +0 -189
- package/src/lib/app-utils/campaign-membership.js.map +0 -1
- package/src/lib/app-utils/campaign-touch.js.map +0 -1
- package/src/lib/app-utils/console-record-links.d.ts +0 -84
- package/src/lib/app-utils/console-record-links.js +0 -76
- package/src/lib/app-utils/console-record-links.js.map +0 -1
- package/src/lib/app-utils/crm-booking.d.ts +0 -75
- package/src/lib/app-utils/crm-booking.js +0 -133
- package/src/lib/app-utils/crm-booking.js.map +0 -1
- package/src/lib/app-utils/crm-inbound.d.ts +0 -245
- package/src/lib/app-utils/crm-inbound.js +0 -407
- package/src/lib/app-utils/crm-inbound.js.map +0 -1
- package/src/lib/app-utils/crm-reports.d.ts +0 -479
- package/src/lib/app-utils/crm-reports.js +0 -680
- package/src/lib/app-utils/crm-reports.js.map +0 -1
- package/src/lib/app-utils/dataset-csv.js.map +0 -1
- package/src/lib/app-utils/dataset-query.d.ts +0 -57
- package/src/lib/app-utils/dataset-query.js.map +0 -1
- package/src/lib/app-utils/email-topics.js.map +0 -1
- package/src/lib/app-utils/list-assignment-policy.js.map +0 -1
- package/src/lib/plugin-manager/plugin-metered-lines.d.ts +0 -97
- package/src/lib/plugin-manager/plugin-metered-lines.js +0 -123
- package/src/lib/plugin-manager/plugin-metered-lines.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/plugin-starter-templates.generated.ts"],"sourcesContent":["/**\n * GENERATED FILE — do not edit. Regenerate with:\n * node tools/scripts/generate-plugin-manifests.mjs\n *\n * The starter sites plugins offer (AGL-3080): what each plugin's\n * `starterTemplates` entry returned when this file was generated, in\n * config order. `STARTER_TEMPLATES` in `starter-templates.ts` is the\n * platform's own starters followed by these.\n * Source of truth: plugins.config.json and the entries it names.\n */\n\nimport type { StarterTemplate } from './starter-template-nodes'\n\nexport const PLUGIN_STARTER_TEMPLATES: readonly StarterTemplate[] = [\n {\n \"id\": \"physical-shop\",\n \"displayName\": \"Shop (physical products)\",\n \"description\": \"Storefront starter: home with featured products, filterable shop, product page, cart, and customer accounts. After applying, set the Product page as the product template in Store settings.\",\n \"category\": \"Commerce\",\n \"screens\": [\n {\n \"key\": \"home\",\n \"displayName\": \"Home\",\n \"slug\": \"/\",\n \"seo\": {\n \"title\": \"Shop\",\n \"description\": \"Browse our products.\"\n },\n \"nodes\": {\n \"_@_\": {\n \"$id\": \"_@_\",\n \"componentId\": \"div\",\n \"nodes\": [\n \"ps_h_heroSection\",\n \"ps_h_gridSection\",\n \"ps_h_newsSection\"\n ]\n },\n \"ps_h_heroSection\": {\n \"$id\": \"ps_h_heroSection\",\n \"componentId\": \"muiContainer\",\n \"pluginId\": \"mui\",\n \"parentId\": \"_@_\",\n \"props\": {\n \"maxWidth\": \"xl\"\n },\n \"sx\": {\n \"paddingTop\": 10,\n \"paddingBottom\": 10\n },\n \"nodes\": [\n \"ps_h_hero\"\n ]\n },\n \"ps_h_hero\": {\n \"$id\": \"ps_h_hero\",\n \"componentId\": \"muiStack\",\n \"pluginId\": \"mui\",\n \"parentId\": \"ps_h_heroSection\",\n \"props\": {\n \"spacing\": 2\n },\n \"sx\": {\n \"alignItems\": \"center\"\n },\n \"nodes\": [\n \"ps_h_heroTitle\",\n \"ps_h_heroSub\",\n \"ps_h_heroCta\"\n ]\n },\n \"ps_h_heroTitle\": {\n \"$id\": \"ps_h_heroTitle\",\n \"componentId\": \"muiTypography\",\n \"pluginId\": \"mui\",\n \"parentId\": \"ps_h_hero\",\n \"props\": {\n \"variant\": \"h2\",\n \"children\": \"Gear you can trust\",\n \"align\": \"center\"\n },\n \"nodes\": []\n },\n \"ps_h_heroSub\": {\n \"$id\": \"ps_h_heroSub\",\n \"componentId\": \"muiTypography\",\n \"pluginId\": \"mui\",\n \"parentId\": \"ps_h_hero\",\n \"props\": {\n \"variant\": \"h6\",\n \"children\": \"Quality parts, shipped fast.\",\n \"align\": \"center\"\n },\n \"nodes\": []\n },\n \"ps_h_heroCta\": {\n \"$id\": \"ps_h_heroCta\",\n \"componentId\": \"muiButton\",\n \"pluginId\": \"mui\",\n \"parentId\": \"ps_h_hero\",\n \"props\": {\n \"variant\": \"contained\",\n \"size\": \"large\",\n \"children\": \"Get in touch\"\n },\n \"nodes\": []\n },\n \"ps_h_gridSection\": {\n \"$id\": \"ps_h_gridSection\",\n \"componentId\": \"muiContainer\",\n \"pluginId\": \"mui\",\n \"parentId\": \"_@_\",\n \"props\": {\n \"maxWidth\": \"xl\"\n },\n \"sx\": {\n \"paddingTop\": 6,\n \"paddingBottom\": 6\n },\n \"nodes\": [\n \"ps_h_grid\"\n ]\n },\n \"ps_h_grid\": {\n \"$id\": \"ps_h_grid\",\n \"componentId\": \"product-grid\",\n \"pluginId\": \"commerce\",\n \"parentId\": \"ps_h_gridSection\",\n \"props\": {\n \"source\": \"all\",\n \"sort\": \"newest\",\n \"columns\": 3,\n \"maxItems\": 6\n },\n \"nodes\": []\n },\n \"ps_h_newsSection\": {\n \"$id\": \"ps_h_newsSection\",\n \"componentId\": \"muiContainer\",\n \"pluginId\": \"mui\",\n \"parentId\": \"_@_\",\n \"props\": {\n \"maxWidth\": \"md\"\n },\n \"sx\": {\n \"paddingTop\": 6,\n \"paddingBottom\": 6\n },\n \"nodes\": [\n \"ps_h_news\"\n ]\n },\n \"ps_h_news\": {\n \"$id\": \"ps_h_news\",\n \"componentId\": \"newsletter-signup\",\n \"pluginId\": \"commerce\",\n \"parentId\": \"ps_h_newsSection\",\n \"props\": {\n \"heading\": \"Get updates and offers\"\n },\n \"nodes\": []\n }\n }\n },\n {\n \"key\": \"shop\",\n \"displayName\": \"Shop\",\n \"slug\": \"shop\",\n \"seo\": {\n \"title\": \"All products\"\n },\n \"nodes\": {\n \"_@_\": {\n \"$id\": \"_@_\",\n \"componentId\": \"div\",\n \"nodes\": [\n \"ps_s_section\"\n ]\n },\n \"ps_s_section\": {\n \"$id\": \"ps_s_section\",\n \"componentId\": \"muiContainer\",\n \"pluginId\": \"mui\",\n \"parentId\": \"_@_\",\n \"props\": {\n \"maxWidth\": \"xl\"\n },\n \"sx\": {\n \"paddingTop\": 6,\n \"paddingBottom\": 6\n },\n \"nodes\": [\n \"ps_s_title\",\n \"ps_s_grid\"\n ]\n },\n \"ps_s_title\": {\n \"$id\": \"ps_s_title\",\n \"componentId\": \"muiTypography\",\n \"pluginId\": \"mui\",\n \"parentId\": \"ps_s_section\",\n \"props\": {\n \"variant\": \"h3\",\n \"children\": \"All products\"\n },\n \"nodes\": []\n },\n \"ps_s_grid\": {\n \"$id\": \"ps_s_grid\",\n \"componentId\": \"product-grid\",\n \"pluginId\": \"commerce\",\n \"parentId\": \"ps_s_section\",\n \"props\": {\n \"source\": \"all\",\n \"columns\": 4,\n \"showFilters\": true\n },\n \"nodes\": []\n }\n }\n },\n {\n \"key\": \"product\",\n \"displayName\": \"Product page\",\n \"slug\": \"product\",\n \"seo\": {\n \"title\": \"Product\"\n },\n \"nodes\": {\n \"_@_\": {\n \"$id\": \"_@_\",\n \"componentId\": \"div\",\n \"nodes\": [\n \"ps_p_section\"\n ]\n },\n \"ps_p_section\": {\n \"$id\": \"ps_p_section\",\n \"componentId\": \"muiContainer\",\n \"pluginId\": \"mui\",\n \"parentId\": \"_@_\",\n \"props\": {\n \"maxWidth\": \"xl\"\n },\n \"sx\": {\n \"paddingTop\": 6,\n \"paddingBottom\": 6\n },\n \"nodes\": [\n \"ps_p_detail\"\n ]\n },\n \"ps_p_detail\": {\n \"$id\": \"ps_p_detail\",\n \"componentId\": \"product-detail\",\n \"pluginId\": \"commerce\",\n \"parentId\": \"ps_p_section\",\n \"props\": {},\n \"nodes\": []\n }\n }\n },\n {\n \"key\": \"cart\",\n \"displayName\": \"Cart\",\n \"slug\": \"cart\",\n \"seo\": {\n \"title\": \"Your cart\"\n },\n \"nodes\": {\n \"_@_\": {\n \"$id\": \"_@_\",\n \"componentId\": \"div\",\n \"nodes\": [\n \"ps_c_section\"\n ]\n },\n \"ps_c_section\": {\n \"$id\": \"ps_c_section\",\n \"componentId\": \"muiContainer\",\n \"pluginId\": \"mui\",\n \"parentId\": \"_@_\",\n \"props\": {\n \"maxWidth\": \"lg\"\n },\n \"sx\": {\n \"paddingTop\": 6,\n \"paddingBottom\": 6\n },\n \"nodes\": [\n \"ps_c_title\",\n \"ps_c_cart\"\n ]\n },\n \"ps_c_title\": {\n \"$id\": \"ps_c_title\",\n \"componentId\": \"muiTypography\",\n \"pluginId\": \"mui\",\n \"parentId\": \"ps_c_section\",\n \"props\": {\n \"variant\": \"h3\",\n \"children\": \"Your cart\"\n },\n \"nodes\": []\n },\n \"ps_c_cart\": {\n \"$id\": \"ps_c_cart\",\n \"componentId\": \"cart\",\n \"pluginId\": \"commerce\",\n \"parentId\": \"ps_c_section\",\n \"props\": {\n \"variant\": \"inline\",\n \"showCoupon\": true\n },\n \"nodes\": []\n }\n }\n },\n {\n \"key\": \"account\",\n \"displayName\": \"Account\",\n \"slug\": \"account\",\n \"seo\": {\n \"title\": \"Your account\"\n },\n \"nodes\": {\n \"_@_\": {\n \"$id\": \"_@_\",\n \"componentId\": \"div\",\n \"nodes\": [\n \"ps_a_section\"\n ]\n },\n \"ps_a_section\": {\n \"$id\": \"ps_a_section\",\n \"componentId\": \"muiContainer\",\n \"pluginId\": \"mui\",\n \"parentId\": \"_@_\",\n \"props\": {\n \"maxWidth\": \"lg\"\n },\n \"sx\": {\n \"paddingTop\": 6,\n \"paddingBottom\": 6\n },\n \"nodes\": [\n \"ps_a_account\"\n ]\n },\n \"ps_a_account\": {\n \"$id\": \"ps_a_account\",\n \"componentId\": \"customer-account\",\n \"pluginId\": \"commerce\",\n \"parentId\": \"ps_a_section\",\n \"props\": {\n \"signedOutHeading\": \"Your account\"\n },\n \"nodes\": []\n }\n }\n }\n ]\n },\n {\n \"id\": \"digital-shop\",\n \"displayName\": \"Shop (digital products)\",\n \"description\": \"Digital storefront starter: downloads-focused home, shop, product page, cart, and accounts with a newsletter capture. Set the Product page as the product template in Store settings after applying.\",\n \"category\": \"Commerce\",\n \"screens\": [\n {\n \"key\": \"home\",\n \"displayName\": \"Home\",\n \"slug\": \"/\",\n \"seo\": {\n \"title\": \"Digital shop\",\n \"description\": \"Browse our products.\"\n },\n \"nodes\": {\n \"_@_\": {\n \"$id\": \"_@_\",\n \"componentId\": \"div\",\n \"nodes\": [\n \"ds_h_heroSection\",\n \"ds_h_gridSection\",\n \"ds_h_newsSection\"\n ]\n },\n \"ds_h_heroSection\": {\n \"$id\": \"ds_h_heroSection\",\n \"componentId\": \"muiContainer\",\n \"pluginId\": \"mui\",\n \"parentId\": \"_@_\",\n \"props\": {\n \"maxWidth\": \"xl\"\n },\n \"sx\": {\n \"paddingTop\": 10,\n \"paddingBottom\": 10\n },\n \"nodes\": [\n \"ds_h_hero\"\n ]\n },\n \"ds_h_hero\": {\n \"$id\": \"ds_h_hero\",\n \"componentId\": \"muiStack\",\n \"pluginId\": \"mui\",\n \"parentId\": \"ds_h_heroSection\",\n \"props\": {\n \"spacing\": 2\n },\n \"sx\": {\n \"alignItems\": \"center\"\n },\n \"nodes\": [\n \"ds_h_heroTitle\",\n \"ds_h_heroSub\",\n \"ds_h_heroCta\"\n ]\n },\n \"ds_h_heroTitle\": {\n \"$id\": \"ds_h_heroTitle\",\n \"componentId\": \"muiTypography\",\n \"pluginId\": \"mui\",\n \"parentId\": \"ds_h_hero\",\n \"props\": {\n \"variant\": \"h2\",\n \"children\": \"Downloads that level you up\",\n \"align\": \"center\"\n },\n \"nodes\": []\n },\n \"ds_h_heroSub\": {\n \"$id\": \"ds_h_heroSub\",\n \"componentId\": \"muiTypography\",\n \"pluginId\": \"mui\",\n \"parentId\": \"ds_h_hero\",\n \"props\": {\n \"variant\": \"h6\",\n \"children\": \"Instant delivery. Lifetime updates.\",\n \"align\": \"center\"\n },\n \"nodes\": []\n },\n \"ds_h_heroCta\": {\n \"$id\": \"ds_h_heroCta\",\n \"componentId\": \"muiButton\",\n \"pluginId\": \"mui\",\n \"parentId\": \"ds_h_hero\",\n \"props\": {\n \"variant\": \"contained\",\n \"size\": \"large\",\n \"children\": \"Get in touch\"\n },\n \"nodes\": []\n },\n \"ds_h_gridSection\": {\n \"$id\": \"ds_h_gridSection\",\n \"componentId\": \"muiContainer\",\n \"pluginId\": \"mui\",\n \"parentId\": \"_@_\",\n \"props\": {\n \"maxWidth\": \"xl\"\n },\n \"sx\": {\n \"paddingTop\": 6,\n \"paddingBottom\": 6\n },\n \"nodes\": [\n \"ds_h_grid\"\n ]\n },\n \"ds_h_grid\": {\n \"$id\": \"ds_h_grid\",\n \"componentId\": \"product-grid\",\n \"pluginId\": \"commerce\",\n \"parentId\": \"ds_h_gridSection\",\n \"props\": {\n \"source\": \"all\",\n \"sort\": \"newest\",\n \"columns\": 3,\n \"maxItems\": 6\n },\n \"nodes\": []\n },\n \"ds_h_newsSection\": {\n \"$id\": \"ds_h_newsSection\",\n \"componentId\": \"muiContainer\",\n \"pluginId\": \"mui\",\n \"parentId\": \"_@_\",\n \"props\": {\n \"maxWidth\": \"md\"\n },\n \"sx\": {\n \"paddingTop\": 6,\n \"paddingBottom\": 6\n },\n \"nodes\": [\n \"ds_h_news\"\n ]\n },\n \"ds_h_news\": {\n \"$id\": \"ds_h_news\",\n \"componentId\": \"newsletter-signup\",\n \"pluginId\": \"commerce\",\n \"parentId\": \"ds_h_newsSection\",\n \"props\": {\n \"heading\": \"Get updates and offers\"\n },\n \"nodes\": []\n }\n }\n },\n {\n \"key\": \"shop\",\n \"displayName\": \"Shop\",\n \"slug\": \"shop\",\n \"seo\": {\n \"title\": \"All products\"\n },\n \"nodes\": {\n \"_@_\": {\n \"$id\": \"_@_\",\n \"componentId\": \"div\",\n \"nodes\": [\n \"ds_s_section\"\n ]\n },\n \"ds_s_section\": {\n \"$id\": \"ds_s_section\",\n \"componentId\": \"muiContainer\",\n \"pluginId\": \"mui\",\n \"parentId\": \"_@_\",\n \"props\": {\n \"maxWidth\": \"xl\"\n },\n \"sx\": {\n \"paddingTop\": 6,\n \"paddingBottom\": 6\n },\n \"nodes\": [\n \"ds_s_title\",\n \"ds_s_grid\"\n ]\n },\n \"ds_s_title\": {\n \"$id\": \"ds_s_title\",\n \"componentId\": \"muiTypography\",\n \"pluginId\": \"mui\",\n \"parentId\": \"ds_s_section\",\n \"props\": {\n \"variant\": \"h3\",\n \"children\": \"All products\"\n },\n \"nodes\": []\n },\n \"ds_s_grid\": {\n \"$id\": \"ds_s_grid\",\n \"componentId\": \"product-grid\",\n \"pluginId\": \"commerce\",\n \"parentId\": \"ds_s_section\",\n \"props\": {\n \"source\": \"all\",\n \"columns\": 4,\n \"showFilters\": true\n },\n \"nodes\": []\n }\n }\n },\n {\n \"key\": \"product\",\n \"displayName\": \"Product page\",\n \"slug\": \"product\",\n \"seo\": {\n \"title\": \"Product\"\n },\n \"nodes\": {\n \"_@_\": {\n \"$id\": \"_@_\",\n \"componentId\": \"div\",\n \"nodes\": [\n \"ds_p_section\"\n ]\n },\n \"ds_p_section\": {\n \"$id\": \"ds_p_section\",\n \"componentId\": \"muiContainer\",\n \"pluginId\": \"mui\",\n \"parentId\": \"_@_\",\n \"props\": {\n \"maxWidth\": \"xl\"\n },\n \"sx\": {\n \"paddingTop\": 6,\n \"paddingBottom\": 6\n },\n \"nodes\": [\n \"ds_p_detail\"\n ]\n },\n \"ds_p_detail\": {\n \"$id\": \"ds_p_detail\",\n \"componentId\": \"product-detail\",\n \"pluginId\": \"commerce\",\n \"parentId\": \"ds_p_section\",\n \"props\": {},\n \"nodes\": []\n }\n }\n },\n {\n \"key\": \"cart\",\n \"displayName\": \"Cart\",\n \"slug\": \"cart\",\n \"seo\": {\n \"title\": \"Your cart\"\n },\n \"nodes\": {\n \"_@_\": {\n \"$id\": \"_@_\",\n \"componentId\": \"div\",\n \"nodes\": [\n \"ds_c_section\"\n ]\n },\n \"ds_c_section\": {\n \"$id\": \"ds_c_section\",\n \"componentId\": \"muiContainer\",\n \"pluginId\": \"mui\",\n \"parentId\": \"_@_\",\n \"props\": {\n \"maxWidth\": \"lg\"\n },\n \"sx\": {\n \"paddingTop\": 6,\n \"paddingBottom\": 6\n },\n \"nodes\": [\n \"ds_c_title\",\n \"ds_c_cart\"\n ]\n },\n \"ds_c_title\": {\n \"$id\": \"ds_c_title\",\n \"componentId\": \"muiTypography\",\n \"pluginId\": \"mui\",\n \"parentId\": \"ds_c_section\",\n \"props\": {\n \"variant\": \"h3\",\n \"children\": \"Your cart\"\n },\n \"nodes\": []\n },\n \"ds_c_cart\": {\n \"$id\": \"ds_c_cart\",\n \"componentId\": \"cart\",\n \"pluginId\": \"commerce\",\n \"parentId\": \"ds_c_section\",\n \"props\": {\n \"variant\": \"inline\",\n \"showCoupon\": true\n },\n \"nodes\": []\n }\n }\n },\n {\n \"key\": \"account\",\n \"displayName\": \"Account\",\n \"slug\": \"account\",\n \"seo\": {\n \"title\": \"Your account\"\n },\n \"nodes\": {\n \"_@_\": {\n \"$id\": \"_@_\",\n \"componentId\": \"div\",\n \"nodes\": [\n \"ds_a_section\"\n ]\n },\n \"ds_a_section\": {\n \"$id\": \"ds_a_section\",\n \"componentId\": \"muiContainer\",\n \"pluginId\": \"mui\",\n \"parentId\": \"_@_\",\n \"props\": {\n \"maxWidth\": \"lg\"\n },\n \"sx\": {\n \"paddingTop\": 6,\n \"paddingBottom\": 6\n },\n \"nodes\": [\n \"ds_a_account\"\n ]\n },\n \"ds_a_account\": {\n \"$id\": \"ds_a_account\",\n \"componentId\": \"customer-account\",\n \"pluginId\": \"commerce\",\n \"parentId\": \"ds_a_section\",\n \"props\": {\n \"signedOutHeading\": \"Your account\"\n },\n \"nodes\": []\n }\n }\n }\n ]\n }\n]\n"],"names":["PLUGIN_STARTER_TEMPLATES"],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* A repeat's query (AGL-181): the filter, sort and limit an element's
|
|
19
|
+
* `repeatFilter` / `repeatSort` / `repeatLimit` apply to the rows it repeats
|
|
20
|
+
* over, whatever source supplied them — the canvas preview and the published
|
|
21
|
+
* page's expansion run the same one. Deliberately evaluated IN MEMORY over
|
|
22
|
+
* the already-bounded reads (`REPEAT_MAX_RECORDS`): this sidesteps
|
|
23
|
+
* inequality-filter and composite-index constraints entirely, at the
|
|
24
|
+
* documented cost that rows beyond the fetch bound are never considered. The
|
|
25
|
+
* bound is explicit, never silently unbounded.
|
|
26
|
+
*/
|
|
27
|
+
export type RepeatQueryOp = '==' | '!=' | '>' | '>=' | '<' | '<=' | 'contains';
|
|
28
|
+
export declare const REPEAT_QUERY_OPS: RepeatQueryOp[];
|
|
29
|
+
export interface RepeatQueryWhere {
|
|
30
|
+
fieldId: string;
|
|
31
|
+
op: RepeatQueryOp;
|
|
32
|
+
/** Literal, compared with type-aware coercion against stored values. */
|
|
33
|
+
value: string;
|
|
34
|
+
}
|
|
35
|
+
export interface RepeatQuery {
|
|
36
|
+
where?: RepeatQueryWhere[];
|
|
37
|
+
orderBy?: {
|
|
38
|
+
fieldId: string;
|
|
39
|
+
direction?: 'asc' | 'desc';
|
|
40
|
+
};
|
|
41
|
+
limit?: number;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Parses the authoring shorthand `field op value` (e.g. `price <= 20`,
|
|
45
|
+
* `tier == plus`, `tags contains red`). Null for unparseable input so
|
|
46
|
+
* callers fail open (no filter) rather than filtering wrongly.
|
|
47
|
+
*/
|
|
48
|
+
export declare function parseRepeatFilter(input: string): RepeatQueryWhere | null;
|
|
49
|
+
/** Parses `field` or `field desc` into an orderBy config. */
|
|
50
|
+
export declare function parseRepeatSort(input: string): RepeatQuery['orderBy'] | null;
|
|
51
|
+
/**
|
|
52
|
+
* Applies where/orderBy/limit to in-memory rows. A clause compares the
|
|
53
|
+
* stored value whatever field it names, so rows with no declared field
|
|
54
|
+
* model filter too; timestamps compare numerically (epoch millis storage).
|
|
55
|
+
*/
|
|
56
|
+
export declare function applyRepeatQuery<Row extends Record<string, unknown>>(rows: Row[], query: RepeatQuery): Row[];
|
|
@@ -14,15 +14,15 @@
|
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
16
|
*/ /**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
* index constraints entirely, at the
|
|
23
|
-
* beyond the fetch bound are never considered. The
|
|
24
|
-
* never silently unbounded.
|
|
25
|
-
*/ export const
|
|
17
|
+
* A repeat's query (AGL-181): the filter, sort and limit an element's
|
|
18
|
+
* `repeatFilter` / `repeatSort` / `repeatLimit` apply to the rows it repeats
|
|
19
|
+
* over, whatever source supplied them — the canvas preview and the published
|
|
20
|
+
* page's expansion run the same one. Deliberately evaluated IN MEMORY over
|
|
21
|
+
* the already-bounded reads (`REPEAT_MAX_RECORDS`): this sidesteps
|
|
22
|
+
* inequality-filter and composite-index constraints entirely, at the
|
|
23
|
+
* documented cost that rows beyond the fetch bound are never considered. The
|
|
24
|
+
* bound is explicit, never silently unbounded.
|
|
25
|
+
*/ export const REPEAT_QUERY_OPS = [
|
|
26
26
|
'==',
|
|
27
27
|
'!=',
|
|
28
28
|
'>',
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
* Parses the authoring shorthand `field op value` (e.g. `price <= 20`,
|
|
36
36
|
* `tier == plus`, `tags contains red`). Null for unparseable input so
|
|
37
37
|
* callers fail open (no filter) rather than filtering wrongly.
|
|
38
|
-
*/ export function
|
|
38
|
+
*/ export function parseRepeatFilter(input) {
|
|
39
39
|
const match = String(input != null ? input : '').trim().match(/^([A-Za-z][A-Za-z0-9_]*)\s*(==|!=|>=|<=|>|<|contains)\s+(.+)$/);
|
|
40
40
|
if (!match) return null;
|
|
41
41
|
return {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
value: match[3].trim()
|
|
45
45
|
};
|
|
46
46
|
}
|
|
47
|
-
/** Parses `field` or `field desc` into an orderBy config. */ export function
|
|
47
|
+
/** Parses `field` or `field desc` into an orderBy config. */ export function parseRepeatSort(input) {
|
|
48
48
|
var _match_;
|
|
49
49
|
const match = String(input != null ? input : '').trim().match(/^([A-Za-z][A-Za-z0-9_]*)(?:\s+(asc|desc))?$/i);
|
|
50
50
|
if (!match) return null;
|
|
@@ -92,10 +92,10 @@ function matches(stored, where) {
|
|
|
92
92
|
return false;
|
|
93
93
|
}
|
|
94
94
|
/**
|
|
95
|
-
* Applies where/orderBy/limit to in-memory rows.
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
*/ export function
|
|
95
|
+
* Applies where/orderBy/limit to in-memory rows. A clause compares the
|
|
96
|
+
* stored value whatever field it names, so rows with no declared field
|
|
97
|
+
* model filter too; timestamps compare numerically (epoch millis storage).
|
|
98
|
+
*/ export function applyRepeatQuery(rows, query) {
|
|
99
99
|
var _query_where;
|
|
100
100
|
let result = rows;
|
|
101
101
|
for (const where of (_query_where = query.where) != null ? _query_where : []){
|
|
@@ -123,4 +123,4 @@ function matches(stored, where) {
|
|
|
123
123
|
return result;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
//# sourceMappingURL=
|
|
126
|
+
//# sourceMappingURL=repeat-query.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/repeat-query.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 * A repeat's query (AGL-181): the filter, sort and limit an element's\n * `repeatFilter` / `repeatSort` / `repeatLimit` apply to the rows it repeats\n * over, whatever source supplied them — the canvas preview and the published\n * page's expansion run the same one. Deliberately evaluated IN MEMORY over\n * the already-bounded reads (`REPEAT_MAX_RECORDS`): this sidesteps\n * inequality-filter and composite-index constraints entirely, at the\n * documented cost that rows beyond the fetch bound are never considered. The\n * bound is explicit, never silently unbounded.\n */\n\nexport type RepeatQueryOp =\n | '=='\n | '!='\n | '>'\n | '>='\n | '<'\n | '<='\n | 'contains'\n\nexport const REPEAT_QUERY_OPS: RepeatQueryOp[] = [\n '==',\n '!=',\n '>',\n '>=',\n '<',\n '<=',\n 'contains',\n]\n\nexport interface RepeatQueryWhere {\n fieldId: string\n op: RepeatQueryOp\n /** Literal, compared with type-aware coercion against stored values. */\n value: string\n}\n\nexport interface RepeatQuery {\n where?: RepeatQueryWhere[]\n orderBy?: { fieldId: string; direction?: 'asc' | 'desc' }\n limit?: number\n}\n\n/**\n * Parses the authoring shorthand `field op value` (e.g. `price <= 20`,\n * `tier == plus`, `tags contains red`). Null for unparseable input so\n * callers fail open (no filter) rather than filtering wrongly.\n */\nexport function parseRepeatFilter(input: string): RepeatQueryWhere | null {\n const match = String(input ?? '')\n .trim()\n .match(/^([A-Za-z][A-Za-z0-9_]*)\\s*(==|!=|>=|<=|>|<|contains)\\s+(.+)$/)\n if (!match) return null\n return {\n fieldId: match[1],\n op: match[2] as RepeatQueryOp,\n value: match[3].trim(),\n }\n}\n\n/** Parses `field` or `field desc` into an orderBy config. */\nexport function parseRepeatSort(\n input: string,\n): RepeatQuery['orderBy'] | null {\n const match = String(input ?? '')\n .trim()\n .match(/^([A-Za-z][A-Za-z0-9_]*)(?:\\s+(asc|desc))?$/i)\n if (!match) return null\n return {\n fieldId: match[1],\n direction: match[2]?.toLowerCase() === 'desc' ? 'desc' : 'asc',\n }\n}\n\nconst comparable = (value: unknown): number | string | null => {\n if (typeof value === 'number') return value\n if (typeof value === 'boolean') return value ? 1 : 0\n if (typeof value === 'string') {\n const numeric = Number(value)\n return Number.isFinite(numeric) && value.trim() !== '' ? numeric : value\n }\n return null\n}\n\nfunction matches(stored: unknown, where: RepeatQueryWhere): boolean {\n const { op, value } = where\n if (op === 'contains') {\n if (Array.isArray(stored)) {\n return stored.some(\n (entry) => String(entry).toLowerCase() === value.toLowerCase(),\n )\n }\n return String(stored ?? '')\n .toLowerCase()\n .includes(value.toLowerCase())\n }\n if (op === '==' || op === '!=') {\n const equal =\n typeof stored === 'boolean'\n ? String(stored) === value.toLowerCase()\n : String(stored ?? '') === value\n return op === '==' ? equal : !equal\n }\n const left = comparable(stored)\n const right = comparable(value)\n if (left == null || right == null || typeof left !== typeof right) {\n return false\n }\n switch (op) {\n case '>':\n return left > right\n case '>=':\n return left >= right\n case '<':\n return left < right\n case '<=':\n return left <= right\n }\n return false\n}\n\n/**\n * Applies where/orderBy/limit to in-memory rows. A clause compares the\n * stored value whatever field it names, so rows with no declared field\n * model filter too; timestamps compare numerically (epoch millis storage).\n */\nexport function applyRepeatQuery<Row extends Record<string, unknown>>(\n rows: Row[],\n query: RepeatQuery,\n): Row[] {\n let result = rows\n for (const where of query.where ?? []) {\n result = result.filter((row) => matches(row[where.fieldId], where))\n }\n if (query.orderBy) {\n const { fieldId, direction } = query.orderBy\n const sign = direction === 'desc' ? -1 : 1\n result = [...result].sort((a, b) => {\n const left = comparable(a[fieldId])\n const right = comparable(b[fieldId])\n if (left == null) return 1\n if (right == null) return -1\n if (typeof left === 'number' && typeof right === 'number') {\n return (left - right) * sign\n }\n return String(left).localeCompare(String(right)) * sign\n })\n }\n if (query.limit != null && query.limit > 0) {\n result = result.slice(0, query.limit)\n }\n return result\n}\n"],"names":["REPEAT_QUERY_OPS","parseRepeatFilter","input","match","String","trim","fieldId","op","value","parseRepeatSort","direction","toLowerCase","comparable","numeric","Number","isFinite","matches","stored","where","Array","isArray","some","entry","includes","equal","left","right","applyRepeatQuery","rows","query","result","filter","row","orderBy","sign","sort","a","b","localeCompare","limit","slice"],"mappings":"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"}
|
|
@@ -40,7 +40,6 @@ export * from './child-contract-compose';
|
|
|
40
40
|
export * from './lineal-order';
|
|
41
41
|
export * from './node-definition-sanitizer';
|
|
42
42
|
export * from './console-routes';
|
|
43
|
-
export * from './console-record-links';
|
|
44
43
|
export * from './screen-link-value';
|
|
45
44
|
export * from './link-references';
|
|
46
45
|
export * from './analytics-path-key';
|
|
@@ -48,11 +47,10 @@ export * from './contacts';
|
|
|
48
47
|
export * from './email-state';
|
|
49
48
|
export * from './crm';
|
|
50
49
|
export * from './crm-email-templates';
|
|
51
|
-
export * from './crm-booking';
|
|
52
50
|
export * from './person-erasure';
|
|
53
|
-
export * from './crm-reports';
|
|
54
51
|
export * from './crm-task-reminders';
|
|
55
|
-
export * from './
|
|
52
|
+
export * from './email-text';
|
|
53
|
+
export * from './inbound-mail-domain';
|
|
56
54
|
export * from './member-email-aliases';
|
|
57
55
|
export * from './crm-next-activity';
|
|
58
56
|
export { csvCell, csvDocument, customImportTarget, customImportTargetKey, importNoMailServerSentence, } from './csv-import';
|
|
@@ -61,9 +59,9 @@ export * from './contact-custom-fields';
|
|
|
61
59
|
export * from './consent-groups';
|
|
62
60
|
export * from './marketing-consent';
|
|
63
61
|
export * from './retained-refusals';
|
|
64
|
-
export * from './
|
|
62
|
+
export * from './enrollment-basis';
|
|
65
63
|
export * from './dynamic-list-rule';
|
|
66
|
-
export * from './
|
|
64
|
+
export * from './subscription-topics';
|
|
67
65
|
export * from './compose-layout-nodes';
|
|
68
66
|
export * from './compose-layout-props';
|
|
69
67
|
export * from './layout-style-overrides';
|
|
@@ -87,7 +85,7 @@ export * from './password-policy';
|
|
|
87
85
|
export * from './idp-profile';
|
|
88
86
|
export * from './onboarding-deep-link';
|
|
89
87
|
export * from './utm-attribution';
|
|
90
|
-
export * from './
|
|
88
|
+
export * from './container-membership';
|
|
91
89
|
export * from './deployment-shape';
|
|
92
90
|
export * from './upload-cors';
|
|
93
91
|
export * from './docs-help';
|
|
@@ -151,10 +149,10 @@ export * from './paid-media-source';
|
|
|
151
149
|
export * from './author-css';
|
|
152
150
|
export * from './author-html';
|
|
153
151
|
export * from './dataset-models';
|
|
154
|
-
export * from './
|
|
152
|
+
export * from './csv';
|
|
155
153
|
export * from './csv-upload';
|
|
156
154
|
export * from './artifact-provenance';
|
|
157
|
-
export * from './
|
|
155
|
+
export * from './repeat-query';
|
|
158
156
|
export * from './plugin-manifest';
|
|
159
157
|
export * from './email-starter-policy';
|
|
160
158
|
export * from './safe-json-ld';
|
|
@@ -54,7 +54,6 @@ export * from "./lineal-order.js";
|
|
|
54
54
|
// a model generated both pass through it.
|
|
55
55
|
export * from "./node-definition-sanitizer.js";
|
|
56
56
|
export * from "./console-routes.js";
|
|
57
|
-
export * from "./console-record-links.js";
|
|
58
57
|
// What a stored screen-link value means, with no React attached — the
|
|
59
58
|
// where-used scan reads these on the server (AGL-703).
|
|
60
59
|
export * from "./screen-link-value.js";
|
|
@@ -76,29 +75,21 @@ export * from "./crm.js";
|
|
|
76
75
|
// the dialog fill it in by. Pure like `crm`, and beside it because a
|
|
77
76
|
// template is scoped the way a task is.
|
|
78
77
|
export * from "./crm-email-templates.js";
|
|
79
|
-
// The booking door's shared vocabulary (AGL-2660): the query keys a booking
|
|
80
|
-
// link carries, the record reference inside it, and the wording and due
|
|
81
|
-
// date of what a booking files back on the record.
|
|
82
|
-
export * from "./crm-booking.js";
|
|
83
78
|
// A person's privacy erasure from one workspace (AGL-2623): the request's
|
|
84
79
|
// shape and id, the marker a record carries while it waits, and the lists
|
|
85
80
|
// the dialog and the docs share. Pure like `crm`; the sweep is server-side.
|
|
86
81
|
export * from "./person-erasure.js";
|
|
87
|
-
// What the CRM's reports compute from what they read — periods, weekly
|
|
88
|
-
// buckets, the lifecycle funnel, pipeline totals (AGL-2604). Pure like `crm`,
|
|
89
|
-
// and beside it because it reads the stage list and the deal weighting from
|
|
90
|
-
// there rather than restating either.
|
|
91
|
-
export * from "./crm-reports.js";
|
|
92
82
|
// A task's reminder at its own time (AGL-2659): which reminder a save
|
|
93
83
|
// leaves, whether one is owed, and the words the notification and the mail
|
|
94
|
-
// say. Pure like `crm
|
|
95
|
-
//
|
|
84
|
+
// say. Pure like `crm`, read by the hourly route and by every writer of the
|
|
85
|
+
// field.
|
|
96
86
|
export * from "./crm-task-reminders.js";
|
|
97
|
-
//
|
|
98
|
-
//
|
|
99
|
-
//
|
|
100
|
-
//
|
|
101
|
-
export * from "./
|
|
87
|
+
// Reading a received email (AGL-2657): the address in a header, the thread
|
|
88
|
+
// a subject belongs to, the reply above the quoted history — and the domain
|
|
89
|
+
// the platform receives mail on. Pure; every surface that reads mail it was
|
|
90
|
+
// sent reads it this way.
|
|
91
|
+
export * from "./email-text.js";
|
|
92
|
+
export * from "./inbound-mail-domain.js";
|
|
102
93
|
// A member's own addresses in a workspace (AGL-2975): the ones they have
|
|
103
94
|
// confirmed count as theirs wherever the roster is asked who wrote a
|
|
104
95
|
// message. Pure; the store and the confirmation link are server-side.
|
|
@@ -130,7 +121,7 @@ export * from "./retained-refusals.js";
|
|
|
130
121
|
// mail somebody, and this decides what basis putting them on a list may
|
|
131
122
|
// record. Two enrollment surfaces import it — the Inbox assignment route and
|
|
132
123
|
// the Emails console's audience card — and neither could import the other.
|
|
133
|
-
export * from "./
|
|
124
|
+
export * from "./enrollment-basis.js";
|
|
134
125
|
// Reading the FILE a merchant arrives with (`docs/specs/email-competitive-gaps.md`
|
|
135
126
|
// G5/P4), directly after the policy it hands its addresses to: parsing and
|
|
136
127
|
// mechanical screening only, so that an import asks the enrollment question
|
|
@@ -144,7 +135,7 @@ export * from "./dynamic-list-rule.js";
|
|
|
144
135
|
// sides of the feature: the composer picks one, the send path signs it into
|
|
145
136
|
// the unsubscribe link, and the unauthenticated preference page renders the
|
|
146
137
|
// catalog. No Node builtin, so it stays out of the `/server`-only group.
|
|
147
|
-
export * from "./
|
|
138
|
+
export * from "./subscription-topics.js";
|
|
148
139
|
export * from "./compose-layout-nodes.js";
|
|
149
140
|
// Layout properties applied through the chain (AGL-2893).
|
|
150
141
|
export * from "./compose-layout-props.js";
|
|
@@ -178,11 +169,12 @@ export * from "./onboarding-deep-link.js";
|
|
|
178
169
|
// they are the same hop — the marketing CTA's query string — and both are
|
|
179
170
|
// remembered on `users/{uid}` across the verification wall.
|
|
180
171
|
export * from "./utm-attribution.js";
|
|
181
|
-
//
|
|
182
|
-
//
|
|
183
|
-
//
|
|
184
|
-
// CAME from, this records what a merchant DECLARED
|
|
185
|
-
|
|
172
|
+
// What a record is filed under: the edge between a container a plugin keeps
|
|
173
|
+
// (a campaign) and the forms, screens and contacts it gathers. Beside the
|
|
174
|
+
// attribution above because the two answer opposite questions: attribution
|
|
175
|
+
// records where somebody CAME from, this records what a merchant DECLARED
|
|
176
|
+
// belongs together.
|
|
177
|
+
export * from "./container-membership.js";
|
|
186
178
|
export * from "./deployment-shape.js";
|
|
187
179
|
// Which browser origins may complete a signed direct-to-GCS upload (AGL-1452).
|
|
188
180
|
// GCS matches the origin list EXACTLY, so every serving console name needs its
|
|
@@ -290,10 +282,10 @@ export * from "./author-css.js";
|
|
|
290
282
|
// The isomorphic HTML rule (AGL-1901), after the CSS one it depends on.
|
|
291
283
|
export * from "./author-html.js";
|
|
292
284
|
export * from "./dataset-models.js";
|
|
293
|
-
export * from "./
|
|
285
|
+
export * from "./csv.js";
|
|
294
286
|
export * from "./csv-upload.js";
|
|
295
287
|
export * from "./artifact-provenance.js";
|
|
296
|
-
export * from "./
|
|
288
|
+
export * from "./repeat-query.js";
|
|
297
289
|
export * from "./plugin-manifest.js";
|
|
298
290
|
// After `plugin-manifest`, whose revocation predicates it asks the kill
|
|
299
291
|
// question with, and after `media-ref`, whose grammar decides what counts as a
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/server.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2022 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 * Server-safe app-utils: every app-util EXCEPT the client-only React\n * contexts (see ./contexts). Nothing here calls `createContext` at module\n * scope, so this barrel — re-exported by `@aglyn/aglyn/server` — is safe to\n * import from tenant Server Components (AGL-405). The full `./index` barrel\n * re-adds the contexts for client consumers.\n */\nexport * from './binding-token-catalog'\nexport * from './binding-tokens'\nexport * from './breadcrumb-json-ld'\n// What a search listing holds and how long each field may be (AGL-2910):\n// the SEO editors and anything that proposes a value read one catalog.\nexport * from './seo-listing-fields'\n// `VideoObject` for the Video elements a page actually ships (AGL-2747).\n// Beside the other structured-data builders, and server-only like them: only\n// the route emits JSON-LD, and a crawler-facing block has no client caller.\nexport * from './video-object'\nexport * from './collection-delete'\nexport * from './collection-entries'\nexport * from './collection-kind'\nexport * from './collection-slug'\nexport * from './content-authors'\n// NOT re-exported: `./local-business` and `./site-entity-json-ld` (AGL-3383).\n// This barrel is the whole namespace a realm bundle is handed and part of the\n// runtime a published page loads (`check:tenant-wire-weight`); the site\n// entity's JSON-LD and the LocalBusiness allow-list are read only by the\n// tenant page's server render and the console's Setup → SEO card, which import\n// them by path (`@aglyn/aglyn/app-utils/...`).\nexport * from './content-query-fields'\nexport * from './content-schema-type'\nexport * from './content-author-profile'\nexport * from './url-slug'\nexport * from './child-contract'\nexport * from './child-contract-compose'\n// The one reading of `restrictChildren`/`restrictParent`, shared by the\n// besigner's drop check and the AI plugin's node-tree validator (AGL-2905).\nexport * from './lineal-order'\n// What a portable node tree must satisfy before it lands on a canvas that did\n// not author it (AGL-2939): a tree installed from another workspace and a tree\n// a model generated both pass through it.\nexport * from './node-definition-sanitizer'\nexport * from './console-routes'\nexport * from './console-record-links'\n// What a stored screen-link value means, with no React attached — the\n// where-used scan reads these on the server (AGL-703).\nexport * from './screen-link-value'\n// Which entries a page's links name (AGL-3118). The tenant render reads\n// exactly those entry documents, so the walk runs on the server.\nexport * from './link-references'\nexport * from './analytics-path-key'\nexport * from './contacts'\n// A lead's or a contact's email state (AGL-3245): the last verdict on its\n// address, in words a person can act on, mirrored from the senders' lists.\nexport * from './email-state'\n// The records that sit beside a contact — companies, pipelines, deals, tasks,\n// activities, field definitions (AGL-2595). Pure like `contacts`, and beside\n// it because `ContactFacet` names its lifecycle stage and custom-value types;\n// the scope stamp every CRM creator writes lives here too.\nexport * from './crm'\n// Email templates, snippets and the merge-field resolver (AGL-2658): the\n// letter a rep keeps under a name, and the one grammar the send route and\n// the dialog fill it in by. Pure like `crm`, and beside it because a\n// template is scoped the way a task is.\nexport * from './crm-email-templates'\n// The booking door's shared vocabulary (AGL-2660): the query keys a booking\n// link carries, the record reference inside it, and the wording and due\n// date of what a booking files back on the record.\nexport * from './crm-booking'\n// A person's privacy erasure from one workspace (AGL-2623): the request's\n// shape and id, the marker a record carries while it waits, and the lists\n// the dialog and the docs share. Pure like `crm`; the sweep is server-side.\nexport * from './person-erasure'\n// What the CRM's reports compute from what they read — periods, weekly\n// buckets, the lifecycle funnel, pipeline totals (AGL-2604). Pure like `crm`,\n// and beside it because it reads the stage list and the deal weighting from\n// there rather than restating either.\nexport * from './crm-reports'\n// A task's reminder at its own time (AGL-2659): which reminder a save\n// leaves, whether one is owed, and the words the notification and the mail\n// say. Pure like `crm-reports`, read by the hourly route and by every\n// writer of the field.\nexport * from './crm-task-reminders'\n// Email capture (AGL-2657): the address's shape and token, which of a\n// message's addresses is the correspondent, the excerpt, and the row a\n// captured message becomes. Pure like `crm-reports`; the webhook route and\n// the address route are the readers with Firestore.\nexport * from './crm-inbound'\n// A member's own addresses in a workspace (AGL-2975): the ones they have\n// confirmed count as theirs wherever the roster is asked who wrote a\n// message. Pure; the store and the confirmation link are server-side.\nexport * from './member-email-aliases'\n// The next activity a record carries (AGL-2661): what `nextTaskAtMs` IS given\n// a record's open tasks, the view clause a list filters on, the report figure.\n// Pure like `crm`; the admin library's `recomputeCrmNextTaskAt` is the writer.\nexport * from './crm-next-activity'\n// The CSV cell grammar the exports write with (AGL-2621), and the target a\n// mapped column names for a custom field — named rather than starred, because\n// an importer built on this file exports the shared ceilings under its own\n// names.\nexport {\n csvCell,\n csvDocument,\n customImportTarget,\n customImportTargetKey,\n importNoMailServerSentence,\n} from './csv-import'\nexport type {\n ImportChunkResult,\n ImportDroppedValue,\n ImportSkippedRow,\n} from './csv-import'\n// What a VALUE under a custom contact field may be, and the coercion every\n// door applies to one (AGL-2601): a mapped form field, an API `custom` body,\n// and the carry-over that keeps a mapping across a publish. Pure like `crm`.\nexport * from './contact-custom-fields'\n// The consent JOIN (`docs/specs/email-overhaul.md` §3f). Pure, and it composes\n// `contacts` for the normalizer, so it sits directly beside it. No Node\n// builtin, which is what keeps it out of the `/server`-only group `person-key`\n// belongs to.\nexport * from './consent-groups'\nexport * from './marketing-consent'\n// A refusal kept after the record it was written on is deleted (AGL-3338),\n// read back through the same parser as the record's own.\nexport * from './retained-refusals'\n// The ENROLLMENT-time half of the same question, beside its reader for the\n// same reason: `marketing-consent` decides whether a recorded basis lets us\n// mail somebody, and this decides what basis putting them on a list may\n// record. Two enrollment surfaces import it — the Inbox assignment route and\n// the Emails console's audience card — and neither could import the other.\nexport * from './list-assignment-policy'\n// Reading the FILE a merchant arrives with (`docs/specs/email-competitive-gaps.md`\n// G5/P4), directly after the policy it hands its addresses to: parsing and\n// mechanical screening only, so that an import asks the enrollment question\n// through the same module the one-address add path asks it through rather\n// than answering it a second way.\n// The dynamic-list rule (§3b/§3c), beside it for the same reasons: pure, and\n// it composes `contacts` for the segment vocabulary rather than restating it.\nexport * from './dynamic-list-rule'\n// The subscribable streams a recipient can leave one at a time\n// (`docs/specs/email-competitive-gaps.md` §1f). Pure, and read from all three\n// sides of the feature: the composer picks one, the send path signs it into\n// the unsubscribe link, and the unauthenticated preference page renders the\n// catalog. No Node builtin, so it stays out of the `/server`-only group.\nexport * from './email-topics'\nexport * from './compose-layout-nodes'\n// Layout properties applied through the chain (AGL-2893).\nexport * from './compose-layout-props'\n// A screen's per-page restyling of its layout's elements (AGL-3286).\nexport * from './layout-style-overrides'\nexport * from './document-landmark'\nexport * from './functions'\nexport * from './compose-reusable-components'\n// Where a reusable component is placed — pages or emails (AGL-3287).\nexport * from './reusable-component-kind'\nexport * from './compress'\nexport * from './merge-node-sx'\nexport * from './palette-sx'\nexport * from './scheme-sx'\n// An element pinned to one color scheme (AGL-3284).\nexport * from './element-color-scheme'\nexport * from './create-resource-uid'\nexport * from './decompress'\nexport * from './stored-nodes'\nexport * from './strip-undefined'\nexport * from './organizations'\nexport * from './org-permissions'\n// The AI verdict on either membership axis (AGL-2927). After both modules it\n// composes: the org catalog for org-wide members, the host role for site\n// collaborators.\nexport * from './host-permissions'\nexport * from './password-policy'\nexport * from './idp-profile'\nexport * from './onboarding-deep-link'\n// Where an account came from (AGL-1731). Beside the plan intent because\n// they are the same hop — the marketing CTA's query string — and both are\n// remembered on `users/{uid}` across the verification wall.\nexport * from './utm-attribution'\n// The edge between a campaign and the forms, screens and contacts a push is\n// coordinated across. Beside the attribution above because the two answer\n// opposite questions about the same word: attribution records where somebody\n// CAME from, this records what a merchant DECLARED belongs together.\nexport * from './campaign-membership'\nexport * from './deployment-shape'\n// Which browser origins may complete a signed direct-to-GCS upload (AGL-1452).\n// GCS matches the origin list EXACTLY, so every serving console name needs its\n// own entry — the rule nobody could be expected to remember at attach time.\nexport * from './upload-cors'\n// The docs-help subset the first-party plugin consoles read (AGL-2213) — the\n// console's own registry lives in apps/console/constants and a lib cannot\n// import an app.\nexport * from './docs-help'\nexport * from './platform-brand'\nexport * from './plan-entitlements'\n// The free plan's bandwidth hard cap (AGL-1967/2070/2155). After\n// `plan-entitlements`, which owns the predicate it keys off.\nexport * from './bandwidth-cap'\nexport * from './form-abuse-ceiling'\nexport * from './forms'\n// What a form's DESIGN must still satisfy for its submissions to arrive.\n// After `forms`, whose field walk it reads the drawn fields with.\nexport * from './form-contract'\nexport * from './visitor-record-ceiling'\nexport * from './health-report'\n// Did a webhook delivery actually DO anything (AGL-1954)? After\n// `health-report`, whose billing verdict consumes the counts this produces.\nexport * from './webhook-delivery'\nexport * from './support-tiers'\nexport * from './release-flags'\n// Who runs THIS deployment, and where its notices go (AGL-2016). Ordered\n// before the four surfaces that print it, all of which used to declare their\n// own `support@aglyn.com` literal.\nexport * from './operator-identity'\nexport * from './lockdown'\nexport * from './media-quarantine'\nexport * from './media-takedown-reach'\nexport * from './upload-inspection'\nexport * from './abuse-report'\n// The other three quarters of §512 (AGL-1983): the put-back procedure that\n// answers a notice, and the strike ledger that conditions the safe harbour.\nexport * from './dmca-counter-notice'\nexport * from './repeat-infringer'\n// `addBusinessDays` briefly existed TWICE — once here in './support-tiers'\n// and once in './dmca-counter-notice' — and two `export *` made the name\n// ambiguous, TS2308'ing this barrel and every tsconfig that reads it. The\n// interleave was fixed twice in parallel: once by naming a winner here, and\n// once by deleting the second definition so './dmca-counter-notice' imports\n// this one. Only the deletion survives, so the disambiguating re-export that\n// stood on this line is gone with it — `export *` is unambiguous again.\n//\n// The concern that argued for keeping two copies is worth answering rather\n// than dropping: a later tweak to the SUPPORT SLA window must never silently\n// move the §512(g)(2)(C) put-back deadline. It cannot. This function embeds\n// no window — it is \"add N business days\", and N is the argument. The two\n// windows live in their own constants (`SUPPORT_*` there,\n// `COUNTER_NOTICE_*_BUSINESS_DAYS` in the DMCA module) and never meet. What\n// SHOULD stay shared is the day arithmetic itself: two copies of a weekend\n// rule are two chances to disagree about which day a deadline falls on.\nexport * from './org-override-reason'\nexport * from './host-tokens'\nexport * from './variables'\n// What happened on a site that an automation can start on: the platform's\n// own event and the ones plugins declare (AGL-3080).\nexport * from './host-events'\nexport * from './datasets'\nexport * from './expand-repeatables'\nexport * from './org-roles'\nexport * from './markdown-lite'\nexport * from './notifications'\n// The operator alert registry (AGL-3377); OPERATOR_ALERT_NOTIFICATION_TYPES\n// lives here now, derived from it.\nexport * from './operator-alerts'\nexport * from './definition-canvas-tree'\nexport * from './ensure-canvas-root'\nexport * from './repair-canvas-nodes'\nexport * from './detect-template-placeholders'\nexport * from './guarded-version-save'\nexport * from './local-storage-budget'\nexport * from './measure-node-map'\nexport * from './resolve-named-tokens'\nexport * from './screen-route'\nexport * from './host-naming'\nexport * from './name-search'\nexport * from './artifact-list-keys'\nexport * from './name-match'\nexport * from './api-plugins'\nexport * from './plugin-api-rate-limit'\n// The same-origin gate on visitor-facing plugin writes (AGL-1880). After\n// `plugin-api-rate-limit`, whose `isMachinePluginApiPath` it reuses so the\n// two gates exempt exactly the same machine surfaces.\nexport * from './plugin-api-cross-origin'\n// What a published page does when a visitor does something (AGL-3080): the\n// platform's interaction vocabulary, which `./actions` builds its automations on.\nexport * from './site-interactions'\nexport * from './actions'\nexport * from './element-animation'\nexport * from './attribution-guard'\nexport * from './node-interactions'\nexport * from './element-ui'\nexport * from './image-upload-types'\nexport * from './sanitize-svg'\nexport * from './media-folders'\nexport * from './media-metadata'\nexport * from './media-ref'\n// After `media-ref`, whose reference grammar it reads stored URLs with.\nexport * from './paid-media-source'\nexport * from './author-css'\n// The isomorphic HTML rule (AGL-1901), after the CSS one it depends on.\nexport * from './author-html'\nexport * from './dataset-models'\nexport * from './dataset-csv'\nexport * from './csv-upload'\nexport * from './artifact-provenance'\nexport * from './dataset-query'\nexport * from './plugin-manifest'\n// After `plugin-manifest`, whose revocation predicates it asks the kill\n// question with, and after `media-ref`, whose grammar decides what counts as a\n// first-party image.\nexport * from './email-starter-policy'\nexport * from './safe-json-ld'\n// Agent readiness (AGL-2716): content negotiation, the Markdown rendering of a\n// page, `/llms.txt` and the per-site OpenAPI document. All pure, all server-safe.\nexport * from './accept-negotiation'\nexport * from './agent-api-catalog'\nexport * from './agent-openapi'\nexport * from './author-html-markdown'\nexport * from './llms-txt'\nexport * from './page-markdown'\nexport * from './request-geo'\nexport * from './request-ip'\nexport * from './search-indexing'\nexport * from './seo-title'\nexport * from './sitemap'\nexport * from './visitor-consent'\nexport * from './social-image'\nexport * from './scope-tokens'\nexport * from './org-billing-doc'\nexport * from './stripe-deployment-mode'\nexport * from './deferred-image'\n"],"names":["csvCell","csvDocument","customImportTarget","customImportTargetKey","importNoMailServerSentence"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;CAMC,GACD,cAAc,6BAAyB;AACvC,cAAc,sBAAkB;AAChC,cAAc,0BAAsB;AACpC,yEAAyE;AACzE,uEAAuE;AACvE,cAAc,0BAAsB;AACpC,yEAAyE;AACzE,6EAA6E;AAC7E,4EAA4E;AAC5E,cAAc,oBAAgB;AAC9B,cAAc,yBAAqB;AACnC,cAAc,0BAAsB;AACpC,cAAc,uBAAmB;AACjC,cAAc,uBAAmB;AACjC,cAAc,uBAAmB;AACjC,8EAA8E;AAC9E,8EAA8E;AAC9E,wEAAwE;AACxE,yEAAyE;AACzE,+EAA+E;AAC/E,+CAA+C;AAC/C,cAAc,4BAAwB;AACtC,cAAc,2BAAuB;AACrC,cAAc,8BAA0B;AACxC,cAAc,gBAAY;AAC1B,cAAc,sBAAkB;AAChC,cAAc,8BAA0B;AACxC,wEAAwE;AACxE,4EAA4E;AAC5E,cAAc,oBAAgB;AAC9B,8EAA8E;AAC9E,+EAA+E;AAC/E,0CAA0C;AAC1C,cAAc,iCAA6B;AAC3C,cAAc,sBAAkB;AAChC,cAAc,4BAAwB;AACtC,sEAAsE;AACtE,uDAAuD;AACvD,cAAc,yBAAqB;AACnC,wEAAwE;AACxE,iEAAiE;AACjE,cAAc,uBAAmB;AACjC,cAAc,0BAAsB;AACpC,cAAc,gBAAY;AAC1B,0EAA0E;AAC1E,2EAA2E;AAC3E,cAAc,mBAAe;AAC7B,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,2DAA2D;AAC3D,cAAc,WAAO;AACrB,yEAAyE;AACzE,0EAA0E;AAC1E,qEAAqE;AACrE,wCAAwC;AACxC,cAAc,2BAAuB;AACrC,4EAA4E;AAC5E,wEAAwE;AACxE,mDAAmD;AACnD,cAAc,mBAAe;AAC7B,0EAA0E;AAC1E,0EAA0E;AAC1E,4EAA4E;AAC5E,cAAc,sBAAkB;AAChC,uEAAuE;AACvE,8EAA8E;AAC9E,4EAA4E;AAC5E,sCAAsC;AACtC,cAAc,mBAAe;AAC7B,sEAAsE;AACtE,2EAA2E;AAC3E,sEAAsE;AACtE,uBAAuB;AACvB,cAAc,0BAAsB;AACpC,sEAAsE;AACtE,uEAAuE;AACvE,2EAA2E;AAC3E,oDAAoD;AACpD,cAAc,mBAAe;AAC7B,yEAAyE;AACzE,qEAAqE;AACrE,sEAAsE;AACtE,cAAc,4BAAwB;AACtC,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,cAAc,yBAAqB;AACnC,2EAA2E;AAC3E,8EAA8E;AAC9E,2EAA2E;AAC3E,SAAS;AACT,SACEA,OAAO,EACPC,WAAW,EACXC,kBAAkB,EAClBC,qBAAqB,EACrBC,0BAA0B,QACrB,kBAAc;AAMrB,2EAA2E;AAC3E,6EAA6E;AAC7E,6EAA6E;AAC7E,cAAc,6BAAyB;AACvC,+EAA+E;AAC/E,wEAAwE;AACxE,+EAA+E;AAC/E,cAAc;AACd,cAAc,sBAAkB;AAChC,cAAc,yBAAqB;AACnC,2EAA2E;AAC3E,yDAAyD;AACzD,cAAc,yBAAqB;AACnC,2EAA2E;AAC3E,4EAA4E;AAC5E,wEAAwE;AACxE,6EAA6E;AAC7E,2EAA2E;AAC3E,cAAc,8BAA0B;AACxC,mFAAmF;AACnF,2EAA2E;AAC3E,4EAA4E;AAC5E,0EAA0E;AAC1E,kCAAkC;AAClC,6EAA6E;AAC7E,8EAA8E;AAC9E,cAAc,yBAAqB;AACnC,+DAA+D;AAC/D,8EAA8E;AAC9E,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,cAAc,oBAAgB;AAC9B,cAAc,4BAAwB;AACtC,0DAA0D;AAC1D,cAAc,4BAAwB;AACtC,qEAAqE;AACrE,cAAc,8BAA0B;AACxC,cAAc,yBAAqB;AACnC,cAAc,iBAAa;AAC3B,cAAc,mCAA+B;AAC7C,qEAAqE;AACrE,cAAc,+BAA2B;AACzC,cAAc,gBAAY;AAC1B,cAAc,qBAAiB;AAC/B,cAAc,kBAAc;AAC5B,cAAc,iBAAa;AAC3B,oDAAoD;AACpD,cAAc,4BAAwB;AACtC,cAAc,2BAAuB;AACrC,cAAc,kBAAc;AAC5B,cAAc,oBAAgB;AAC9B,cAAc,uBAAmB;AACjC,cAAc,qBAAiB;AAC/B,cAAc,uBAAmB;AACjC,6EAA6E;AAC7E,yEAAyE;AACzE,iBAAiB;AACjB,cAAc,wBAAoB;AAClC,cAAc,uBAAmB;AACjC,cAAc,mBAAe;AAC7B,cAAc,4BAAwB;AACtC,wEAAwE;AACxE,0EAA0E;AAC1E,4DAA4D;AAC5D,cAAc,uBAAmB;AACjC,4EAA4E;AAC5E,0EAA0E;AAC1E,6EAA6E;AAC7E,qEAAqE;AACrE,cAAc,2BAAuB;AACrC,cAAc,wBAAoB;AAClC,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,cAAc,mBAAe;AAC7B,6EAA6E;AAC7E,0EAA0E;AAC1E,iBAAiB;AACjB,cAAc,iBAAa;AAC3B,cAAc,sBAAkB;AAChC,cAAc,yBAAqB;AACnC,iEAAiE;AACjE,6DAA6D;AAC7D,cAAc,qBAAiB;AAC/B,cAAc,0BAAsB;AACpC,cAAc,aAAS;AACvB,yEAAyE;AACzE,kEAAkE;AAClE,cAAc,qBAAiB;AAC/B,cAAc,8BAA0B;AACxC,cAAc,qBAAiB;AAC/B,gEAAgE;AAChE,4EAA4E;AAC5E,cAAc,wBAAoB;AAClC,cAAc,qBAAiB;AAC/B,cAAc,qBAAiB;AAC/B,yEAAyE;AACzE,6EAA6E;AAC7E,mCAAmC;AACnC,cAAc,yBAAqB;AACnC,cAAc,gBAAY;AAC1B,cAAc,wBAAoB;AAClC,cAAc,4BAAwB;AACtC,cAAc,yBAAqB;AACnC,cAAc,oBAAgB;AAC9B,2EAA2E;AAC3E,4EAA4E;AAC5E,cAAc,2BAAuB;AACrC,cAAc,wBAAoB;AAClC,2EAA2E;AAC3E,yEAAyE;AACzE,0EAA0E;AAC1E,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,wEAAwE;AACxE,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,0EAA0E;AAC1E,0DAA0D;AAC1D,4EAA4E;AAC5E,2EAA2E;AAC3E,wEAAwE;AACxE,cAAc,2BAAuB;AACrC,cAAc,mBAAe;AAC7B,cAAc,iBAAa;AAC3B,0EAA0E;AAC1E,qDAAqD;AACrD,cAAc,mBAAe;AAC7B,cAAc,gBAAY;AAC1B,cAAc,0BAAsB;AACpC,cAAc,iBAAa;AAC3B,cAAc,qBAAiB;AAC/B,cAAc,qBAAiB;AAC/B,4EAA4E;AAC5E,mCAAmC;AACnC,cAAc,uBAAmB;AACjC,cAAc,8BAA0B;AACxC,cAAc,0BAAsB;AACpC,cAAc,2BAAuB;AACrC,cAAc,oCAAgC;AAC9C,cAAc,4BAAwB;AACtC,cAAc,4BAAwB;AACtC,cAAc,wBAAoB;AAClC,cAAc,4BAAwB;AACtC,cAAc,oBAAgB;AAC9B,cAAc,mBAAe;AAC7B,cAAc,mBAAe;AAC7B,cAAc,0BAAsB;AACpC,cAAc,kBAAc;AAC5B,cAAc,mBAAe;AAC7B,cAAc,6BAAyB;AACvC,yEAAyE;AACzE,2EAA2E;AAC3E,sDAAsD;AACtD,cAAc,+BAA2B;AACzC,2EAA2E;AAC3E,kFAAkF;AAClF,cAAc,yBAAqB;AACnC,cAAc,eAAW;AACzB,cAAc,yBAAqB;AACnC,cAAc,yBAAqB;AACnC,cAAc,yBAAqB;AACnC,cAAc,kBAAc;AAC5B,cAAc,0BAAsB;AACpC,cAAc,oBAAgB;AAC9B,cAAc,qBAAiB;AAC/B,cAAc,sBAAkB;AAChC,cAAc,iBAAa;AAC3B,wEAAwE;AACxE,cAAc,yBAAqB;AACnC,cAAc,kBAAc;AAC5B,wEAAwE;AACxE,cAAc,mBAAe;AAC7B,cAAc,sBAAkB;AAChC,cAAc,mBAAe;AAC7B,cAAc,kBAAc;AAC5B,cAAc,2BAAuB;AACrC,cAAc,qBAAiB;AAC/B,cAAc,uBAAmB;AACjC,wEAAwE;AACxE,+EAA+E;AAC/E,qBAAqB;AACrB,cAAc,4BAAwB;AACtC,cAAc,oBAAgB;AAC9B,+EAA+E;AAC/E,kFAAkF;AAClF,cAAc,0BAAsB;AACpC,cAAc,yBAAqB;AACnC,cAAc,qBAAiB;AAC/B,cAAc,4BAAwB;AACtC,cAAc,gBAAY;AAC1B,cAAc,qBAAiB;AAC/B,cAAc,mBAAe;AAC7B,cAAc,kBAAc;AAC5B,cAAc,uBAAmB;AACjC,cAAc,iBAAa;AAC3B,cAAc,eAAW;AACzB,cAAc,uBAAmB;AACjC,cAAc,oBAAgB;AAC9B,cAAc,oBAAgB;AAC9B,cAAc,uBAAmB;AACjC,cAAc,8BAA0B;AACxC,cAAc,sBAAkB"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/server.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2022 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 * Server-safe app-utils: every app-util EXCEPT the client-only React\n * contexts (see ./contexts). Nothing here calls `createContext` at module\n * scope, so this barrel — re-exported by `@aglyn/aglyn/server` — is safe to\n * import from tenant Server Components (AGL-405). The full `./index` barrel\n * re-adds the contexts for client consumers.\n */\nexport * from './binding-token-catalog'\nexport * from './binding-tokens'\nexport * from './breadcrumb-json-ld'\n// What a search listing holds and how long each field may be (AGL-2910):\n// the SEO editors and anything that proposes a value read one catalog.\nexport * from './seo-listing-fields'\n// `VideoObject` for the Video elements a page actually ships (AGL-2747).\n// Beside the other structured-data builders, and server-only like them: only\n// the route emits JSON-LD, and a crawler-facing block has no client caller.\nexport * from './video-object'\nexport * from './collection-delete'\nexport * from './collection-entries'\nexport * from './collection-kind'\nexport * from './collection-slug'\nexport * from './content-authors'\n// NOT re-exported: `./local-business` and `./site-entity-json-ld` (AGL-3383).\n// This barrel is the whole namespace a realm bundle is handed and part of the\n// runtime a published page loads (`check:tenant-wire-weight`); the site\n// entity's JSON-LD and the LocalBusiness allow-list are read only by the\n// tenant page's server render and the console's Setup → SEO card, which import\n// them by path (`@aglyn/aglyn/app-utils/...`).\nexport * from './content-query-fields'\nexport * from './content-schema-type'\nexport * from './content-author-profile'\nexport * from './url-slug'\nexport * from './child-contract'\nexport * from './child-contract-compose'\n// The one reading of `restrictChildren`/`restrictParent`, shared by the\n// besigner's drop check and the AI plugin's node-tree validator (AGL-2905).\nexport * from './lineal-order'\n// What a portable node tree must satisfy before it lands on a canvas that did\n// not author it (AGL-2939): a tree installed from another workspace and a tree\n// a model generated both pass through it.\nexport * from './node-definition-sanitizer'\nexport * from './console-routes'\n// What a stored screen-link value means, with no React attached — the\n// where-used scan reads these on the server (AGL-703).\nexport * from './screen-link-value'\n// Which entries a page's links name (AGL-3118). The tenant render reads\n// exactly those entry documents, so the walk runs on the server.\nexport * from './link-references'\nexport * from './analytics-path-key'\nexport * from './contacts'\n// A lead's or a contact's email state (AGL-3245): the last verdict on its\n// address, in words a person can act on, mirrored from the senders' lists.\nexport * from './email-state'\n// The records that sit beside a contact — companies, pipelines, deals, tasks,\n// activities, field definitions (AGL-2595). Pure like `contacts`, and beside\n// it because `ContactFacet` names its lifecycle stage and custom-value types;\n// the scope stamp every CRM creator writes lives here too.\nexport * from './crm'\n// Email templates, snippets and the merge-field resolver (AGL-2658): the\n// letter a rep keeps under a name, and the one grammar the send route and\n// the dialog fill it in by. Pure like `crm`, and beside it because a\n// template is scoped the way a task is.\nexport * from './crm-email-templates'\n// A person's privacy erasure from one workspace (AGL-2623): the request's\n// shape and id, the marker a record carries while it waits, and the lists\n// the dialog and the docs share. Pure like `crm`; the sweep is server-side.\nexport * from './person-erasure'\n// A task's reminder at its own time (AGL-2659): which reminder a save\n// leaves, whether one is owed, and the words the notification and the mail\n// say. Pure like `crm`, read by the hourly route and by every writer of the\n// field.\nexport * from './crm-task-reminders'\n// Reading a received email (AGL-2657): the address in a header, the thread\n// a subject belongs to, the reply above the quoted history — and the domain\n// the platform receives mail on. Pure; every surface that reads mail it was\n// sent reads it this way.\nexport * from './email-text'\nexport * from './inbound-mail-domain'\n// A member's own addresses in a workspace (AGL-2975): the ones they have\n// confirmed count as theirs wherever the roster is asked who wrote a\n// message. Pure; the store and the confirmation link are server-side.\nexport * from './member-email-aliases'\n// The next activity a record carries (AGL-2661): what `nextTaskAtMs` IS given\n// a record's open tasks, the view clause a list filters on, the report figure.\n// Pure like `crm`; the admin library's `recomputeCrmNextTaskAt` is the writer.\nexport * from './crm-next-activity'\n// The CSV cell grammar the exports write with (AGL-2621), and the target a\n// mapped column names for a custom field — named rather than starred, because\n// an importer built on this file exports the shared ceilings under its own\n// names.\nexport {\n csvCell,\n csvDocument,\n customImportTarget,\n customImportTargetKey,\n importNoMailServerSentence,\n} from './csv-import'\nexport type {\n ImportChunkResult,\n ImportDroppedValue,\n ImportSkippedRow,\n} from './csv-import'\n// What a VALUE under a custom contact field may be, and the coercion every\n// door applies to one (AGL-2601): a mapped form field, an API `custom` body,\n// and the carry-over that keeps a mapping across a publish. Pure like `crm`.\nexport * from './contact-custom-fields'\n// The consent JOIN (`docs/specs/email-overhaul.md` §3f). Pure, and it composes\n// `contacts` for the normalizer, so it sits directly beside it. No Node\n// builtin, which is what keeps it out of the `/server`-only group `person-key`\n// belongs to.\nexport * from './consent-groups'\nexport * from './marketing-consent'\n// A refusal kept after the record it was written on is deleted (AGL-3338),\n// read back through the same parser as the record's own.\nexport * from './retained-refusals'\n// The ENROLLMENT-time half of the same question, beside its reader for the\n// same reason: `marketing-consent` decides whether a recorded basis lets us\n// mail somebody, and this decides what basis putting them on a list may\n// record. Two enrollment surfaces import it — the Inbox assignment route and\n// the Emails console's audience card — and neither could import the other.\nexport * from './enrollment-basis'\n// Reading the FILE a merchant arrives with (`docs/specs/email-competitive-gaps.md`\n// G5/P4), directly after the policy it hands its addresses to: parsing and\n// mechanical screening only, so that an import asks the enrollment question\n// through the same module the one-address add path asks it through rather\n// than answering it a second way.\n// The dynamic-list rule (§3b/§3c), beside it for the same reasons: pure, and\n// it composes `contacts` for the segment vocabulary rather than restating it.\nexport * from './dynamic-list-rule'\n// The subscribable streams a recipient can leave one at a time\n// (`docs/specs/email-competitive-gaps.md` §1f). Pure, and read from all three\n// sides of the feature: the composer picks one, the send path signs it into\n// the unsubscribe link, and the unauthenticated preference page renders the\n// catalog. No Node builtin, so it stays out of the `/server`-only group.\nexport * from './subscription-topics'\nexport * from './compose-layout-nodes'\n// Layout properties applied through the chain (AGL-2893).\nexport * from './compose-layout-props'\n// A screen's per-page restyling of its layout's elements (AGL-3286).\nexport * from './layout-style-overrides'\nexport * from './document-landmark'\nexport * from './functions'\nexport * from './compose-reusable-components'\n// Where a reusable component is placed — pages or emails (AGL-3287).\nexport * from './reusable-component-kind'\nexport * from './compress'\nexport * from './merge-node-sx'\nexport * from './palette-sx'\nexport * from './scheme-sx'\n// An element pinned to one color scheme (AGL-3284).\nexport * from './element-color-scheme'\nexport * from './create-resource-uid'\nexport * from './decompress'\nexport * from './stored-nodes'\nexport * from './strip-undefined'\nexport * from './organizations'\nexport * from './org-permissions'\n// The AI verdict on either membership axis (AGL-2927). After both modules it\n// composes: the org catalog for org-wide members, the host role for site\n// collaborators.\nexport * from './host-permissions'\nexport * from './password-policy'\nexport * from './idp-profile'\nexport * from './onboarding-deep-link'\n// Where an account came from (AGL-1731). Beside the plan intent because\n// they are the same hop — the marketing CTA's query string — and both are\n// remembered on `users/{uid}` across the verification wall.\nexport * from './utm-attribution'\n// What a record is filed under: the edge between a container a plugin keeps\n// (a campaign) and the forms, screens and contacts it gathers. Beside the\n// attribution above because the two answer opposite questions: attribution\n// records where somebody CAME from, this records what a merchant DECLARED\n// belongs together.\nexport * from './container-membership'\nexport * from './deployment-shape'\n// Which browser origins may complete a signed direct-to-GCS upload (AGL-1452).\n// GCS matches the origin list EXACTLY, so every serving console name needs its\n// own entry — the rule nobody could be expected to remember at attach time.\nexport * from './upload-cors'\n// The docs-help subset the first-party plugin consoles read (AGL-2213) — the\n// console's own registry lives in apps/console/constants and a lib cannot\n// import an app.\nexport * from './docs-help'\nexport * from './platform-brand'\nexport * from './plan-entitlements'\n// The free plan's bandwidth hard cap (AGL-1967/2070/2155). After\n// `plan-entitlements`, which owns the predicate it keys off.\nexport * from './bandwidth-cap'\nexport * from './form-abuse-ceiling'\nexport * from './forms'\n// What a form's DESIGN must still satisfy for its submissions to arrive.\n// After `forms`, whose field walk it reads the drawn fields with.\nexport * from './form-contract'\nexport * from './visitor-record-ceiling'\nexport * from './health-report'\n// Did a webhook delivery actually DO anything (AGL-1954)? After\n// `health-report`, whose billing verdict consumes the counts this produces.\nexport * from './webhook-delivery'\nexport * from './support-tiers'\nexport * from './release-flags'\n// Who runs THIS deployment, and where its notices go (AGL-2016). Ordered\n// before the four surfaces that print it, all of which used to declare their\n// own `support@aglyn.com` literal.\nexport * from './operator-identity'\nexport * from './lockdown'\nexport * from './media-quarantine'\nexport * from './media-takedown-reach'\nexport * from './upload-inspection'\nexport * from './abuse-report'\n// The other three quarters of §512 (AGL-1983): the put-back procedure that\n// answers a notice, and the strike ledger that conditions the safe harbour.\nexport * from './dmca-counter-notice'\nexport * from './repeat-infringer'\n// `addBusinessDays` briefly existed TWICE — once here in './support-tiers'\n// and once in './dmca-counter-notice' — and two `export *` made the name\n// ambiguous, TS2308'ing this barrel and every tsconfig that reads it. The\n// interleave was fixed twice in parallel: once by naming a winner here, and\n// once by deleting the second definition so './dmca-counter-notice' imports\n// this one. Only the deletion survives, so the disambiguating re-export that\n// stood on this line is gone with it — `export *` is unambiguous again.\n//\n// The concern that argued for keeping two copies is worth answering rather\n// than dropping: a later tweak to the SUPPORT SLA window must never silently\n// move the §512(g)(2)(C) put-back deadline. It cannot. This function embeds\n// no window — it is \"add N business days\", and N is the argument. The two\n// windows live in their own constants (`SUPPORT_*` there,\n// `COUNTER_NOTICE_*_BUSINESS_DAYS` in the DMCA module) and never meet. What\n// SHOULD stay shared is the day arithmetic itself: two copies of a weekend\n// rule are two chances to disagree about which day a deadline falls on.\nexport * from './org-override-reason'\nexport * from './host-tokens'\nexport * from './variables'\n// What happened on a site that an automation can start on: the platform's\n// own event and the ones plugins declare (AGL-3080).\nexport * from './host-events'\nexport * from './datasets'\nexport * from './expand-repeatables'\nexport * from './org-roles'\nexport * from './markdown-lite'\nexport * from './notifications'\n// The operator alert registry (AGL-3377); OPERATOR_ALERT_NOTIFICATION_TYPES\n// lives here now, derived from it.\nexport * from './operator-alerts'\nexport * from './definition-canvas-tree'\nexport * from './ensure-canvas-root'\nexport * from './repair-canvas-nodes'\nexport * from './detect-template-placeholders'\nexport * from './guarded-version-save'\nexport * from './local-storage-budget'\nexport * from './measure-node-map'\nexport * from './resolve-named-tokens'\nexport * from './screen-route'\nexport * from './host-naming'\nexport * from './name-search'\nexport * from './artifact-list-keys'\nexport * from './name-match'\nexport * from './api-plugins'\nexport * from './plugin-api-rate-limit'\n// The same-origin gate on visitor-facing plugin writes (AGL-1880). After\n// `plugin-api-rate-limit`, whose `isMachinePluginApiPath` it reuses so the\n// two gates exempt exactly the same machine surfaces.\nexport * from './plugin-api-cross-origin'\n// What a published page does when a visitor does something (AGL-3080): the\n// platform's interaction vocabulary, which `./actions` builds its automations on.\nexport * from './site-interactions'\nexport * from './actions'\nexport * from './element-animation'\nexport * from './attribution-guard'\nexport * from './node-interactions'\nexport * from './element-ui'\nexport * from './image-upload-types'\nexport * from './sanitize-svg'\nexport * from './media-folders'\nexport * from './media-metadata'\nexport * from './media-ref'\n// After `media-ref`, whose reference grammar it reads stored URLs with.\nexport * from './paid-media-source'\nexport * from './author-css'\n// The isomorphic HTML rule (AGL-1901), after the CSS one it depends on.\nexport * from './author-html'\nexport * from './dataset-models'\nexport * from './csv'\nexport * from './csv-upload'\nexport * from './artifact-provenance'\nexport * from './repeat-query'\nexport * from './plugin-manifest'\n// After `plugin-manifest`, whose revocation predicates it asks the kill\n// question with, and after `media-ref`, whose grammar decides what counts as a\n// first-party image.\nexport * from './email-starter-policy'\nexport * from './safe-json-ld'\n// Agent readiness (AGL-2716): content negotiation, the Markdown rendering of a\n// page, `/llms.txt` and the per-site OpenAPI document. All pure, all server-safe.\nexport * from './accept-negotiation'\nexport * from './agent-api-catalog'\nexport * from './agent-openapi'\nexport * from './author-html-markdown'\nexport * from './llms-txt'\nexport * from './page-markdown'\nexport * from './request-geo'\nexport * from './request-ip'\nexport * from './search-indexing'\nexport * from './seo-title'\nexport * from './sitemap'\nexport * from './visitor-consent'\nexport * from './social-image'\nexport * from './scope-tokens'\nexport * from './org-billing-doc'\nexport * from './stripe-deployment-mode'\nexport * from './deferred-image'\n"],"names":["csvCell","csvDocument","customImportTarget","customImportTargetKey","importNoMailServerSentence"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;CAMC,GACD,cAAc,6BAAyB;AACvC,cAAc,sBAAkB;AAChC,cAAc,0BAAsB;AACpC,yEAAyE;AACzE,uEAAuE;AACvE,cAAc,0BAAsB;AACpC,yEAAyE;AACzE,6EAA6E;AAC7E,4EAA4E;AAC5E,cAAc,oBAAgB;AAC9B,cAAc,yBAAqB;AACnC,cAAc,0BAAsB;AACpC,cAAc,uBAAmB;AACjC,cAAc,uBAAmB;AACjC,cAAc,uBAAmB;AACjC,8EAA8E;AAC9E,8EAA8E;AAC9E,wEAAwE;AACxE,yEAAyE;AACzE,+EAA+E;AAC/E,+CAA+C;AAC/C,cAAc,4BAAwB;AACtC,cAAc,2BAAuB;AACrC,cAAc,8BAA0B;AACxC,cAAc,gBAAY;AAC1B,cAAc,sBAAkB;AAChC,cAAc,8BAA0B;AACxC,wEAAwE;AACxE,4EAA4E;AAC5E,cAAc,oBAAgB;AAC9B,8EAA8E;AAC9E,+EAA+E;AAC/E,0CAA0C;AAC1C,cAAc,iCAA6B;AAC3C,cAAc,sBAAkB;AAChC,sEAAsE;AACtE,uDAAuD;AACvD,cAAc,yBAAqB;AACnC,wEAAwE;AACxE,iEAAiE;AACjE,cAAc,uBAAmB;AACjC,cAAc,0BAAsB;AACpC,cAAc,gBAAY;AAC1B,0EAA0E;AAC1E,2EAA2E;AAC3E,cAAc,mBAAe;AAC7B,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,2DAA2D;AAC3D,cAAc,WAAO;AACrB,yEAAyE;AACzE,0EAA0E;AAC1E,qEAAqE;AACrE,wCAAwC;AACxC,cAAc,2BAAuB;AACrC,0EAA0E;AAC1E,0EAA0E;AAC1E,4EAA4E;AAC5E,cAAc,sBAAkB;AAChC,sEAAsE;AACtE,2EAA2E;AAC3E,4EAA4E;AAC5E,SAAS;AACT,cAAc,0BAAsB;AACpC,2EAA2E;AAC3E,4EAA4E;AAC5E,4EAA4E;AAC5E,0BAA0B;AAC1B,cAAc,kBAAc;AAC5B,cAAc,2BAAuB;AACrC,yEAAyE;AACzE,qEAAqE;AACrE,sEAAsE;AACtE,cAAc,4BAAwB;AACtC,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,cAAc,yBAAqB;AACnC,2EAA2E;AAC3E,8EAA8E;AAC9E,2EAA2E;AAC3E,SAAS;AACT,SACEA,OAAO,EACPC,WAAW,EACXC,kBAAkB,EAClBC,qBAAqB,EACrBC,0BAA0B,QACrB,kBAAc;AAMrB,2EAA2E;AAC3E,6EAA6E;AAC7E,6EAA6E;AAC7E,cAAc,6BAAyB;AACvC,+EAA+E;AAC/E,wEAAwE;AACxE,+EAA+E;AAC/E,cAAc;AACd,cAAc,sBAAkB;AAChC,cAAc,yBAAqB;AACnC,2EAA2E;AAC3E,yDAAyD;AACzD,cAAc,yBAAqB;AACnC,2EAA2E;AAC3E,4EAA4E;AAC5E,wEAAwE;AACxE,6EAA6E;AAC7E,2EAA2E;AAC3E,cAAc,wBAAoB;AAClC,mFAAmF;AACnF,2EAA2E;AAC3E,4EAA4E;AAC5E,0EAA0E;AAC1E,kCAAkC;AAClC,6EAA6E;AAC7E,8EAA8E;AAC9E,cAAc,yBAAqB;AACnC,+DAA+D;AAC/D,8EAA8E;AAC9E,4EAA4E;AAC5E,4EAA4E;AAC5E,yEAAyE;AACzE,cAAc,2BAAuB;AACrC,cAAc,4BAAwB;AACtC,0DAA0D;AAC1D,cAAc,4BAAwB;AACtC,qEAAqE;AACrE,cAAc,8BAA0B;AACxC,cAAc,yBAAqB;AACnC,cAAc,iBAAa;AAC3B,cAAc,mCAA+B;AAC7C,qEAAqE;AACrE,cAAc,+BAA2B;AACzC,cAAc,gBAAY;AAC1B,cAAc,qBAAiB;AAC/B,cAAc,kBAAc;AAC5B,cAAc,iBAAa;AAC3B,oDAAoD;AACpD,cAAc,4BAAwB;AACtC,cAAc,2BAAuB;AACrC,cAAc,kBAAc;AAC5B,cAAc,oBAAgB;AAC9B,cAAc,uBAAmB;AACjC,cAAc,qBAAiB;AAC/B,cAAc,uBAAmB;AACjC,6EAA6E;AAC7E,yEAAyE;AACzE,iBAAiB;AACjB,cAAc,wBAAoB;AAClC,cAAc,uBAAmB;AACjC,cAAc,mBAAe;AAC7B,cAAc,4BAAwB;AACtC,wEAAwE;AACxE,0EAA0E;AAC1E,4DAA4D;AAC5D,cAAc,uBAAmB;AACjC,4EAA4E;AAC5E,0EAA0E;AAC1E,2EAA2E;AAC3E,0EAA0E;AAC1E,oBAAoB;AACpB,cAAc,4BAAwB;AACtC,cAAc,wBAAoB;AAClC,+EAA+E;AAC/E,+EAA+E;AAC/E,4EAA4E;AAC5E,cAAc,mBAAe;AAC7B,6EAA6E;AAC7E,0EAA0E;AAC1E,iBAAiB;AACjB,cAAc,iBAAa;AAC3B,cAAc,sBAAkB;AAChC,cAAc,yBAAqB;AACnC,iEAAiE;AACjE,6DAA6D;AAC7D,cAAc,qBAAiB;AAC/B,cAAc,0BAAsB;AACpC,cAAc,aAAS;AACvB,yEAAyE;AACzE,kEAAkE;AAClE,cAAc,qBAAiB;AAC/B,cAAc,8BAA0B;AACxC,cAAc,qBAAiB;AAC/B,gEAAgE;AAChE,4EAA4E;AAC5E,cAAc,wBAAoB;AAClC,cAAc,qBAAiB;AAC/B,cAAc,qBAAiB;AAC/B,yEAAyE;AACzE,6EAA6E;AAC7E,mCAAmC;AACnC,cAAc,yBAAqB;AACnC,cAAc,gBAAY;AAC1B,cAAc,wBAAoB;AAClC,cAAc,4BAAwB;AACtC,cAAc,yBAAqB;AACnC,cAAc,oBAAgB;AAC9B,2EAA2E;AAC3E,4EAA4E;AAC5E,cAAc,2BAAuB;AACrC,cAAc,wBAAoB;AAClC,2EAA2E;AAC3E,yEAAyE;AACzE,0EAA0E;AAC1E,4EAA4E;AAC5E,4EAA4E;AAC5E,6EAA6E;AAC7E,wEAAwE;AACxE,EAAE;AACF,2EAA2E;AAC3E,6EAA6E;AAC7E,4EAA4E;AAC5E,0EAA0E;AAC1E,0DAA0D;AAC1D,4EAA4E;AAC5E,2EAA2E;AAC3E,wEAAwE;AACxE,cAAc,2BAAuB;AACrC,cAAc,mBAAe;AAC7B,cAAc,iBAAa;AAC3B,0EAA0E;AAC1E,qDAAqD;AACrD,cAAc,mBAAe;AAC7B,cAAc,gBAAY;AAC1B,cAAc,0BAAsB;AACpC,cAAc,iBAAa;AAC3B,cAAc,qBAAiB;AAC/B,cAAc,qBAAiB;AAC/B,4EAA4E;AAC5E,mCAAmC;AACnC,cAAc,uBAAmB;AACjC,cAAc,8BAA0B;AACxC,cAAc,0BAAsB;AACpC,cAAc,2BAAuB;AACrC,cAAc,oCAAgC;AAC9C,cAAc,4BAAwB;AACtC,cAAc,4BAAwB;AACtC,cAAc,wBAAoB;AAClC,cAAc,4BAAwB;AACtC,cAAc,oBAAgB;AAC9B,cAAc,mBAAe;AAC7B,cAAc,mBAAe;AAC7B,cAAc,0BAAsB;AACpC,cAAc,kBAAc;AAC5B,cAAc,mBAAe;AAC7B,cAAc,6BAAyB;AACvC,yEAAyE;AACzE,2EAA2E;AAC3E,sDAAsD;AACtD,cAAc,+BAA2B;AACzC,2EAA2E;AAC3E,kFAAkF;AAClF,cAAc,yBAAqB;AACnC,cAAc,eAAW;AACzB,cAAc,yBAAqB;AACnC,cAAc,yBAAqB;AACnC,cAAc,yBAAqB;AACnC,cAAc,kBAAc;AAC5B,cAAc,0BAAsB;AACpC,cAAc,oBAAgB;AAC9B,cAAc,qBAAiB;AAC/B,cAAc,sBAAkB;AAChC,cAAc,iBAAa;AAC3B,wEAAwE;AACxE,cAAc,yBAAqB;AACnC,cAAc,kBAAc;AAC5B,wEAAwE;AACxE,cAAc,mBAAe;AAC7B,cAAc,sBAAkB;AAChC,cAAc,WAAO;AACrB,cAAc,kBAAc;AAC5B,cAAc,2BAAuB;AACrC,cAAc,oBAAgB;AAC9B,cAAc,uBAAmB;AACjC,wEAAwE;AACxE,+EAA+E;AAC/E,qBAAqB;AACrB,cAAc,4BAAwB;AACtC,cAAc,oBAAgB;AAC9B,+EAA+E;AAC/E,kFAAkF;AAClF,cAAc,0BAAsB;AACpC,cAAc,yBAAqB;AACnC,cAAc,qBAAiB;AAC/B,cAAc,4BAAwB;AACtC,cAAc,gBAAY;AAC1B,cAAc,qBAAiB;AAC/B,cAAc,mBAAe;AAC7B,cAAc,kBAAc;AAC5B,cAAc,uBAAmB;AACjC,cAAc,iBAAa;AAC3B,cAAc,eAAW;AACzB,cAAc,uBAAmB;AACjC,cAAc,oBAAgB;AAC9B,cAAc,oBAAgB;AAC9B,cAAc,uBAAmB;AACjC,cAAc,8BAA0B;AACxC,cAAc,sBAAkB"}
|