@aglyn/plugins-commerce 1.0.0-beta.287 → 1.0.0-beta.289
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 +2 -2
- package/package.json +13 -13
- package/src/lib/components/commerce-console-page.js +29 -2
- package/src/lib/components/commerce-console-page.js.map +1 -1
- package/src/lib/components/console/commerce-analytics-card.component.js +4 -2
- package/src/lib/components/console/commerce-analytics-card.component.js.map +1 -1
- package/src/lib/components/console/host-orders-card.component.js +5 -1
- package/src/lib/components/console/host-orders-card.component.js.map +1 -1
- package/src/lib/components/console/host-quotes-card.component.d.ts +34 -0
- package/src/lib/components/console/host-quotes-card.component.js +247 -0
- package/src/lib/components/console/host-quotes-card.component.js.map +1 -0
- package/src/lib/components/console/order-webhooks-card.component.js +1 -1
- package/src/lib/components/console/order-webhooks-card.component.js.map +1 -1
- package/src/lib/components/console/pos-ops/pos-check-ins-card.component.js +33 -28
- package/src/lib/components/console/pos-ops/pos-check-ins-card.component.js.map +1 -1
- package/src/lib/components/console/quote-editor-dialog.component.d.ts +45 -0
- package/src/lib/components/console/quote-editor-dialog.component.js +1266 -0
- package/src/lib/components/console/quote-editor-dialog.component.js.map +1 -0
- package/src/lib/components/console/quote-pay-link.component.d.ts +38 -0
- package/src/lib/components/console/quote-pay-link.component.js +213 -0
- package/src/lib/components/console/quote-pay-link.component.js.map +1 -0
- package/src/lib/components/console/quote-settings-card.component.d.ts +29 -0
- package/src/lib/components/console/quote-settings-card.component.js +121 -0
- package/src/lib/components/console/quote-settings-card.component.js.map +1 -0
- package/src/lib/components/console/tax-settings-card.component.js +4 -1
- package/src/lib/components/console/tax-settings-card.component.js.map +1 -1
- package/src/lib/components/quote-page-body.d.ts +33 -0
- package/src/lib/components/quote-page-body.js +696 -0
- package/src/lib/components/quote-page-body.js.map +1 -0
- package/src/lib/components/quote-page.d.ts +29 -0
- package/src/lib/components/quote-page.js +96 -0
- package/src/lib/components/quote-page.js.map +1 -0
- package/src/lib/components/storefront-payment-element.d.ts +7 -1
- package/src/lib/components/storefront-payment-element.js +8 -3
- package/src/lib/components/storefront-payment-element.js.map +1 -1
- package/src/lib/constants/orders-list-query.js +6 -1
- package/src/lib/constants/orders-list-query.js.map +1 -1
- package/src/lib/constants/quote-page.d.ts +30 -0
- package/src/lib/constants/quote-page.js +35 -0
- package/src/lib/constants/quote-page.js.map +1 -0
- package/src/lib/declarations.js +5 -1
- package/src/lib/declarations.js.map +1 -1
- package/src/lib/model/commerce-orders.d.ts +25 -2
- package/src/lib/model/commerce-orders.js +10 -1
- package/src/lib/model/commerce-orders.js.map +1 -1
- package/src/lib/model/commerce-quote-pay.d.ts +229 -0
- package/src/lib/model/commerce-quote-pay.js +393 -0
- package/src/lib/model/commerce-quote-pay.js.map +1 -0
- package/src/lib/model/commerce-quotes.d.ts +279 -0
- package/src/lib/model/commerce-quotes.js +522 -0
- package/src/lib/model/commerce-quotes.js.map +1 -0
- package/src/lib/model/index.d.ts +2 -0
- package/src/lib/model/index.js +2 -0
- package/src/lib/model/index.js.map +1 -1
- package/src/lib/model/plugin-permissions.d.ts +8 -1
- package/src/lib/model/plugin-permissions.js +21 -1
- package/src/lib/model/plugin-permissions.js.map +1 -1
- package/src/lib/model/workspace-site-permissions.d.ts +26 -0
- package/src/lib/model/workspace-site-permissions.js +81 -0
- package/src/lib/model/workspace-site-permissions.js.map +1 -0
- package/src/lib/server/api-v1/orders-and-products.js +6 -2
- package/src/lib/server/api-v1/orders-and-products.js.map +1 -1
- package/src/lib/server/billing-webhook.js +127 -52
- package/src/lib/server/billing-webhook.js.map +1 -1
- package/src/lib/server/checkout-session-expiry.d.ts +36 -0
- package/src/lib/server/checkout-session-expiry.js +63 -0
- package/src/lib/server/checkout-session-expiry.js.map +1 -0
- package/src/lib/server/commerce-site-keys.d.ts +19 -0
- package/src/lib/server/commerce-site-keys.js +23 -2
- package/src/lib/server/commerce-site-keys.js.map +1 -1
- package/src/lib/server/draft-order.js +16 -8
- package/src/lib/server/draft-order.js.map +1 -1
- package/src/lib/server/order-webhooks.js +8 -8
- package/src/lib/server/order-webhooks.js.map +1 -1
- package/src/lib/server/person-eraser.d.ts +7 -0
- package/src/lib/server/person-eraser.js +24 -2
- package/src/lib/server/person-eraser.js.map +1 -1
- package/src/lib/server/pos-ops-gate.d.ts +13 -5
- package/src/lib/server/pos-ops-gate.js +12 -14
- package/src/lib/server/pos-ops-gate.js.map +1 -1
- package/src/lib/server/pos-refund-authority.d.ts +3 -1
- package/src/lib/server/pos-refund-authority.js +3 -2
- package/src/lib/server/pos-refund-authority.js.map +1 -1
- package/src/lib/server/pos-return.js +6 -7
- package/src/lib/server/pos-return.js.map +1 -1
- package/src/lib/server/pos-staff-pin.js +7 -7
- package/src/lib/server/pos-staff-pin.js.map +1 -1
- package/src/lib/server/quote-link-token.d.ts +39 -0
- package/src/lib/server/quote-link-token.js +97 -0
- package/src/lib/server/quote-link-token.js.map +1 -0
- package/src/lib/server/quote-pay.d.ts +83 -0
- package/src/lib/server/quote-pay.js +606 -0
- package/src/lib/server/quote-pay.js.map +1 -0
- package/src/lib/server/quote.d.ts +49 -0
- package/src/lib/server/quote.js +513 -0
- package/src/lib/server/quote.js.map +1 -0
- package/src/lib/server/refund.js +26 -36
- package/src/lib/server/refund.js.map +1 -1
- package/src/lib/server/related.js +2 -0
- package/src/lib/server/related.js.map +1 -1
- package/src/lib/server/site-page-resolver.d.ts +2 -0
- package/src/lib/server/site-page-resolver.js +75 -0
- package/src/lib/server/site-page-resolver.js.map +1 -1
- package/src/lib/server.js +14 -0
- package/src/lib/server.js.map +1 -1
- package/src/lib/site.js +6 -0
- package/src/lib/site.js.map +1 -1
- package/src/lib/transfer/tracking.server.js +6 -0
- package/src/lib/transfer/tracking.server.js.map +1 -1
|
@@ -0,0 +1,35 @@
|
|
|
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
|
+
* The customer's quote page (AGL-4094), where a quote's pay link opens.
|
|
18
|
+
*
|
|
19
|
+
* The component id is persisted in screen documents; never rename it. The
|
|
20
|
+
* path is where the site serves the page when it has no page of its own
|
|
21
|
+
* there. It is `pay-quote` rather than `quote` because a business that sells
|
|
22
|
+
* made-to-order work often has a "Request a quote" page at `/quote` already,
|
|
23
|
+
* and a page of the site's own at an address always wins over this one: a pay
|
|
24
|
+
* link there would open the request form.
|
|
25
|
+
*/ export const QUOTE_PAGE_COMPONENT_ID = 'quote-page';
|
|
26
|
+
export const QUOTE_PAGE_PATH = 'pay-quote';
|
|
27
|
+
/** The page's address for one quote and its signed link token, relative to the site. */ export function quotePageHref(quoteId, token) {
|
|
28
|
+
const query = new URLSearchParams({
|
|
29
|
+
q: quoteId,
|
|
30
|
+
t: token
|
|
31
|
+
});
|
|
32
|
+
return `/${QUOTE_PAGE_PATH}?${query.toString()}`;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
//# sourceMappingURL=quote-page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../../libs/plugins/commerce/src/lib/constants/quote-page.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 * The customer's quote page (AGL-4094), where a quote's pay link opens.\n *\n * The component id is persisted in screen documents; never rename it. The\n * path is where the site serves the page when it has no page of its own\n * there. It is `pay-quote` rather than `quote` because a business that sells\n * made-to-order work often has a \"Request a quote\" page at `/quote` already,\n * and a page of the site's own at an address always wins over this one: a pay\n * link there would open the request form.\n */\nexport const QUOTE_PAGE_COMPONENT_ID = 'quote-page'\n\nexport const QUOTE_PAGE_PATH = 'pay-quote'\n\n/** The page's address for one quote and its signed link token, relative to the site. */\nexport function quotePageHref(quoteId: string, token: string): string {\n const query = new URLSearchParams({ q: quoteId, t: token })\n return `/${QUOTE_PAGE_PATH}?${query.toString()}`\n}\n"],"names":["QUOTE_PAGE_COMPONENT_ID","QUOTE_PAGE_PATH","quotePageHref","quoteId","token","query","URLSearchParams","q","t","toString"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;CASC,GACD,OAAO,MAAMA,0BAA0B,aAAY;AAEnD,OAAO,MAAMC,kBAAkB,YAAW;AAE1C,sFAAsF,GACtF,OAAO,SAASC,cAAcC,OAAe,EAAEC,KAAa;IAC1D,MAAMC,QAAQ,IAAIC,gBAAgB;QAAEC,GAAGJ;QAASK,GAAGJ;IAAM;IACzD,OAAO,CAAC,CAAC,EAAEH,gBAAgB,CAAC,EAAEI,MAAMI,QAAQ,IAAI;AAClD"}
|
package/src/lib/declarations.js
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
*/ import { registerPluginEntitlements } from "@aglyn/aglyn/plugin-manager/plugin-entitlements";
|
|
17
17
|
import { registerPluginPermissions } from "@aglyn/aglyn/plugin-manager/plugin-permissions";
|
|
18
18
|
import { COMMERCE_PERMISSIONS, COMMERCE_SITE_PERMISSIONS } from "./model/plugin-permissions.js";
|
|
19
|
+
import { COMMERCE_WORKSPACE_SITE_PERMISSIONS } from "./model/workspace-site-permissions.js";
|
|
19
20
|
let declared = false;
|
|
20
21
|
/**
|
|
21
22
|
* The plugin's DECLARATIONS (AGL-4047): its permission keys (the point of
|
|
@@ -32,7 +33,10 @@ let declared = false;
|
|
|
32
33
|
declared = true;
|
|
33
34
|
registerPluginEntitlements({
|
|
34
35
|
pluginId: 'commerce',
|
|
35
|
-
orgPermissions:
|
|
36
|
+
orgPermissions: [
|
|
37
|
+
...COMMERCE_SITE_PERMISSIONS,
|
|
38
|
+
...COMMERCE_WORKSPACE_SITE_PERMISSIONS
|
|
39
|
+
]
|
|
36
40
|
});
|
|
37
41
|
registerPluginPermissions(COMMERCE_PERMISSIONS);
|
|
38
42
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../libs/plugins/commerce/src/lib/declarations.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 { registerPluginEntitlements } from '@aglyn/aglyn/plugin-manager/plugin-entitlements'\nimport { registerPluginPermissions } from '@aglyn/aglyn/plugin-manager/plugin-permissions'\nimport { COMMERCE_PERMISSIONS, COMMERCE_SITE_PERMISSIONS } from './model/plugin-permissions'\n\nlet declared = false\n\n/**\n * The plugin's DECLARATIONS (AGL-4047): its permission keys (the point of\n * sale's `managePos` and its finer keys, and the reservation keys whose\n * preset is the site role), which the one permission catalog lists beside\n * the core keys. Loaded eagerly by\n * the console (client and server) and the tenant's server through the\n * generated declarations manifest, so the role editor offers the keys, a\n * custom role or a per-member override keeps them, and a route resolves\n * them whether or not a request has touched the plugin yet. Light by\n * construction: nothing here reaches a provider, Firestore or React.\n */\nexport function registerCommerceDeclarations(): void {\n if (declared) return\n declared = true\n registerPluginEntitlements({
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/plugins/commerce/src/lib/declarations.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 { registerPluginEntitlements } from '@aglyn/aglyn/plugin-manager/plugin-entitlements'\nimport { registerPluginPermissions } from '@aglyn/aglyn/plugin-manager/plugin-permissions'\nimport { COMMERCE_PERMISSIONS, COMMERCE_SITE_PERMISSIONS } from './model/plugin-permissions'\nimport { COMMERCE_WORKSPACE_SITE_PERMISSIONS } from './model/workspace-site-permissions'\n\nlet declared = false\n\n/**\n * The plugin's DECLARATIONS (AGL-4047): its permission keys (the point of\n * sale's `managePos` and its finer keys, and the reservation keys whose\n * preset is the site role), which the one permission catalog lists beside\n * the core keys. Loaded eagerly by\n * the console (client and server) and the tenant's server through the\n * generated declarations manifest, so the role editor offers the keys, a\n * custom role or a per-member override keeps them, and a route resolves\n * them whether or not a request has touched the plugin yet. Light by\n * construction: nothing here reaches a provider, Firestore or React.\n */\nexport function registerCommerceDeclarations(): void {\n if (declared) return\n declared = true\n registerPluginEntitlements({\n pluginId: 'commerce',\n orgPermissions: [...COMMERCE_SITE_PERMISSIONS, ...COMMERCE_WORKSPACE_SITE_PERMISSIONS],\n })\n registerPluginPermissions(COMMERCE_PERMISSIONS)\n}\n\nregisterCommerceDeclarations()\n"],"names":["registerPluginEntitlements","registerPluginPermissions","COMMERCE_PERMISSIONS","COMMERCE_SITE_PERMISSIONS","COMMERCE_WORKSPACE_SITE_PERMISSIONS","declared","registerCommerceDeclarations","pluginId","orgPermissions"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,0BAA0B,QAAQ,kDAAiD;AAC5F,SAASC,yBAAyB,QAAQ,iDAAgD;AAC1F,SAASC,oBAAoB,EAAEC,yBAAyB,QAAQ,gCAA4B;AAC5F,SAASC,mCAAmC,QAAQ,wCAAoC;AAExF,IAAIC,WAAW;AAEf;;;;;;;;;;CAUC,GACD,OAAO,SAASC;IACd,IAAID,UAAU;IACdA,WAAW;IACXL,2BAA2B;QACzBO,UAAU;QACVC,gBAAgB;eAAIL;eAA8BC;SAAoC;IACxF;IACAH,0BAA0BC;AAC5B;AAEAI"}
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
* I/O here.
|
|
24
24
|
*/
|
|
25
25
|
import type { OrderLineModifier } from './product-modifiers';
|
|
26
|
+
import type { OrderQuote } from './commerce-quotes';
|
|
26
27
|
import type { PaymentRisk } from '@aglyn/aglyn/app-utils/payment-risk';
|
|
27
28
|
import type { ProductType } from './commerce';
|
|
28
29
|
import type { StorefrontTaxMode } from './commerce-tax-decision';
|
|
@@ -31,7 +32,8 @@ import type { PosOfflineOrderStamp } from './commerce-pos-offline';
|
|
|
31
32
|
import type { OrderFulfillmentMethod, OrderLocalDelivery, OrderPickup } from './order-local-fulfillment';
|
|
32
33
|
export type OrderStatus = 'pending' | 'paid' | 'partially_fulfilled' | 'fulfilled' | 'delivered' | 'cancelled' | 'refunded';
|
|
33
34
|
/**
|
|
34
|
-
* Where the sale came through. `
|
|
35
|
+
* Where the sale came through. `quote` is an order a business quoted before
|
|
36
|
+
* the customer paid it (AGL-4093, `commerce-quotes.ts`). `subscription` is a recurring cycle of a
|
|
35
37
|
* PHYSICAL subscription product (AGL-1750): each paid invoice mints one order
|
|
36
38
|
* so fulfilment has something to pick, pack and label against, and so
|
|
37
39
|
* recurring revenue reaches the surfaces that read `orders`. Digital and
|
|
@@ -39,7 +41,7 @@ export type OrderStatus = 'pending' | 'paid' | 'partially_fulfilled' | 'fulfille
|
|
|
39
41
|
* there is nothing to ship, and AGL-1732's "a subscription is not an order"
|
|
40
42
|
* stands for them.
|
|
41
43
|
*/
|
|
42
|
-
export type OrderChannel = 'online' | 'pos' | 'draft' | 'subscription' | 'marketplace';
|
|
44
|
+
export type OrderChannel = 'online' | 'pos' | 'draft' | 'subscription' | 'marketplace' | 'quote';
|
|
43
45
|
/**
|
|
44
46
|
* Where an order sold on an outside channel came from (AGL-3638): a
|
|
45
47
|
* marketplace that took the buyer's money and pays the merchant out. Written
|
|
@@ -83,7 +85,20 @@ export interface OrderChannelSource {
|
|
|
83
85
|
}
|
|
84
86
|
/** Snapshot of what was bought — self-contained for history. */
|
|
85
87
|
export interface OrderLineItem {
|
|
88
|
+
/**
|
|
89
|
+
* The product sold. EMPTY on a line typed on a quote (`custom`), which no
|
|
90
|
+
* product stands behind: every reader that looks a product up by this id
|
|
91
|
+
* skips an empty one (AGL-4093).
|
|
92
|
+
*/
|
|
86
93
|
productId: string;
|
|
94
|
+
/** A line typed on a quote rather than picked from the catalog (AGL-4093). */
|
|
95
|
+
custom?: boolean;
|
|
96
|
+
/** Included at no charge (AGL-4093): `unitAmountCents` is 0. */
|
|
97
|
+
included?: boolean;
|
|
98
|
+
/** What the line is, in the business's words, beyond its name (AGL-4093). */
|
|
99
|
+
description?: string;
|
|
100
|
+
/** The product was tax-exempt when the line was priced (AGL-4093). */
|
|
101
|
+
taxExempt?: boolean;
|
|
87
102
|
variantId?: string;
|
|
88
103
|
/** Display snapshot at purchase time. */
|
|
89
104
|
name: string;
|
|
@@ -623,6 +638,8 @@ export interface HostOrder {
|
|
|
623
638
|
invoiceId?: string;
|
|
624
639
|
/** Draft orders (AGL-287): the link sent to the buyer. */
|
|
625
640
|
paymentLinkUrl?: string;
|
|
641
|
+
/** What only a quote has (channel `quote`, AGL-4093); see `commerce-quotes.ts`. */
|
|
642
|
+
quote?: OrderQuote;
|
|
626
643
|
refundedCents?: number;
|
|
627
644
|
/**
|
|
628
645
|
* Line indexes an admin refunded BY NAME (AGL-2454), and therefore the lines
|
|
@@ -1120,6 +1137,12 @@ export declare function formatOrderNumber(order: Pick<HostOrder, 'number'>, docI
|
|
|
1120
1137
|
* into the v1 shape for display; already-shaped orders pass through.
|
|
1121
1138
|
*/
|
|
1122
1139
|
export declare function liftLegacyOrder(raw: Partial<HostOrder>): HostOrder;
|
|
1140
|
+
/**
|
|
1141
|
+
* What a report groups a line under: its product, or for a line typed on a
|
|
1142
|
+
* quote (no product) its name, so two different typed lines never pool into
|
|
1143
|
+
* one empty-id bucket.
|
|
1144
|
+
*/
|
|
1145
|
+
export declare function orderLineProductKey(line: Pick<OrderLineItem, 'productId' | 'name'>): string;
|
|
1123
1146
|
/**
|
|
1124
1147
|
* Does this order contain `productId`?
|
|
1125
1148
|
*
|
|
@@ -625,6 +625,14 @@ export function computeCheckoutSessionTotals(lineItems, session, parts) {
|
|
|
625
625
|
}
|
|
626
626
|
});
|
|
627
627
|
}
|
|
628
|
+
/**
|
|
629
|
+
* What a report groups a line under: its product, or for a line typed on a
|
|
630
|
+
* quote (no product) its name, so two different typed lines never pool into
|
|
631
|
+
* one empty-id bucket.
|
|
632
|
+
*/ export function orderLineProductKey(line) {
|
|
633
|
+
var _line_name;
|
|
634
|
+
return line.productId ? line.productId : `custom:${(_line_name = line.name) != null ? _line_name : ''}`;
|
|
635
|
+
}
|
|
628
636
|
/**
|
|
629
637
|
* Does this order contain `productId`?
|
|
630
638
|
*
|
|
@@ -859,7 +867,8 @@ export function computeCheckoutSessionTotals(lineItems, session, parts) {
|
|
|
859
867
|
pos: 'POS',
|
|
860
868
|
draft: 'Draft',
|
|
861
869
|
subscription: 'Subscription',
|
|
862
|
-
marketplace: 'Marketplace'
|
|
870
|
+
marketplace: 'Marketplace',
|
|
871
|
+
quote: 'Quote'
|
|
863
872
|
};
|
|
864
873
|
/** Human label for a channel, tolerating a legacy/unknown value. */ export function orderChannelLabel(channel) {
|
|
865
874
|
var _ref, _ORDER_CHANNEL_LABELS_;
|