@aglyn/aglyn 1.0.0-beta.230 → 1.0.0-beta.231
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 +11 -11
- package/src/lib/app-utils/crm.d.ts +14 -1
- package/src/lib/app-utils/crm.js +19 -2
- package/src/lib/app-utils/crm.js.map +1 -1
- package/src/lib/app-utils/docs-help.generated.d.ts +80 -2
- package/src/lib/app-utils/docs-help.generated.js +209 -1
- package/src/lib/app-utils/docs-help.generated.js.map +1 -1
- package/src/lib/app-utils/docs-index.generated.js +517 -20
- package/src/lib/app-utils/docs-index.generated.js.map +1 -1
- package/src/lib/app-utils/host-status.d.ts +85 -0
- package/src/lib/app-utils/host-status.js +115 -0
- package/src/lib/app-utils/host-status.js.map +1 -0
- package/src/lib/app-utils/lockdown.js +1 -1
- package/src/lib/app-utils/lockdown.js.map +1 -1
- package/src/lib/app-utils/media-filter.d.ts +136 -0
- package/src/lib/app-utils/media-filter.js +400 -0
- package/src/lib/app-utils/media-filter.js.map +1 -0
- package/src/lib/app-utils/mobile-push.d.ts +98 -0
- package/src/lib/app-utils/mobile-push.js +97 -0
- package/src/lib/app-utils/mobile-push.js.map +1 -0
- package/src/lib/app-utils/notification-push.d.ts +38 -0
- package/src/lib/app-utils/notification-push.js +54 -0
- package/src/lib/app-utils/notification-push.js.map +1 -0
- package/src/lib/app-utils/notifications.d.ts +7 -0
- package/src/lib/app-utils/notifications.js.map +1 -1
- package/src/lib/app-utils/organizations.js +5 -2
- package/src/lib/app-utils/organizations.js.map +1 -1
- package/src/lib/app-utils/plugin-host-events.generated.d.ts +1 -1
- package/src/lib/app-utils/plugin-host-events.generated.js +149 -0
- package/src/lib/app-utils/plugin-host-events.generated.js.map +1 -1
- package/src/lib/app-utils/plugin-release-flags.generated.d.ts +1 -1
- package/src/lib/app-utils/plugin-release-flags.generated.js +7 -0
- package/src/lib/app-utils/plugin-release-flags.generated.js.map +1 -1
- package/src/lib/app-utils/realm-host-surface.generated.js +3 -0
- package/src/lib/app-utils/realm-host-surface.generated.js.map +1 -1
- package/src/lib/app-utils/release-flags.js +6 -2
- package/src/lib/app-utils/release-flags.js.map +1 -1
- package/src/lib/app-utils/scope-tokens.d.ts +16 -1
- package/src/lib/app-utils/scope-tokens.js +15 -1
- package/src/lib/app-utils/scope-tokens.js.map +1 -1
- package/src/lib/app-utils/site-list-query.d.ts +47 -0
- package/src/lib/app-utils/site-list-query.js +142 -0
- package/src/lib/app-utils/site-list-query.js.map +1 -0
- package/src/lib/app-utils/site-wide-outbox.d.ts +95 -0
- package/src/lib/app-utils/site-wide-outbox.js +117 -0
- package/src/lib/app-utils/site-wide-outbox.js.map +1 -0
- package/src/lib/app-utils/transfer-launcher-context.d.ts +6 -0
- package/src/lib/app-utils/transfer-launcher-context.js.map +1 -1
- package/src/lib/app-utils/upload-inspection.js +7 -0
- package/src/lib/app-utils/upload-inspection.js.map +1 -1
- package/src/lib/app-utils/webhook-delivery.js +4 -1
- package/src/lib/app-utils/webhook-delivery.js.map +1 -1
- package/src/lib/foundation/definitions/org-billing.types.d.ts +8 -0
- package/src/lib/foundation/definitions/org-billing.types.js.map +1 -1
- package/src/lib/foundation/definitions/organization.types.d.ts +18 -7
- package/src/lib/foundation/definitions/organization.types.js.map +1 -1
- package/src/lib/foundation/definitions/write-deny-coverage.util.d.ts +4 -1
- package/src/lib/foundation/definitions/write-deny-coverage.util.js +12 -2
- package/src/lib/foundation/definitions/write-deny-coverage.util.js.map +1 -1
- package/src/lib/plugin-manager/enabled-plugins.js +4 -2
- package/src/lib/plugin-manager/enabled-plugins.js.map +1 -1
- package/src/lib/plugin-manager/feature-plugins.d.ts +88 -0
- package/src/lib/plugin-manager/feature-plugins.js +44 -0
- package/src/lib/plugin-manager/feature-plugins.js.map +1 -1
- package/src/lib/plugin-manager/first-party-plugins.generated.js +222 -2
- package/src/lib/plugin-manager/first-party-plugins.generated.js.map +1 -1
- package/src/lib/plugin-manager/plugin-checkout-extras.d.ts +168 -0
- package/src/lib/plugin-manager/plugin-checkout-extras.js +172 -0
- package/src/lib/plugin-manager/plugin-checkout-extras.js.map +1 -0
- package/src/lib/plugin-manager/plugin-contributions.d.ts +7 -0
- package/src/lib/plugin-manager/plugin-contributions.js +1 -1
- package/src/lib/plugin-manager/plugin-contributions.js.map +1 -1
- package/src/lib/plugin-manager/plugin-domain-events.d.ts +138 -0
- package/src/lib/plugin-manager/plugin-domain-events.js +148 -0
- package/src/lib/plugin-manager/plugin-domain-events.js.map +1 -0
- package/src/lib/plugin-manager/plugin-events.d.ts +30 -0
- package/src/lib/plugin-manager/plugin-events.js +4 -0
- package/src/lib/plugin-manager/plugin-events.js.map +1 -1
- package/src/lib/plugin-manager/plugin-fulfillment-providers.d.ts +101 -0
- package/src/lib/plugin-manager/plugin-fulfillment-providers.js +83 -0
- package/src/lib/plugin-manager/plugin-fulfillment-providers.js.map +1 -0
- package/src/lib/plugin-manager/plugin-permissions.js +21 -5
- package/src/lib/plugin-manager/plugin-permissions.js.map +1 -1
- package/src/lib/plugin-manager/plugin-person-records.d.ts +90 -0
- package/src/lib/plugin-manager/plugin-person-records.js +26 -0
- package/src/lib/plugin-manager/plugin-person-records.js.map +1 -1
- package/src/lib/plugin-manager/plugin-product-catalog.d.ts +204 -0
- package/src/lib/plugin-manager/plugin-product-catalog.js +43 -0
- package/src/lib/plugin-manager/plugin-product-catalog.js.map +1 -0
- package/src/lib/plugin-manager/plugin-shipment-records.d.ts +210 -0
- package/src/lib/plugin-manager/plugin-shipment-records.js +63 -0
- package/src/lib/plugin-manager/plugin-shipment-records.js.map +1 -0
- package/src/lib/plugin-manager/plugin-shipping-rates.d.ts +151 -0
- package/src/lib/plugin-manager/plugin-shipping-rates.js +62 -0
- package/src/lib/plugin-manager/plugin-shipping-rates.js.map +1 -0
- package/src/lib/plugin-manager/plugin-sms-messaging.d.ts +103 -0
- package/src/lib/plugin-manager/plugin-sms-messaging.js +39 -0
- package/src/lib/plugin-manager/plugin-sms-messaging.js.map +1 -0
- package/src/lib/plugin-manager/plugin-stock-levels.d.ts +81 -0
- package/src/lib/plugin-manager/plugin-stock-levels.js +32 -0
- package/src/lib/plugin-manager/plugin-stock-levels.js.map +1 -0
- package/src/lib/plugin-manager/plugin-tax-profile.d.ts +154 -0
- package/src/lib/plugin-manager/plugin-tax-profile.js +56 -0
- package/src/lib/plugin-manager/plugin-tax-profile.js.map +1 -1
- package/src/lib/plugin-manager/plugin-theme-font-catalog.d.ts +59 -0
- package/src/lib/plugin-manager/plugin-theme-font-catalog.js +40 -0
- package/src/lib/plugin-manager/plugin-theme-font-catalog.js.map +1 -0
- package/src/lib/plugin-manager/plugin-tracking-pages.d.ts +55 -0
- package/src/lib/plugin-manager/plugin-tracking-pages.js +76 -0
- package/src/lib/plugin-manager/plugin-tracking-pages.js.map +1 -0
- package/src/lib/plugin-manager/realm-host-aglyn.generated.js +3 -0
- package/src/lib/plugin-manager/realm-host-aglyn.generated.js.map +1 -1
|
@@ -0,0 +1,85 @@
|
|
|
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
|
+
export interface HostStatus {
|
|
18
|
+
/** `Live`, `Draft`, `Maintenance`, `Suspended`. */
|
|
19
|
+
label: string;
|
|
20
|
+
color: 'success' | 'default' | 'warning' | 'error';
|
|
21
|
+
/** Why, in one sentence — the pill's tooltip. */
|
|
22
|
+
detail: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* How many pages this site publishes.
|
|
26
|
+
*
|
|
27
|
+
* Read off `host.screens` — the map publishing writes into the host document
|
|
28
|
+
* (`hosts/{hostId}.screens[screenId] = slug`, see `template-screens.ts`) and
|
|
29
|
+
* the tenant reads to route a request. So a site with an entry has at least
|
|
30
|
+
* one page a visitor can reach, and one without has none. That makes this a
|
|
31
|
+
* fact already sitting in a document its readers hold: **no extra read**, on
|
|
32
|
+
* a page that can list a hundred sites.
|
|
33
|
+
*
|
|
34
|
+
* ⚠️ It counts PUBLISHED ROUTES, not authored work. A site with five
|
|
35
|
+
* unpublished drafts counts 0 — the map is written by publishing and by
|
|
36
|
+
* nothing else. Every caller is asking "what can a visitor reach?"; a caller
|
|
37
|
+
* that means "has anyone worked on this?" is asking a different question and
|
|
38
|
+
* this is the wrong number for it.
|
|
39
|
+
*
|
|
40
|
+
* The placeholder home page a new site is created with (AGL-3408) COUNTS
|
|
41
|
+
* here: it is a page a visitor reaches, so a new site is Live. The first-run
|
|
42
|
+
* offer asks a different question — has the OWNER published anything? — and
|
|
43
|
+
* reads `hostIsBlankSite`, which discounts it.
|
|
44
|
+
*/
|
|
45
|
+
export declare function publishedScreenCount(host: {
|
|
46
|
+
screens?: Record<string, unknown>;
|
|
47
|
+
} | null | undefined): number;
|
|
48
|
+
/**
|
|
49
|
+
* The `Live` / `Draft` pill the console Sites mockup puts on every card
|
|
50
|
+
* (AGL-2166).
|
|
51
|
+
*
|
|
52
|
+
* Derived from {@link publishedScreenCount}: the pill reports what a visitor
|
|
53
|
+
* can reach, placeholder home page included.
|
|
54
|
+
*
|
|
55
|
+
* The staff admin host page has rendered a `published` / `draft` chip since
|
|
56
|
+
* AGL-390 off `host.published`, which is not a field on `AglynHost` and is
|
|
57
|
+
* written by nothing — so that chip has always said `draft`. Deriving from
|
|
58
|
+
* `screens` is what it should have done.
|
|
59
|
+
*
|
|
60
|
+
* Order matters. A suspended site is not "live" whatever it has published,
|
|
61
|
+
* and a site in maintenance is serving the 503 screen rather than its
|
|
62
|
+
* pages — reporting either as `Live` would be the console agreeing with a
|
|
63
|
+
* customer who thinks their site is up.
|
|
64
|
+
*/
|
|
65
|
+
export declare function describeHostStatus(host: {
|
|
66
|
+
screens?: Record<string, unknown>;
|
|
67
|
+
maintenance?: boolean;
|
|
68
|
+
suspendedAt?: number;
|
|
69
|
+
suspendedUntilMs?: number;
|
|
70
|
+
}): HostStatus;
|
|
71
|
+
/**
|
|
72
|
+
* `6 of 10 sites · Business plan` — the meta line the Sites mockup puts
|
|
73
|
+
* opposite the section heading.
|
|
74
|
+
*
|
|
75
|
+
* Returns `undefined` rather than a partial line while the org or its plan
|
|
76
|
+
* is still resolving. A count against the FREE limit is what an unresolved
|
|
77
|
+
* org produces, and telling a Business customer they are at "1 of 1 sites"
|
|
78
|
+
* is how a correct page delivers a false upgrade prompt.
|
|
79
|
+
*/
|
|
80
|
+
export declare function describeSiteAllowance(options: {
|
|
81
|
+
used: number;
|
|
82
|
+
limit: number | undefined;
|
|
83
|
+
planLabel: string | undefined;
|
|
84
|
+
ready: boolean;
|
|
85
|
+
}): string | undefined;
|
|
@@ -0,0 +1,115 @@
|
|
|
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
|
+
* How many pages this site publishes.
|
|
18
|
+
*
|
|
19
|
+
* Read off `host.screens` — the map publishing writes into the host document
|
|
20
|
+
* (`hosts/{hostId}.screens[screenId] = slug`, see `template-screens.ts`) and
|
|
21
|
+
* the tenant reads to route a request. So a site with an entry has at least
|
|
22
|
+
* one page a visitor can reach, and one without has none. That makes this a
|
|
23
|
+
* fact already sitting in a document its readers hold: **no extra read**, on
|
|
24
|
+
* a page that can list a hundred sites.
|
|
25
|
+
*
|
|
26
|
+
* ⚠️ It counts PUBLISHED ROUTES, not authored work. A site with five
|
|
27
|
+
* unpublished drafts counts 0 — the map is written by publishing and by
|
|
28
|
+
* nothing else. Every caller is asking "what can a visitor reach?"; a caller
|
|
29
|
+
* that means "has anyone worked on this?" is asking a different question and
|
|
30
|
+
* this is the wrong number for it.
|
|
31
|
+
*
|
|
32
|
+
* The placeholder home page a new site is created with (AGL-3408) COUNTS
|
|
33
|
+
* here: it is a page a visitor reaches, so a new site is Live. The first-run
|
|
34
|
+
* offer asks a different question — has the OWNER published anything? — and
|
|
35
|
+
* reads `hostIsBlankSite`, which discounts it.
|
|
36
|
+
*/ export function publishedScreenCount(host) {
|
|
37
|
+
var _ref;
|
|
38
|
+
return Object.keys((_ref = host == null ? void 0 : host.screens) != null ? _ref : {}).length;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* The `Live` / `Draft` pill the console Sites mockup puts on every card
|
|
42
|
+
* (AGL-2166).
|
|
43
|
+
*
|
|
44
|
+
* Derived from {@link publishedScreenCount}: the pill reports what a visitor
|
|
45
|
+
* can reach, placeholder home page included.
|
|
46
|
+
*
|
|
47
|
+
* The staff admin host page has rendered a `published` / `draft` chip since
|
|
48
|
+
* AGL-390 off `host.published`, which is not a field on `AglynHost` and is
|
|
49
|
+
* written by nothing — so that chip has always said `draft`. Deriving from
|
|
50
|
+
* `screens` is what it should have done.
|
|
51
|
+
*
|
|
52
|
+
* Order matters. A suspended site is not "live" whatever it has published,
|
|
53
|
+
* and a site in maintenance is serving the 503 screen rather than its
|
|
54
|
+
* pages — reporting either as `Live` would be the console agreeing with a
|
|
55
|
+
* customer who thinks their site is up.
|
|
56
|
+
*/ export function describeHostStatus(host) {
|
|
57
|
+
if (host == null ? void 0 : host.suspendedAt) {
|
|
58
|
+
// A timed suspension that has elapsed is over, even though the fields
|
|
59
|
+
// are still on the document — the tenant makes the same check.
|
|
60
|
+
const until = host.suspendedUntilMs;
|
|
61
|
+
if (!until || until > Date.now()) {
|
|
62
|
+
return {
|
|
63
|
+
label: 'Suspended',
|
|
64
|
+
color: 'error',
|
|
65
|
+
detail: 'This site is serving a lockdown notice instead of content.'
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
if (host == null ? void 0 : host.maintenance) {
|
|
70
|
+
return {
|
|
71
|
+
label: 'Maintenance',
|
|
72
|
+
color: 'warning',
|
|
73
|
+
detail: 'Every path serves the maintenance page.'
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
const published = publishedScreenCount(host);
|
|
77
|
+
if (published > 0) {
|
|
78
|
+
return {
|
|
79
|
+
label: 'Live',
|
|
80
|
+
color: 'success',
|
|
81
|
+
detail: `${published} published page${published === 1 ? '' : 's'}.`
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
return {
|
|
85
|
+
label: 'Draft',
|
|
86
|
+
color: 'default',
|
|
87
|
+
detail: 'Nothing published yet — visitors see the placeholder.'
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* `6 of 10 sites · Business plan` — the meta line the Sites mockup puts
|
|
92
|
+
* opposite the section heading.
|
|
93
|
+
*
|
|
94
|
+
* Returns `undefined` rather than a partial line while the org or its plan
|
|
95
|
+
* is still resolving. A count against the FREE limit is what an unresolved
|
|
96
|
+
* org produces, and telling a Business customer they are at "1 of 1 sites"
|
|
97
|
+
* is how a correct page delivers a false upgrade prompt.
|
|
98
|
+
*/ export function describeSiteAllowance(options) {
|
|
99
|
+
const { used, limit, planLabel, ready } = options;
|
|
100
|
+
if (!ready || !planLabel) return undefined;
|
|
101
|
+
/*
|
|
102
|
+
* `Number.isFinite`, not `limit < 0` (AGL-2223).
|
|
103
|
+
*
|
|
104
|
+
* `UNLIMITED` is `Number.POSITIVE_INFINITY`, and Enterprise's `hostLimit`
|
|
105
|
+
* is exactly that — so the `< 0` test was never true for the one plan the
|
|
106
|
+
* Unlimited branch existed for, and an Enterprise organization read
|
|
107
|
+
* `4 of Infinity sites · Enterprise plan`. The negative case is kept: an
|
|
108
|
+
* entitlement override can carry a negative sentinel, and reading that as a
|
|
109
|
+
* cap of "-1 sites" would be the same class of nonsense.
|
|
110
|
+
*/ const cap = limit === undefined || limit === null ? undefined : !Number.isFinite(limit) || limit < 0 ? 'Unlimited' : String(limit);
|
|
111
|
+
const sites = cap === undefined ? `${used} site${used === 1 ? '' : 's'}` : `${used} of ${cap} site${cap === '1' ? '' : 's'}`;
|
|
112
|
+
return `${sites} · ${planLabel} plan`;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
//# sourceMappingURL=host-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/host-status.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\nexport interface HostStatus {\n /** `Live`, `Draft`, `Maintenance`, `Suspended`. */\n label: string\n color: 'success' | 'default' | 'warning' | 'error'\n /** Why, in one sentence — the pill's tooltip. */\n detail: string\n}\n\n/**\n * How many pages this site publishes.\n *\n * Read off `host.screens` — the map publishing writes into the host document\n * (`hosts/{hostId}.screens[screenId] = slug`, see `template-screens.ts`) and\n * the tenant reads to route a request. So a site with an entry has at least\n * one page a visitor can reach, and one without has none. That makes this a\n * fact already sitting in a document its readers hold: **no extra read**, on\n * a page that can list a hundred sites.\n *\n * ⚠️ It counts PUBLISHED ROUTES, not authored work. A site with five\n * unpublished drafts counts 0 — the map is written by publishing and by\n * nothing else. Every caller is asking \"what can a visitor reach?\"; a caller\n * that means \"has anyone worked on this?\" is asking a different question and\n * this is the wrong number for it.\n *\n * The placeholder home page a new site is created with (AGL-3408) COUNTS\n * here: it is a page a visitor reaches, so a new site is Live. The first-run\n * offer asks a different question — has the OWNER published anything? — and\n * reads `hostIsBlankSite`, which discounts it.\n */\nexport function publishedScreenCount(\n host: { screens?: Record<string, unknown> } | null | undefined,\n): number {\n return Object.keys(host?.screens ?? {}).length\n}\n\n/**\n * The `Live` / `Draft` pill the console Sites mockup puts on every card\n * (AGL-2166).\n *\n * Derived from {@link publishedScreenCount}: the pill reports what a visitor\n * can reach, placeholder home page included.\n *\n * The staff admin host page has rendered a `published` / `draft` chip since\n * AGL-390 off `host.published`, which is not a field on `AglynHost` and is\n * written by nothing — so that chip has always said `draft`. Deriving from\n * `screens` is what it should have done.\n *\n * Order matters. A suspended site is not \"live\" whatever it has published,\n * and a site in maintenance is serving the 503 screen rather than its\n * pages — reporting either as `Live` would be the console agreeing with a\n * customer who thinks their site is up.\n */\nexport function describeHostStatus(host: {\n screens?: Record<string, unknown>\n maintenance?: boolean\n suspendedAt?: number\n suspendedUntilMs?: number\n}): HostStatus {\n if (host?.suspendedAt) {\n // A timed suspension that has elapsed is over, even though the fields\n // are still on the document — the tenant makes the same check.\n const until = host.suspendedUntilMs\n if (!until || until > Date.now()) {\n return {\n label: 'Suspended',\n color: 'error',\n detail: 'This site is serving a lockdown notice instead of content.',\n }\n }\n }\n if (host?.maintenance) {\n return {\n label: 'Maintenance',\n color: 'warning',\n detail: 'Every path serves the maintenance page.',\n }\n }\n const published = publishedScreenCount(host)\n if (published > 0) {\n return {\n label: 'Live',\n color: 'success',\n detail: `${published} published page${published === 1 ? '' : 's'}.`,\n }\n }\n return {\n label: 'Draft',\n color: 'default',\n detail: 'Nothing published yet — visitors see the placeholder.',\n }\n}\n\n/**\n * `6 of 10 sites · Business plan` — the meta line the Sites mockup puts\n * opposite the section heading.\n *\n * Returns `undefined` rather than a partial line while the org or its plan\n * is still resolving. A count against the FREE limit is what an unresolved\n * org produces, and telling a Business customer they are at \"1 of 1 sites\"\n * is how a correct page delivers a false upgrade prompt.\n */\nexport function describeSiteAllowance(options: {\n used: number\n limit: number | undefined\n planLabel: string | undefined\n ready: boolean\n}): string | undefined {\n const { used, limit, planLabel, ready } = options\n if (!ready || !planLabel) return undefined\n /*\n * `Number.isFinite`, not `limit < 0` (AGL-2223).\n *\n * `UNLIMITED` is `Number.POSITIVE_INFINITY`, and Enterprise's `hostLimit`\n * is exactly that — so the `< 0` test was never true for the one plan the\n * Unlimited branch existed for, and an Enterprise organization read\n * `4 of Infinity sites · Enterprise plan`. The negative case is kept: an\n * entitlement override can carry a negative sentinel, and reading that as a\n * cap of \"-1 sites\" would be the same class of nonsense.\n */\n const cap =\n limit === undefined || limit === null\n ? undefined\n : !Number.isFinite(limit) || limit < 0\n ? 'Unlimited'\n : String(limit)\n const sites =\n cap === undefined\n ? `${used} site${used === 1 ? '' : 's'}`\n : `${used} of ${cap} site${cap === '1' ? '' : 's'}`\n return `${sites} · ${planLabel} plan`\n}\n"],"names":["publishedScreenCount","host","Object","keys","screens","length","describeHostStatus","suspendedAt","until","suspendedUntilMs","Date","now","label","color","detail","maintenance","published","describeSiteAllowance","options","used","limit","planLabel","ready","undefined","cap","Number","isFinite","String","sites"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAUD;;;;;;;;;;;;;;;;;;;;CAoBC,GACD,OAAO,SAASA,qBACdC,IAA8D;;IAE9D,OAAOC,OAAOC,IAAI,SAACF,wBAAAA,KAAMG,OAAO,mBAAI,CAAC,GAAGC,MAAM;AAChD;AAEA;;;;;;;;;;;;;;;;CAgBC,GACD,OAAO,SAASC,mBAAmBL,IAKlC;IACC,IAAIA,wBAAAA,KAAMM,WAAW,EAAE;QACrB,sEAAsE;QACtE,+DAA+D;QAC/D,MAAMC,QAAQP,KAAKQ,gBAAgB;QACnC,IAAI,CAACD,SAASA,QAAQE,KAAKC,GAAG,IAAI;YAChC,OAAO;gBACLC,OAAO;gBACPC,OAAO;gBACPC,QAAQ;YACV;QACF;IACF;IACA,IAAIb,wBAAAA,KAAMc,WAAW,EAAE;QACrB,OAAO;YACLH,OAAO;YACPC,OAAO;YACPC,QAAQ;QACV;IACF;IACA,MAAME,YAAYhB,qBAAqBC;IACvC,IAAIe,YAAY,GAAG;QACjB,OAAO;YACLJ,OAAO;YACPC,OAAO;YACPC,QAAQ,GAAGE,UAAU,eAAe,EAAEA,cAAc,IAAI,KAAK,IAAI,CAAC,CAAC;QACrE;IACF;IACA,OAAO;QACLJ,OAAO;QACPC,OAAO;QACPC,QAAQ;IACV;AACF;AAEA;;;;;;;;CAQC,GACD,OAAO,SAASG,sBAAsBC,OAKrC;IACC,MAAM,EAAEC,IAAI,EAAEC,KAAK,EAAEC,SAAS,EAAEC,KAAK,EAAE,GAAGJ;IAC1C,IAAI,CAACI,SAAS,CAACD,WAAW,OAAOE;IACjC;;;;;;;;;GASC,GACD,MAAMC,MACJJ,UAAUG,aAAaH,UAAU,OAC7BG,YACA,CAACE,OAAOC,QAAQ,CAACN,UAAUA,QAAQ,IACjC,cACAO,OAAOP;IACf,MAAMQ,QACJJ,QAAQD,YACJ,GAAGJ,KAAK,KAAK,EAAEA,SAAS,IAAI,KAAK,KAAK,GACtC,GAAGA,KAAK,IAAI,EAAEK,IAAI,KAAK,EAAEA,QAAQ,MAAM,KAAK,KAAK;IACvD,OAAO,GAAGI,MAAM,GAAG,EAAEP,UAAU,KAAK,CAAC;AACvC"}
|
|
@@ -979,7 +979,7 @@ export const LOCKDOWN_REFUSAL_FALLBACK_MESSAGE = 'This is temporarily paused whi
|
|
|
979
979
|
* generic pause rather than a guess; being vague at a stranger is cheap,
|
|
980
980
|
* being wrong about their money is not.
|
|
981
981
|
*/ export function lockdownPausedSurfaceForPluginApiPath(path) {
|
|
982
|
-
if (path === 'commerce/checkout' || path === 'commerce/cart-checkout' || path === 'commerce/pos-order' || path === 'commerce/draft-order') {
|
|
982
|
+
if (path === 'commerce/checkout' || path === 'commerce/cart-checkout' || path === 'commerce/pos-order' || path === 'commerce/pos-payment' || path === 'commerce/draft-order') {
|
|
983
983
|
return 'checkout';
|
|
984
984
|
}
|
|
985
985
|
if (path === 'commerce/cart' || path.startsWith('commerce/cart/')) return 'cart';
|