@aglyn/plugins-commerce 1.0.0-beta.218 → 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/README.md +6 -0
- package/package.json +14 -14
- package/src/index.d.ts +1 -0
- package/src/index.js +1 -19
- package/src/index.js.map +1 -1
- package/src/lib/components/cart.js +2 -1
- package/src/lib/components/cart.js.map +1 -1
- package/src/lib/components/console/catalog-organization-card.component.js +665 -459
- package/src/lib/components/console/catalog-organization-card.component.js.map +1 -1
- package/src/lib/components/console/host-orders-card.component.js +2 -1
- package/src/lib/components/console/host-orders-card.component.js.map +1 -1
- package/src/lib/components/console/member-posts-card.component.js +1 -1
- package/src/lib/components/console/member-posts-card.component.js.map +1 -1
- package/src/lib/components/console/order-detail-dialog.component.js +8 -7
- package/src/lib/components/console/order-detail-dialog.component.js.map +1 -1
- package/src/lib/components/console/payments-settings-card.component.js +2 -2
- package/src/lib/components/console/payments-settings-card.component.js.map +1 -1
- package/src/lib/components/console/product-editor-dialog.component.js +1221 -889
- package/src/lib/components/console/product-editor-dialog.component.js.map +1 -1
- package/src/lib/components/console/product-zones.d.ts +184 -0
- package/src/lib/components/console/product-zones.js +54 -0
- package/src/lib/components/console/product-zones.js.map +1 -0
- package/src/lib/components/console/products-hub-card.component.js +3 -2
- package/src/lib/components/console/products-hub-card.component.js.map +1 -1
- package/src/lib/components/console/products-hub-zone.component.d.ts +1 -1
- package/src/lib/components/console/products-hub-zone.component.js +2 -1
- package/src/lib/components/console/products-hub-zone.component.js.map +1 -1
- package/src/lib/components/console/site-member-purchases.component.d.ts +24 -0
- package/src/lib/components/console/site-member-purchases.component.js +339 -0
- package/src/lib/components/console/site-member-purchases.component.js.map +1 -0
- package/src/lib/components/console/store-settings-card.component.js +2 -2
- package/src/lib/components/console/store-settings-card.component.js.map +1 -1
- package/src/lib/components/console/storefront-tax-summary-card.component.js +1 -1
- package/src/lib/components/console/storefront-tax-summary-card.component.js.map +1 -1
- package/src/lib/components/member-signup.js +2 -2
- package/src/lib/components/member-signup.js.map +1 -1
- package/src/lib/components/newsletter-signup.js +2 -2
- package/src/lib/components/newsletter-signup.js.map +1 -1
- package/src/lib/components/product-detail.js +2 -1
- package/src/lib/components/product-detail.js.map +1 -1
- package/src/lib/components/product-grid.js +1 -1
- package/src/lib/components/product-grid.js.map +1 -1
- package/src/lib/constants/operator-alerts.js +5 -3
- package/src/lib/constants/operator-alerts.js.map +1 -1
- package/src/lib/constants/storefront-payments.d.ts +33 -0
- package/src/lib/constants/storefront-payments.js +35 -0
- package/src/lib/constants/storefront-payments.js.map +1 -0
- package/src/lib/declarations.server.d.ts +3 -1
- package/src/lib/declarations.server.js +19 -1
- package/src/lib/declarations.server.js.map +1 -1
- package/src/lib/model/commerce-io.js +1 -1
- package/src/lib/model/commerce-io.js.map +1 -1
- package/src/lib/model/commerce-record-lists.d.ts +31 -0
- package/src/lib/model/commerce-record-lists.js +45 -0
- package/src/lib/model/commerce-record-lists.js.map +1 -0
- package/src/lib/model/commerce-record-routes.d.ts +45 -0
- package/src/lib/model/commerce-record-routes.js +72 -0
- package/src/lib/model/commerce-record-routes.js.map +1 -0
- package/src/lib/model/commerce-search-sources.d.ts +21 -0
- package/src/lib/model/commerce-search-sources.js +42 -0
- package/src/lib/model/commerce-search-sources.js.map +1 -0
- package/src/lib/model/commerce-topics.d.ts +20 -0
- package/src/lib/model/commerce-topics.js +33 -0
- package/src/lib/model/commerce-topics.js.map +1 -0
- package/src/lib/model/index.d.ts +1 -0
- package/src/lib/model/index.js +1 -0
- package/src/lib/model/index.js.map +1 -1
- package/src/lib/model/product-record.d.ts +32 -0
- package/src/lib/model/product-record.js +82 -0
- package/src/lib/model/product-record.js.map +1 -0
- package/src/lib/model/site-member-purchases.d.ts +48 -0
- package/src/lib/model/site-member-purchases.js +50 -0
- package/src/lib/model/site-member-purchases.js.map +1 -0
- package/src/lib/model/storefront-tax-summary.d.ts +121 -0
- package/src/lib/model/storefront-tax-summary.js +148 -0
- package/src/lib/model/storefront-tax-summary.js.map +1 -0
- package/src/lib/plan-entitlements.d.ts +35 -0
- package/src/lib/plan-entitlements.js +54 -0
- package/src/lib/plan-entitlements.js.map +1 -0
- package/src/lib/plugin.js +21 -0
- package/src/lib/plugin.js.map +1 -1
- package/src/lib/server/billing-webhook.js +387 -248
- package/src/lib/server/billing-webhook.js.map +1 -1
- package/src/lib/server/cart-checkout.js +3 -3
- package/src/lib/server/cart-checkout.js.map +1 -1
- package/src/lib/server/checkout.js +2 -2
- package/src/lib/server/checkout.js.map +1 -1
- package/src/lib/server/connect.js +5 -5
- package/src/lib/server/connect.js.map +1 -1
- package/src/lib/server/draft-order.js +2 -2
- package/src/lib/server/draft-order.js.map +1 -1
- package/src/lib/server/gift-cards.js +7 -3
- package/src/lib/server/gift-cards.js.map +1 -1
- package/src/lib/server/low-stock.js +3 -1
- package/src/lib/server/low-stock.js.map +1 -1
- package/src/lib/server/member-post.js +2 -2
- package/src/lib/server/member-post.js.map +1 -1
- package/src/lib/server/membership-admin-password.js +4 -1
- package/src/lib/server/membership-admin-password.js.map +1 -1
- package/src/lib/server/membership-content.js +1 -1
- package/src/lib/server/membership-content.js.map +1 -1
- package/src/lib/server/membership-register.js +13 -2
- package/src/lib/server/membership-register.js.map +1 -1
- package/src/lib/server/newsletter.js +32 -19
- package/src/lib/server/newsletter.js.map +1 -1
- package/src/lib/server/pos-order.js +3 -3
- package/src/lib/server/pos-order.js.map +1 -1
- package/src/lib/server/process-abandoned.js +4 -2
- package/src/lib/server/process-abandoned.js.map +1 -1
- package/src/lib/server/process-restock.js +7 -5
- package/src/lib/server/process-restock.js.map +1 -1
- package/src/lib/server/product-record-index.d.ts +19 -0
- package/src/lib/server/product-record-index.js +83 -0
- package/src/lib/server/product-record-index.js.map +1 -0
- package/src/lib/server/reconcile-stock.js +1 -1
- package/src/lib/server/reconcile-stock.js.map +1 -1
- package/src/lib/server/reserve-stock.js +6 -1
- package/src/lib/server/reserve-stock.js.map +1 -1
- package/src/lib/server/reserve.js +2 -2
- package/src/lib/server/reserve.js.map +1 -1
- package/src/lib/server/revenue-source.d.ts +130 -0
- package/src/lib/server/revenue-source.js +286 -0
- package/src/lib/server/revenue-source.js.map +1 -0
- package/src/lib/server/supplier-outbox.js +16 -1
- package/src/lib/server/supplier-outbox.js.map +1 -1
- package/src/lib/server/supplier-update.js +19 -9
- package/src/lib/server/supplier-update.js.map +1 -1
- package/src/lib/server/tax-profile.d.ts +8 -5
- package/src/lib/server/tax-profile.js +22 -5
- package/src/lib/server/tax-profile.js.map +1 -1
- package/src/lib/server/tax-return-source.d.ts +125 -0
- package/src/lib/server/tax-return-source.js +524 -0
- package/src/lib/server/tax-return-source.js.map +1 -0
- package/src/lib/server/tax-summary.d.ts +92 -0
- package/src/lib/server/tax-summary.js +258 -0
- package/src/lib/server/tax-summary.js.map +1 -0
- package/src/lib/server.d.ts +1 -0
- package/src/lib/server.js +23 -0
- package/src/lib/server.js.map +1 -1
- package/src/lib/starter-templates.d.ts +19 -0
- package/src/lib/starter-templates.js +157 -0
- package/src/lib/starter-templates.js.map +1 -0
- package/src/lib/tenant-emails.d.ts +33 -0
- package/src/lib/tenant-emails.js +551 -0
- package/src/lib/tenant-emails.js.map +1 -0
- package/src/lib/testing/stand-in-crm-record-routes.d.ts +25 -0
- package/src/lib/testing/stand-in-crm-record-routes.js +46 -0
- package/src/lib/testing/stand-in-crm-record-routes.js.map +1 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/ import { buildStarterNodes, starterHeroSection, starterSection, starterText } from "@aglyn/aglyn/app-utils/starter-template-nodes";
|
|
17
|
+
import { SCREEN_ROOT_PATH } from "@aglyn/aglyn/app-utils/screen-route";
|
|
18
|
+
import { BUNDLE_ID } from "./constants/bundle-common.js";
|
|
19
|
+
/**
|
|
20
|
+
* The shop starters (AGL-300): storefront sites built around this plugin's
|
|
21
|
+
* elements — the product grid, the product page, the cart and the customer
|
|
22
|
+
* account.
|
|
23
|
+
*
|
|
24
|
+
* Declared under `starterTemplates` in plugins.config.json; the manifest
|
|
25
|
+
* generator calls {@link commerceStarterTemplates} and compiles what it
|
|
26
|
+
* returns into core's `plugin-starter-templates.generated.ts`, after the
|
|
27
|
+
* platform's own starters. The gallery, the seed route and the AI plugin's
|
|
28
|
+
* examples read that list, so none of them loads this plugin to offer a shop.
|
|
29
|
+
*
|
|
30
|
+
* PERSISTED IDENTIFIERS: the starter ids, the screen keys and every node id
|
|
31
|
+
* below appear in stored documents — seeded template ids are derived from
|
|
32
|
+
* the first two — so none is ever renamed.
|
|
33
|
+
*/ /** One of this plugin's elements, placed on a starter page. */ const commerceBlock = (id, componentId, props)=>({
|
|
34
|
+
id,
|
|
35
|
+
componentId,
|
|
36
|
+
pluginId: BUNDLE_ID,
|
|
37
|
+
props
|
|
38
|
+
});
|
|
39
|
+
/** The pages both shop starters share. */ function shopScreens(prefix, digital) {
|
|
40
|
+
return [
|
|
41
|
+
{
|
|
42
|
+
key: 'home',
|
|
43
|
+
displayName: 'Home',
|
|
44
|
+
// The site root, spelled the way the routing map spells it. `''` here
|
|
45
|
+
// read as "no address" everywhere downstream and put the shop's home
|
|
46
|
+
// page at `/home` (AGL-1575).
|
|
47
|
+
slug: SCREEN_ROOT_PATH,
|
|
48
|
+
seo: {
|
|
49
|
+
title: digital ? 'Digital shop' : 'Shop',
|
|
50
|
+
description: 'Browse our products.'
|
|
51
|
+
},
|
|
52
|
+
nodes: buildStarterNodes([
|
|
53
|
+
starterHeroSection(`${prefix}h_`, digital ? 'Downloads that level you up' : 'Gear you can trust', digital ? 'Instant delivery. Lifetime updates.' : 'Quality parts, shipped fast.'),
|
|
54
|
+
starterSection(`${prefix}h_gridSection`, 'xl', 6, [
|
|
55
|
+
commerceBlock(`${prefix}h_grid`, 'product-grid', {
|
|
56
|
+
source: 'all',
|
|
57
|
+
sort: 'newest',
|
|
58
|
+
columns: 3,
|
|
59
|
+
maxItems: 6
|
|
60
|
+
})
|
|
61
|
+
]),
|
|
62
|
+
// A newsletter capture is a short text-led band, not a gallery.
|
|
63
|
+
starterSection(`${prefix}h_newsSection`, 'md', 6, [
|
|
64
|
+
commerceBlock(`${prefix}h_news`, 'newsletter-signup', {
|
|
65
|
+
heading: 'Get updates and offers'
|
|
66
|
+
})
|
|
67
|
+
])
|
|
68
|
+
])
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
key: 'shop',
|
|
72
|
+
displayName: 'Shop',
|
|
73
|
+
slug: 'shop',
|
|
74
|
+
seo: {
|
|
75
|
+
title: 'All products'
|
|
76
|
+
},
|
|
77
|
+
nodes: buildStarterNodes([
|
|
78
|
+
starterSection(`${prefix}s_section`, 'xl', 6, [
|
|
79
|
+
starterText(`${prefix}s_title`, 'h3', 'All products'),
|
|
80
|
+
commerceBlock(`${prefix}s_grid`, 'product-grid', {
|
|
81
|
+
source: 'all',
|
|
82
|
+
columns: 4,
|
|
83
|
+
showFilters: true
|
|
84
|
+
})
|
|
85
|
+
])
|
|
86
|
+
])
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
key: 'product',
|
|
90
|
+
displayName: 'Product page',
|
|
91
|
+
slug: 'product',
|
|
92
|
+
seo: {
|
|
93
|
+
title: 'Product'
|
|
94
|
+
},
|
|
95
|
+
nodes: buildStarterNodes([
|
|
96
|
+
starterSection(`${prefix}p_section`, 'xl', 6, [
|
|
97
|
+
commerceBlock(`${prefix}p_detail`, 'product-detail', {})
|
|
98
|
+
])
|
|
99
|
+
])
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
key: 'cart',
|
|
103
|
+
displayName: 'Cart',
|
|
104
|
+
slug: 'cart',
|
|
105
|
+
seo: {
|
|
106
|
+
title: 'Your cart'
|
|
107
|
+
},
|
|
108
|
+
// LG, the deliberate middle case: a cart is a wide table but it is read
|
|
109
|
+
// line by line, so a full XL band spreads it further than the eye
|
|
110
|
+
// tracks. Same for the account screen below.
|
|
111
|
+
nodes: buildStarterNodes([
|
|
112
|
+
starterSection(`${prefix}c_section`, 'lg', 6, [
|
|
113
|
+
starterText(`${prefix}c_title`, 'h3', 'Your cart'),
|
|
114
|
+
commerceBlock(`${prefix}c_cart`, 'cart', {
|
|
115
|
+
variant: 'inline',
|
|
116
|
+
showCoupon: true
|
|
117
|
+
})
|
|
118
|
+
])
|
|
119
|
+
])
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
key: 'account',
|
|
123
|
+
displayName: 'Account',
|
|
124
|
+
slug: 'account',
|
|
125
|
+
seo: {
|
|
126
|
+
title: 'Your account'
|
|
127
|
+
},
|
|
128
|
+
nodes: buildStarterNodes([
|
|
129
|
+
starterSection(`${prefix}a_section`, 'lg', 6, [
|
|
130
|
+
commerceBlock(`${prefix}a_account`, 'customer-account', {
|
|
131
|
+
signedOutHeading: 'Your account'
|
|
132
|
+
})
|
|
133
|
+
])
|
|
134
|
+
])
|
|
135
|
+
}
|
|
136
|
+
];
|
|
137
|
+
}
|
|
138
|
+
/** This plugin's starters, as the manifest generator compiles them. */ export function commerceStarterTemplates() {
|
|
139
|
+
return [
|
|
140
|
+
{
|
|
141
|
+
id: 'physical-shop',
|
|
142
|
+
displayName: 'Shop (physical products)',
|
|
143
|
+
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.',
|
|
144
|
+
category: 'Commerce',
|
|
145
|
+
screens: shopScreens('ps_', false)
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
id: 'digital-shop',
|
|
149
|
+
displayName: 'Shop (digital products)',
|
|
150
|
+
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.',
|
|
151
|
+
category: 'Commerce',
|
|
152
|
+
screens: shopScreens('ds_', true)
|
|
153
|
+
}
|
|
154
|
+
];
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
//# sourceMappingURL=starter-templates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/plugins/commerce/src/lib/starter-templates.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n buildStarterNodes,\n starterHeroSection,\n starterSection,\n starterText,\n type StarterNodeSpec,\n type StarterTemplate,\n type StarterTemplateScreen,\n} from '@aglyn/aglyn/app-utils/starter-template-nodes'\nimport { SCREEN_ROOT_PATH } from '@aglyn/aglyn/app-utils/screen-route'\nimport { BUNDLE_ID } from './constants/bundle-common'\n\n/**\n * The shop starters (AGL-300): storefront sites built around this plugin's\n * elements — the product grid, the product page, the cart and the customer\n * account.\n *\n * Declared under `starterTemplates` in plugins.config.json; the manifest\n * generator calls {@link commerceStarterTemplates} and compiles what it\n * returns into core's `plugin-starter-templates.generated.ts`, after the\n * platform's own starters. The gallery, the seed route and the AI plugin's\n * examples read that list, so none of them loads this plugin to offer a shop.\n *\n * PERSISTED IDENTIFIERS: the starter ids, the screen keys and every node id\n * below appear in stored documents — seeded template ids are derived from\n * the first two — so none is ever renamed.\n */\n\n/** One of this plugin's elements, placed on a starter page. */\nconst commerceBlock = (\n id: string,\n componentId: string,\n props?: Record<string, unknown>,\n): StarterNodeSpec => ({ id, componentId, pluginId: BUNDLE_ID, props })\n\n/** The pages both shop starters share. */\nfunction shopScreens(prefix: string, digital: boolean): StarterTemplateScreen[] {\n return [\n {\n key: 'home',\n displayName: 'Home',\n // The site root, spelled the way the routing map spells it. `''` here\n // read as \"no address\" everywhere downstream and put the shop's home\n // page at `/home` (AGL-1575).\n slug: SCREEN_ROOT_PATH,\n seo: {\n title: digital ? 'Digital shop' : 'Shop',\n description: 'Browse our products.',\n },\n nodes: buildStarterNodes([\n starterHeroSection(\n `${prefix}h_`,\n digital ? 'Downloads that level you up' : 'Gear you can trust',\n digital\n ? 'Instant delivery. Lifetime updates.'\n : 'Quality parts, shipped fast.',\n ),\n starterSection(`${prefix}h_gridSection`, 'xl', 6, [\n commerceBlock(`${prefix}h_grid`, 'product-grid', {\n source: 'all',\n sort: 'newest',\n columns: 3,\n maxItems: 6,\n }),\n ]),\n // A newsletter capture is a short text-led band, not a gallery.\n starterSection(`${prefix}h_newsSection`, 'md', 6, [\n commerceBlock(`${prefix}h_news`, 'newsletter-signup', {\n heading: 'Get updates and offers',\n }),\n ]),\n ]),\n },\n {\n key: 'shop',\n displayName: 'Shop',\n slug: 'shop',\n seo: { title: 'All products' },\n nodes: buildStarterNodes([\n starterSection(`${prefix}s_section`, 'xl', 6, [\n starterText(`${prefix}s_title`, 'h3', 'All products'),\n commerceBlock(`${prefix}s_grid`, 'product-grid', {\n source: 'all',\n columns: 4,\n showFilters: true,\n }),\n ]),\n ]),\n },\n {\n key: 'product',\n displayName: 'Product page',\n slug: 'product',\n seo: { title: 'Product' },\n nodes: buildStarterNodes([\n starterSection(`${prefix}p_section`, 'xl', 6, [\n commerceBlock(`${prefix}p_detail`, 'product-detail', {}),\n ]),\n ]),\n },\n {\n key: 'cart',\n displayName: 'Cart',\n slug: 'cart',\n seo: { title: 'Your cart' },\n // LG, the deliberate middle case: a cart is a wide table but it is read\n // line by line, so a full XL band spreads it further than the eye\n // tracks. Same for the account screen below.\n nodes: buildStarterNodes([\n starterSection(`${prefix}c_section`, 'lg', 6, [\n starterText(`${prefix}c_title`, 'h3', 'Your cart'),\n commerceBlock(`${prefix}c_cart`, 'cart', {\n variant: 'inline',\n showCoupon: true,\n }),\n ]),\n ]),\n },\n {\n key: 'account',\n displayName: 'Account',\n slug: 'account',\n seo: { title: 'Your account' },\n nodes: buildStarterNodes([\n starterSection(`${prefix}a_section`, 'lg', 6, [\n commerceBlock(`${prefix}a_account`, 'customer-account', {\n signedOutHeading: 'Your account',\n }),\n ]),\n ]),\n },\n ]\n}\n\n/** This plugin's starters, as the manifest generator compiles them. */\nexport function commerceStarterTemplates(): StarterTemplate[] {\n return [\n {\n id: 'physical-shop',\n displayName: 'Shop (physical products)',\n description:\n 'Storefront starter: home with featured products, filterable shop, ' +\n 'product page, cart, and customer accounts. After applying, set the ' +\n 'Product page as the product template in Store settings.',\n category: 'Commerce',\n screens: shopScreens('ps_', false),\n },\n {\n id: 'digital-shop',\n displayName: 'Shop (digital products)',\n description:\n 'Digital storefront starter: downloads-focused home, shop, product ' +\n 'page, cart, and accounts with a newsletter capture. Set the Product ' +\n 'page as the product template in Store settings after applying.',\n category: 'Commerce',\n screens: shopScreens('ds_', true),\n },\n ]\n}\n"],"names":["buildStarterNodes","starterHeroSection","starterSection","starterText","SCREEN_ROOT_PATH","BUNDLE_ID","commerceBlock","id","componentId","props","pluginId","shopScreens","prefix","digital","key","displayName","slug","seo","title","description","nodes","source","sort","columns","maxItems","heading","showFilters","variant","showCoupon","signedOutHeading","commerceStarterTemplates","category","screens"],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
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
|
+
import type { TenantEmailEntry } from '@aglyn/shared-util-email';
|
|
18
|
+
/**
|
|
19
|
+
* The emails a site sends its own customers through Commerce (AGL-769/770).
|
|
20
|
+
*
|
|
21
|
+
* Declared here, by the plugin that sends them, and compiled into the
|
|
22
|
+
* platform's tenant email catalog (`TENANT_EMAILS` in
|
|
23
|
+
* `@aglyn/shared-util-email`) by `tools/scripts/generate-plugin-manifests.mjs`
|
|
24
|
+
* (AGL-3080): the catalog's readers include the send path, which loads no
|
|
25
|
+
* plugin code, so a runtime registry it had not filled would quietly send
|
|
26
|
+
* the text card in place of the site's designed email. Regenerate after
|
|
27
|
+
* changing an entry; `--check` refuses a stale catalog.
|
|
28
|
+
*
|
|
29
|
+
* Most commerce sends are designable in the email besigner; a `fixed` entry
|
|
30
|
+
* flips to `besigner` when its send site is wired to `renderHostEmail`
|
|
31
|
+
* (AGL-770).
|
|
32
|
+
*/
|
|
33
|
+
export declare function commerceTenantEmails(): readonly TenantEmailEntry[];
|