@aglyn/aglyn 1.0.0-beta.229 → 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.
Files changed (123) hide show
  1. package/package.json +11 -11
  2. package/src/lib/app-utils/analytics-events.d.ts +18 -0
  3. package/src/lib/app-utils/analytics-events.js +2 -0
  4. package/src/lib/app-utils/analytics-events.js.map +1 -1
  5. package/src/lib/app-utils/crm.d.ts +14 -1
  6. package/src/lib/app-utils/crm.js +19 -2
  7. package/src/lib/app-utils/crm.js.map +1 -1
  8. package/src/lib/app-utils/docs-help.generated.d.ts +111 -9
  9. package/src/lib/app-utils/docs-help.generated.js +272 -3
  10. package/src/lib/app-utils/docs-help.generated.js.map +1 -1
  11. package/src/lib/app-utils/docs-index.generated.js +810 -61
  12. package/src/lib/app-utils/docs-index.generated.js.map +1 -1
  13. package/src/lib/app-utils/host-status.d.ts +85 -0
  14. package/src/lib/app-utils/host-status.js +115 -0
  15. package/src/lib/app-utils/host-status.js.map +1 -0
  16. package/src/lib/app-utils/lockdown.js +1 -1
  17. package/src/lib/app-utils/lockdown.js.map +1 -1
  18. package/src/lib/app-utils/media-filter.d.ts +136 -0
  19. package/src/lib/app-utils/media-filter.js +400 -0
  20. package/src/lib/app-utils/media-filter.js.map +1 -0
  21. package/src/lib/app-utils/mobile-push.d.ts +98 -0
  22. package/src/lib/app-utils/mobile-push.js +97 -0
  23. package/src/lib/app-utils/mobile-push.js.map +1 -0
  24. package/src/lib/app-utils/notification-push.d.ts +38 -0
  25. package/src/lib/app-utils/notification-push.js +54 -0
  26. package/src/lib/app-utils/notification-push.js.map +1 -0
  27. package/src/lib/app-utils/notifications.d.ts +7 -0
  28. package/src/lib/app-utils/notifications.js.map +1 -1
  29. package/src/lib/app-utils/organizations.js +5 -2
  30. package/src/lib/app-utils/organizations.js.map +1 -1
  31. package/src/lib/app-utils/plan-entitlements.js +20 -0
  32. package/src/lib/app-utils/plan-entitlements.js.map +1 -1
  33. package/src/lib/app-utils/plugin-host-events.generated.d.ts +1 -1
  34. package/src/lib/app-utils/plugin-host-events.generated.js +164 -0
  35. package/src/lib/app-utils/plugin-host-events.generated.js.map +1 -1
  36. package/src/lib/app-utils/plugin-release-flags.generated.d.ts +1 -1
  37. package/src/lib/app-utils/plugin-release-flags.generated.js +7 -0
  38. package/src/lib/app-utils/plugin-release-flags.generated.js.map +1 -1
  39. package/src/lib/app-utils/realm-host-surface.generated.js +3 -0
  40. package/src/lib/app-utils/realm-host-surface.generated.js.map +1 -1
  41. package/src/lib/app-utils/release-flags.js +6 -2
  42. package/src/lib/app-utils/release-flags.js.map +1 -1
  43. package/src/lib/app-utils/scope-tokens.d.ts +16 -1
  44. package/src/lib/app-utils/scope-tokens.js +15 -1
  45. package/src/lib/app-utils/scope-tokens.js.map +1 -1
  46. package/src/lib/app-utils/site-journey.d.ts +143 -0
  47. package/src/lib/app-utils/site-journey.js +282 -0
  48. package/src/lib/app-utils/site-journey.js.map +1 -0
  49. package/src/lib/app-utils/site-list-query.d.ts +47 -0
  50. package/src/lib/app-utils/site-list-query.js +142 -0
  51. package/src/lib/app-utils/site-list-query.js.map +1 -0
  52. package/src/lib/app-utils/site-wide-outbox.d.ts +95 -0
  53. package/src/lib/app-utils/site-wide-outbox.js +117 -0
  54. package/src/lib/app-utils/site-wide-outbox.js.map +1 -0
  55. package/src/lib/app-utils/transfer-launcher-context.d.ts +6 -0
  56. package/src/lib/app-utils/transfer-launcher-context.js.map +1 -1
  57. package/src/lib/app-utils/upload-inspection.js +7 -0
  58. package/src/lib/app-utils/upload-inspection.js.map +1 -1
  59. package/src/lib/app-utils/webhook-delivery.js +4 -1
  60. package/src/lib/app-utils/webhook-delivery.js.map +1 -1
  61. package/src/lib/foundation/definitions/org-billing.types.d.ts +24 -0
  62. package/src/lib/foundation/definitions/org-billing.types.js.map +1 -1
  63. package/src/lib/foundation/definitions/organization.types.d.ts +18 -7
  64. package/src/lib/foundation/definitions/organization.types.js.map +1 -1
  65. package/src/lib/foundation/definitions/write-deny-coverage.util.d.ts +4 -1
  66. package/src/lib/foundation/definitions/write-deny-coverage.util.js +12 -2
  67. package/src/lib/foundation/definitions/write-deny-coverage.util.js.map +1 -1
  68. package/src/lib/plugin-manager/enabled-plugins.js +4 -2
  69. package/src/lib/plugin-manager/enabled-plugins.js.map +1 -1
  70. package/src/lib/plugin-manager/feature-plugins.d.ts +173 -0
  71. package/src/lib/plugin-manager/feature-plugins.js +62 -1
  72. package/src/lib/plugin-manager/feature-plugins.js.map +1 -1
  73. package/src/lib/plugin-manager/first-party-plugins.generated.js +251 -2
  74. package/src/lib/plugin-manager/first-party-plugins.generated.js.map +1 -1
  75. package/src/lib/plugin-manager/plugin-ai-capabilities.d.ts +192 -0
  76. package/src/lib/plugin-manager/plugin-ai-capabilities.js +157 -0
  77. package/src/lib/plugin-manager/plugin-ai-capabilities.js.map +1 -0
  78. package/src/lib/plugin-manager/plugin-checkout-extras.d.ts +168 -0
  79. package/src/lib/plugin-manager/plugin-checkout-extras.js +172 -0
  80. package/src/lib/plugin-manager/plugin-checkout-extras.js.map +1 -0
  81. package/src/lib/plugin-manager/plugin-contributions.d.ts +7 -0
  82. package/src/lib/plugin-manager/plugin-contributions.js +1 -1
  83. package/src/lib/plugin-manager/plugin-contributions.js.map +1 -1
  84. package/src/lib/plugin-manager/plugin-domain-events.d.ts +138 -0
  85. package/src/lib/plugin-manager/plugin-domain-events.js +148 -0
  86. package/src/lib/plugin-manager/plugin-domain-events.js.map +1 -0
  87. package/src/lib/plugin-manager/plugin-events.d.ts +51 -0
  88. package/src/lib/plugin-manager/plugin-events.js +4 -0
  89. package/src/lib/plugin-manager/plugin-events.js.map +1 -1
  90. package/src/lib/plugin-manager/plugin-fulfillment-providers.d.ts +101 -0
  91. package/src/lib/plugin-manager/plugin-fulfillment-providers.js +83 -0
  92. package/src/lib/plugin-manager/plugin-fulfillment-providers.js.map +1 -0
  93. package/src/lib/plugin-manager/plugin-permissions.js +21 -5
  94. package/src/lib/plugin-manager/plugin-permissions.js.map +1 -1
  95. package/src/lib/plugin-manager/plugin-person-records.d.ts +90 -0
  96. package/src/lib/plugin-manager/plugin-person-records.js +26 -0
  97. package/src/lib/plugin-manager/plugin-person-records.js.map +1 -1
  98. package/src/lib/plugin-manager/plugin-product-catalog.d.ts +204 -0
  99. package/src/lib/plugin-manager/plugin-product-catalog.js +43 -0
  100. package/src/lib/plugin-manager/plugin-product-catalog.js.map +1 -0
  101. package/src/lib/plugin-manager/plugin-shipment-records.d.ts +210 -0
  102. package/src/lib/plugin-manager/plugin-shipment-records.js +63 -0
  103. package/src/lib/plugin-manager/plugin-shipment-records.js.map +1 -0
  104. package/src/lib/plugin-manager/plugin-shipping-rates.d.ts +151 -0
  105. package/src/lib/plugin-manager/plugin-shipping-rates.js +62 -0
  106. package/src/lib/plugin-manager/plugin-shipping-rates.js.map +1 -0
  107. package/src/lib/plugin-manager/plugin-sms-messaging.d.ts +103 -0
  108. package/src/lib/plugin-manager/plugin-sms-messaging.js +39 -0
  109. package/src/lib/plugin-manager/plugin-sms-messaging.js.map +1 -0
  110. package/src/lib/plugin-manager/plugin-stock-levels.d.ts +81 -0
  111. package/src/lib/plugin-manager/plugin-stock-levels.js +32 -0
  112. package/src/lib/plugin-manager/plugin-stock-levels.js.map +1 -0
  113. package/src/lib/plugin-manager/plugin-tax-profile.d.ts +154 -0
  114. package/src/lib/plugin-manager/plugin-tax-profile.js +56 -0
  115. package/src/lib/plugin-manager/plugin-tax-profile.js.map +1 -1
  116. package/src/lib/plugin-manager/plugin-theme-font-catalog.d.ts +59 -0
  117. package/src/lib/plugin-manager/plugin-theme-font-catalog.js +40 -0
  118. package/src/lib/plugin-manager/plugin-theme-font-catalog.js.map +1 -0
  119. package/src/lib/plugin-manager/plugin-tracking-pages.d.ts +55 -0
  120. package/src/lib/plugin-manager/plugin-tracking-pages.js +76 -0
  121. package/src/lib/plugin-manager/plugin-tracking-pages.js.map +1 -0
  122. package/src/lib/plugin-manager/realm-host-aglyn.generated.js +3 -0
  123. 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';