@endora-commerce/contracts 0.100.0
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/LICENSE +21 -0
- package/README.md +34 -0
- package/dist/actor.d.ts +79 -0
- package/dist/actor.d.ts.map +1 -0
- package/dist/actor.js +41 -0
- package/dist/actor.js.map +1 -0
- package/dist/addresses.d.ts +134 -0
- package/dist/addresses.d.ts.map +1 -0
- package/dist/addresses.js +16 -0
- package/dist/addresses.js.map +1 -0
- package/dist/admin-actions.d.ts +367 -0
- package/dist/admin-actions.d.ts.map +1 -0
- package/dist/admin-actions.js +287 -0
- package/dist/admin-actions.js.map +1 -0
- package/dist/admin-contributions.d.ts +518 -0
- package/dist/admin-contributions.d.ts.map +1 -0
- package/dist/admin-contributions.js +495 -0
- package/dist/admin-contributions.js.map +1 -0
- package/dist/admin-i18n.d.ts +135 -0
- package/dist/admin-i18n.d.ts.map +1 -0
- package/dist/admin-i18n.js +72 -0
- package/dist/admin-i18n.js.map +1 -0
- package/dist/admin-notifications.d.ts +55 -0
- package/dist/admin-notifications.d.ts.map +1 -0
- package/dist/admin-notifications.js +16 -0
- package/dist/admin-notifications.js.map +1 -0
- package/dist/admin-roles.d.ts +125 -0
- package/dist/admin-roles.d.ts.map +1 -0
- package/dist/admin-roles.js +2 -0
- package/dist/admin-roles.js.map +1 -0
- package/dist/admin-users.d.ts +178 -0
- package/dist/admin-users.d.ts.map +1 -0
- package/dist/admin-users.js +14 -0
- package/dist/admin-users.js.map +1 -0
- package/dist/admin.d.ts +243 -0
- package/dist/admin.d.ts.map +1 -0
- package/dist/admin.js +246 -0
- package/dist/admin.js.map +1 -0
- package/dist/analytics.d.ts +123 -0
- package/dist/analytics.d.ts.map +1 -0
- package/dist/analytics.js +68 -0
- package/dist/analytics.js.map +1 -0
- package/dist/api-keys.d.ts +97 -0
- package/dist/api-keys.d.ts.map +1 -0
- package/dist/api-keys.js +64 -0
- package/dist/api-keys.js.map +1 -0
- package/dist/assets-library.d.ts +684 -0
- package/dist/assets-library.d.ts.map +1 -0
- package/dist/assets-library.js +181 -0
- package/dist/assets-library.js.map +1 -0
- package/dist/audit-logs.d.ts +141 -0
- package/dist/audit-logs.d.ts.map +1 -0
- package/dist/audit-logs.js +31 -0
- package/dist/audit-logs.js.map +1 -0
- package/dist/auth.d.ts +174 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +27 -0
- package/dist/auth.js.map +1 -0
- package/dist/blog.d.ts +669 -0
- package/dist/blog.d.ts.map +1 -0
- package/dist/blog.js +360 -0
- package/dist/blog.js.map +1 -0
- package/dist/capabilities.d.ts +40 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +38 -0
- package/dist/capabilities.js.map +1 -0
- package/dist/carts.d.ts +1367 -0
- package/dist/carts.d.ts.map +1 -0
- package/dist/carts.js +405 -0
- package/dist/carts.js.map +1 -0
- package/dist/catalog.d.ts +2855 -0
- package/dist/catalog.d.ts.map +1 -0
- package/dist/catalog.js +1543 -0
- package/dist/catalog.js.map +1 -0
- package/dist/cms.d.ts +872 -0
- package/dist/cms.d.ts.map +1 -0
- package/dist/cms.js +468 -0
- package/dist/cms.js.map +1 -0
- package/dist/common.d.ts +82 -0
- package/dist/common.d.ts.map +1 -0
- package/dist/common.js +72 -0
- package/dist/common.js.map +1 -0
- package/dist/comparisons.d.ts +487 -0
- package/dist/comparisons.d.ts.map +1 -0
- package/dist/comparisons.js +221 -0
- package/dist/comparisons.js.map +1 -0
- package/dist/credentials.d.ts +292 -0
- package/dist/credentials.d.ts.map +1 -0
- package/dist/credentials.js +142 -0
- package/dist/credentials.js.map +1 -0
- package/dist/credit-limits.d.ts +111 -0
- package/dist/credit-limits.d.ts.map +1 -0
- package/dist/credit-limits.js +35 -0
- package/dist/credit-limits.js.map +1 -0
- package/dist/currencies.d.ts +127 -0
- package/dist/currencies.d.ts.map +1 -0
- package/dist/currencies.js +20 -0
- package/dist/currencies.js.map +1 -0
- package/dist/custom-fields.d.ts +345 -0
- package/dist/custom-fields.d.ts.map +1 -0
- package/dist/custom-fields.js +185 -0
- package/dist/custom-fields.js.map +1 -0
- package/dist/customer-accounts.d.ts +690 -0
- package/dist/customer-accounts.d.ts.map +1 -0
- package/dist/customer-accounts.js +41 -0
- package/dist/customer-accounts.js.map +1 -0
- package/dist/customers.d.ts +305 -0
- package/dist/customers.d.ts.map +1 -0
- package/dist/customers.js +158 -0
- package/dist/customers.js.map +1 -0
- package/dist/dictionary.d.ts +580 -0
- package/dist/dictionary.d.ts.map +1 -0
- package/dist/dictionary.js +297 -0
- package/dist/dictionary.js.map +1 -0
- package/dist/email-address.d.ts +62 -0
- package/dist/email-address.d.ts.map +1 -0
- package/dist/email-address.js +64 -0
- package/dist/email-address.js.map +1 -0
- package/dist/email.d.ts +175 -0
- package/dist/email.d.ts.map +1 -0
- package/dist/email.js +45 -0
- package/dist/email.js.map +1 -0
- package/dist/envelopes.d.ts +15 -0
- package/dist/envelopes.d.ts.map +1 -0
- package/dist/envelopes.js +16 -0
- package/dist/envelopes.js.map +1 -0
- package/dist/environment-inputs.d.ts +306 -0
- package/dist/environment-inputs.d.ts.map +1 -0
- package/dist/environment-inputs.js +277 -0
- package/dist/environment-inputs.js.map +1 -0
- package/dist/erp-connector.d.ts +52 -0
- package/dist/erp-connector.d.ts.map +1 -0
- package/dist/erp-connector.js +34 -0
- package/dist/erp-connector.js.map +1 -0
- package/dist/errors.d.ts +455 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +532 -0
- package/dist/errors.js.map +1 -0
- package/dist/google-analytics.d.ts +181 -0
- package/dist/google-analytics.d.ts.map +1 -0
- package/dist/google-analytics.js +176 -0
- package/dist/google-analytics.js.map +1 -0
- package/dist/google-tag-manager.d.ts +111 -0
- package/dist/google-tag-manager.d.ts.map +1 -0
- package/dist/google-tag-manager.js +129 -0
- package/dist/google-tag-manager.js.map +1 -0
- package/dist/i18n.d.ts +69 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +59 -0
- package/dist/i18n.js.map +1 -0
- package/dist/import-export.d.ts +63 -0
- package/dist/import-export.d.ts.map +1 -0
- package/dist/import-export.js +37 -0
- package/dist/import-export.js.map +1 -0
- package/dist/index.d.ts +82 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +126 -0
- package/dist/index.js.map +1 -0
- package/dist/inventory.d.ts +673 -0
- package/dist/inventory.d.ts.map +1 -0
- package/dist/inventory.js +412 -0
- package/dist/inventory.js.map +1 -0
- package/dist/invoice-ledger.d.ts +366 -0
- package/dist/invoice-ledger.d.ts.map +1 -0
- package/dist/invoice-ledger.js +114 -0
- package/dist/invoice-ledger.js.map +1 -0
- package/dist/invoices.d.ts +845 -0
- package/dist/invoices.d.ts.map +1 -0
- package/dist/invoices.js +314 -0
- package/dist/invoices.js.map +1 -0
- package/dist/kernel.d.ts +49 -0
- package/dist/kernel.d.ts.map +1 -0
- package/dist/kernel.js +19 -0
- package/dist/kernel.js.map +1 -0
- package/dist/languages.d.ts +122 -0
- package/dist/languages.d.ts.map +1 -0
- package/dist/languages.js +24 -0
- package/dist/languages.js.map +1 -0
- package/dist/linkedin-ads.d.ts +167 -0
- package/dist/linkedin-ads.d.ts.map +1 -0
- package/dist/linkedin-ads.js +156 -0
- package/dist/linkedin-ads.js.map +1 -0
- package/dist/megamenu.d.ts +556 -0
- package/dist/megamenu.d.ts.map +1 -0
- package/dist/megamenu.js +186 -0
- package/dist/megamenu.js.map +1 -0
- package/dist/meta-ads.d.ts +126 -0
- package/dist/meta-ads.d.ts.map +1 -0
- package/dist/meta-ads.js +112 -0
- package/dist/meta-ads.js.map +1 -0
- package/dist/mfa.d.ts +274 -0
- package/dist/mfa.d.ts.map +1 -0
- package/dist/mfa.js +187 -0
- package/dist/mfa.js.map +1 -0
- package/dist/modules.d.ts +1706 -0
- package/dist/modules.d.ts.map +1 -0
- package/dist/modules.js +1390 -0
- package/dist/modules.js.map +1 -0
- package/dist/newsletter.d.ts +611 -0
- package/dist/newsletter.d.ts.map +1 -0
- package/dist/newsletter.js +345 -0
- package/dist/newsletter.js.map +1 -0
- package/dist/orders.d.ts +1175 -0
- package/dist/orders.d.ts.map +1 -0
- package/dist/orders.js +630 -0
- package/dist/orders.js.map +1 -0
- package/dist/organizations.d.ts +938 -0
- package/dist/organizations.d.ts.map +1 -0
- package/dist/organizations.js +418 -0
- package/dist/organizations.js.map +1 -0
- package/dist/pagination.d.ts +21 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +22 -0
- package/dist/pagination.js.map +1 -0
- package/dist/payment-methods.d.ts +472 -0
- package/dist/payment-methods.d.ts.map +1 -0
- package/dist/payment-methods.js +175 -0
- package/dist/payment-methods.js.map +1 -0
- package/dist/payment-return-url.d.ts +53 -0
- package/dist/payment-return-url.d.ts.map +1 -0
- package/dist/payment-return-url.js +35 -0
- package/dist/payment-return-url.js.map +1 -0
- package/dist/payments.d.ts +386 -0
- package/dist/payments.d.ts.map +1 -0
- package/dist/payments.js +84 -0
- package/dist/payments.js.map +1 -0
- package/dist/pim-connector.d.ts +60 -0
- package/dist/pim-connector.d.ts.map +1 -0
- package/dist/pim-connector.js +43 -0
- package/dist/pim-connector.js.map +1 -0
- package/dist/pim-field-path.d.ts +6 -0
- package/dist/pim-field-path.d.ts.map +1 -0
- package/dist/pim-field-path.js +101 -0
- package/dist/pim-field-path.js.map +1 -0
- package/dist/platform-language.d.ts +20 -0
- package/dist/platform-language.d.ts.map +1 -0
- package/dist/platform-language.js +22 -0
- package/dist/platform-language.js.map +1 -0
- package/dist/price-lists.d.ts +685 -0
- package/dist/price-lists.d.ts.map +1 -0
- package/dist/price-lists.js +330 -0
- package/dist/price-lists.js.map +1 -0
- package/dist/product-feeds.d.ts +2837 -0
- package/dist/product-feeds.d.ts.map +1 -0
- package/dist/product-feeds.js +1504 -0
- package/dist/product-feeds.js.map +1 -0
- package/dist/product-scope-overrides.d.ts +134 -0
- package/dist/product-scope-overrides.d.ts.map +1 -0
- package/dist/product-scope-overrides.js +82 -0
- package/dist/product-scope-overrides.js.map +1 -0
- package/dist/product-value-resolver.d.ts +88 -0
- package/dist/product-value-resolver.d.ts.map +1 -0
- package/dist/product-value-resolver.js +128 -0
- package/dist/product-value-resolver.js.map +1 -0
- package/dist/promotions.d.ts +678 -0
- package/dist/promotions.d.ts.map +1 -0
- package/dist/promotions.js +479 -0
- package/dist/promotions.js.map +1 -0
- package/dist/prompt-actions.d.ts +582 -0
- package/dist/prompt-actions.d.ts.map +1 -0
- package/dist/prompt-actions.js +221 -0
- package/dist/prompt-actions.js.map +1 -0
- package/dist/pwa.d.ts +293 -0
- package/dist/pwa.d.ts.map +1 -0
- package/dist/pwa.js +204 -0
- package/dist/pwa.js.map +1 -0
- package/dist/quick-order.d.ts +340 -0
- package/dist/quick-order.d.ts.map +1 -0
- package/dist/quick-order.js +177 -0
- package/dist/quick-order.js.map +1 -0
- package/dist/quote-requests.d.ts +538 -0
- package/dist/quote-requests.d.ts.map +1 -0
- package/dist/quote-requests.js +308 -0
- package/dist/quote-requests.js.map +1 -0
- package/dist/returns.d.ts +774 -0
- package/dist/returns.d.ts.map +1 -0
- package/dist/returns.js +389 -0
- package/dist/returns.js.map +1 -0
- package/dist/sales-channels.d.ts +392 -0
- package/dist/sales-channels.d.ts.map +1 -0
- package/dist/sales-channels.js +285 -0
- package/dist/sales-channels.js.map +1 -0
- package/dist/scope-notice.d.ts +60 -0
- package/dist/scope-notice.d.ts.map +1 -0
- package/dist/scope-notice.js +56 -0
- package/dist/scope-notice.js.map +1 -0
- package/dist/search.d.ts +321 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +160 -0
- package/dist/search.js.map +1 -0
- package/dist/seo.d.ts +113 -0
- package/dist/seo.d.ts.map +1 -0
- package/dist/seo.js +63 -0
- package/dist/seo.js.map +1 -0
- package/dist/settings.d.ts +453 -0
- package/dist/settings.d.ts.map +1 -0
- package/dist/settings.js +337 -0
- package/dist/settings.js.map +1 -0
- package/dist/shipments.d.ts +140 -0
- package/dist/shipments.d.ts.map +1 -0
- package/dist/shipments.js +14 -0
- package/dist/shipments.js.map +1 -0
- package/dist/shipping-methods.d.ts +350 -0
- package/dist/shipping-methods.d.ts.map +1 -0
- package/dist/shipping-methods.js +99 -0
- package/dist/shipping-methods.js.map +1 -0
- package/dist/shopping-lists.d.ts +122 -0
- package/dist/shopping-lists.d.ts.map +1 -0
- package/dist/shopping-lists.js +92 -0
- package/dist/shopping-lists.js.map +1 -0
- package/dist/taxes.d.ts +106 -0
- package/dist/taxes.d.ts.map +1 -0
- package/dist/taxes.js +80 -0
- package/dist/taxes.js.map +1 -0
- package/dist/text-normalization.d.ts +199 -0
- package/dist/text-normalization.d.ts.map +1 -0
- package/dist/text-normalization.js +205 -0
- package/dist/text-normalization.js.map +1 -0
- package/dist/transactional-emails.d.ts +459 -0
- package/dist/transactional-emails.d.ts.map +1 -0
- package/dist/transactional-emails.js +212 -0
- package/dist/transactional-emails.js.map +1 -0
- package/dist/webhooks.d.ts +69 -0
- package/dist/webhooks.d.ts.map +1 -0
- package/dist/webhooks.js +53 -0
- package/dist/webhooks.js.map +1 -0
- package/package.json +46 -0
|
@@ -0,0 +1,518 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a module package's `./admin` layer declares (feature 091, Principle II).
|
|
3
|
+
*
|
|
4
|
+
* These are **declarations, not components**, and the distinction is the whole
|
|
5
|
+
* design. Three consumers need a contribution to be enumerable without being
|
|
6
|
+
* executed: the registry generator, which writes an artefact naming every
|
|
7
|
+
* contribution and must not import a React tree to do it; the bundler, which
|
|
8
|
+
* has to see a `() => import('…')` factory as a split point and cannot follow a
|
|
9
|
+
* computed specifier; and the gating predicate, which decides visibility from
|
|
10
|
+
* `{ module, requiredPermission }` before anything renders. So a contribution
|
|
11
|
+
* is a plain object whose only function-valued field is a dynamic-import
|
|
12
|
+
* factory — the shape a `manifest.ts`'s `actions` array already has one layer
|
|
13
|
+
* up, and the reason the ⌘K palette is the one admin extension mechanism that
|
|
14
|
+
* needs no host edit today.
|
|
15
|
+
*
|
|
16
|
+
* They live here rather than in a types-only package because they cross a
|
|
17
|
+
* package boundary and Principle II puts a shape that does in
|
|
18
|
+
* `packages/contracts/`, beside `ModuleManifest` and `ModuleActionSchema`.
|
|
19
|
+
*
|
|
20
|
+
* **The component factory is a TypeScript type and not a Zod schema, and the
|
|
21
|
+
* split is deliberate.** Everything a generator, a check or a server can
|
|
22
|
+
* validate is a schema below; the factory is `unknown` to Zod because a
|
|
23
|
+
* function value carries nothing to validate beyond its arity, and pretending
|
|
24
|
+
* otherwise would put a `z.function()` in a package `admin` and `storefront`
|
|
25
|
+
* both compile while telling a reader it was checked. The data half is
|
|
26
|
+
* `AdminRouteDeclarationSchema`; the whole declaration, factory included, is
|
|
27
|
+
* the `AdminRouteDeclaration` interface.
|
|
28
|
+
*/
|
|
29
|
+
import { z } from 'zod';
|
|
30
|
+
import type { InvoiceKind } from './invoices.js';
|
|
31
|
+
import type { ShipmentStatus } from './shipping-methods.js';
|
|
32
|
+
/**
|
|
33
|
+
* A permission code, or a set of codes any one of which suffices.
|
|
34
|
+
*
|
|
35
|
+
* The array form exists because the routes have it: `requireAdminAny([…])` is
|
|
36
|
+
* satisfied by either member, and naming only the first in the UI hides the
|
|
37
|
+
* screen from a role that holds the second. It is the shape
|
|
38
|
+
* `admin/src/lib/surface-visibility.ts` already defines, published here so a
|
|
39
|
+
* module package declares it without reaching into the admin for the type.
|
|
40
|
+
*/
|
|
41
|
+
export declare const PermissionRequirementSchema: z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>;
|
|
42
|
+
export type PermissionRequirement = z.infer<typeof PermissionRequirementSchema>;
|
|
43
|
+
/**
|
|
44
|
+
* The sidebar sections a module may join — closed, and derived from the ones
|
|
45
|
+
* `admin/src/components/AppShell.tsx` already declares.
|
|
46
|
+
*
|
|
47
|
+
* A module may not invent a section, for D-23's reason: an invented section is
|
|
48
|
+
* a heading nobody else can join, so two modules that belong together end up in
|
|
49
|
+
* two headings of one each and the operator reads it as two features.
|
|
50
|
+
*/
|
|
51
|
+
export declare const AdminNavSectionNameSchema: z.ZodEnum<{
|
|
52
|
+
system: "system";
|
|
53
|
+
catalog: "catalog";
|
|
54
|
+
customers: "customers";
|
|
55
|
+
content: "content";
|
|
56
|
+
newsletter: "newsletter";
|
|
57
|
+
main: "main";
|
|
58
|
+
sales: "sales";
|
|
59
|
+
inventory: "inventory";
|
|
60
|
+
pricing: "pricing";
|
|
61
|
+
channels: "channels";
|
|
62
|
+
messaging: "messaging";
|
|
63
|
+
analyticsAds: "analyticsAds";
|
|
64
|
+
}>;
|
|
65
|
+
export type AdminNavSectionName = z.infer<typeof AdminNavSectionNameSchema>;
|
|
66
|
+
/**
|
|
67
|
+
* The places in a screen one module owns where another module's contribution
|
|
68
|
+
* may appear — closed, hierarchical, dot-separated, and the platform's.
|
|
69
|
+
*
|
|
70
|
+
* **A member exists when a host renders it, and not before.** The four members
|
|
71
|
+
* this enum opened with were derived from the places module additions had
|
|
72
|
+
* reached into by editing another module's file, which was the right derivation
|
|
73
|
+
* and produced a set nothing rendered and nothing contributed to — four names
|
|
74
|
+
* that had been silent since the enum landed. `check:admin-zones` reports every
|
|
75
|
+
* one of those as `unrendered-zone`, and it carries **no ledger**, deliberately:
|
|
76
|
+
* the remedy is always available in the same merge request, and it is either to
|
|
77
|
+
* render the place or to remove the name. So the set grows with the batch that
|
|
78
|
+
* mounts it, one member per place a host screen actually renders.
|
|
79
|
+
*
|
|
80
|
+
* `payment_method.row.actions` is the member that shows why. Measured, nothing
|
|
81
|
+
* under the payment-methods admin surface names a gateway id at all — the five
|
|
82
|
+
* gateways were given their own routes and settings screens — so there was
|
|
83
|
+
* nothing waiting to contribute and inventing a host for it would have been
|
|
84
|
+
* inventing a host.
|
|
85
|
+
*
|
|
86
|
+
* **Closed and unparameterised, and that is load-bearing.** A parameter in the
|
|
87
|
+
* name (`product.editor.field:<fieldPath>`, or a `z.templateLiteral`) was
|
|
88
|
+
* rejected: the refusal below compares declared names to rendered ones, and a
|
|
89
|
+
* name computed from a field path compares to nothing. The parameter is a prop
|
|
90
|
+
* — see {@link AdminZonePropsMap} — and one member may be mounted many times on
|
|
91
|
+
* one screen, each mount carrying its own.
|
|
92
|
+
*
|
|
93
|
+
* Both directions refuse: a contribution to a zone nobody declares is a build
|
|
94
|
+
* refusal, and a zone the platform declares that no host screen renders is one
|
|
95
|
+
* too. A contribution that silently renders nowhere is worse than one that
|
|
96
|
+
* fails.
|
|
97
|
+
*/
|
|
98
|
+
export declare const AdminZoneNameSchema: z.ZodEnum<{
|
|
99
|
+
"product.editor.details.before": "product.editor.details.before";
|
|
100
|
+
"product.editor.pricing.before": "product.editor.pricing.before";
|
|
101
|
+
"product.editor.field.after": "product.editor.field.after";
|
|
102
|
+
"delivery_method.list.integrations": "delivery_method.list.integrations";
|
|
103
|
+
"payment_method.list.integrations": "payment_method.list.integrations";
|
|
104
|
+
"invoice.detail.after": "invoice.detail.after";
|
|
105
|
+
"category.editor.after": "category.editor.after";
|
|
106
|
+
"product.editor.pricing.after": "product.editor.pricing.after";
|
|
107
|
+
"product.editor.channels": "product.editor.channels";
|
|
108
|
+
"sales_channel.editor.after": "sales_channel.editor.after";
|
|
109
|
+
"organization.detail.after": "organization.detail.after";
|
|
110
|
+
"customer.detail.after": "customer.detail.after";
|
|
111
|
+
"order.detail.payment": "order.detail.payment";
|
|
112
|
+
"order.shipment.row.actions": "order.shipment.row.actions";
|
|
113
|
+
"order.shipments.tab.actions": "order.shipments.tab.actions";
|
|
114
|
+
"order.entry.tabs": "order.entry.tabs";
|
|
115
|
+
"ledger.section.tabs": "ledger.section.tabs";
|
|
116
|
+
}>;
|
|
117
|
+
export type AdminZoneName = z.infer<typeof AdminZoneNameSchema>;
|
|
118
|
+
/** A zone mounted once per product editor. */
|
|
119
|
+
export interface ProductEditorZoneProps {
|
|
120
|
+
readonly productId: string;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* A zone mounted once on the delivery-methods list, carrying nothing.
|
|
124
|
+
*
|
|
125
|
+
* Empty **by measurement, not by omission**: the host renders one card per
|
|
126
|
+
* shipping integration and has no identifier to name one by — a contributor is
|
|
127
|
+
* the integration. Declared as a named interface rather than as `object`
|
|
128
|
+
* inline so the map's entry reads like every other one and so a prop this zone
|
|
129
|
+
* later needs has one place to arrive.
|
|
130
|
+
*/
|
|
131
|
+
export interface DeliveryMethodIntegrationsZoneProps {
|
|
132
|
+
}
|
|
133
|
+
/** The payment-method integrations mount carries no host-owned data. */
|
|
134
|
+
export interface PaymentMethodIntegrationsZoneProps {
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* A zone mounted once at the end of the invoice detail's totals column.
|
|
138
|
+
*
|
|
139
|
+
* Three props and not just the id, read off the one contribution's declared
|
|
140
|
+
* signature rather than from the rule of thumb that a detail member carries
|
|
141
|
+
* its entity's id: `kind` decides whether a KSeF panel applies at all (a
|
|
142
|
+
* proforma is never filed) and `ksefReferenceNumber` is the invoice's own
|
|
143
|
+
* stored reference, which the contributor shows until its first submission
|
|
144
|
+
* carries one. Both are already loaded by the host — the mount costs no
|
|
145
|
+
* request — and neither is `ksef`'s to fetch.
|
|
146
|
+
*/
|
|
147
|
+
export interface InvoiceDetailZoneProps {
|
|
148
|
+
readonly invoiceId: string;
|
|
149
|
+
/** `proforma` | `invoice` | `correction` — {@link InvoiceKind}. */
|
|
150
|
+
readonly kind: InvoiceKind;
|
|
151
|
+
readonly ksefReferenceNumber: string | null;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* A zone mounted once at the end of the category editor's form.
|
|
155
|
+
*
|
|
156
|
+
* The entity's own id and nothing else, which is what the one contribution
|
|
157
|
+
* reads: `DisplayModeOverrideRow` takes a scope and a target id, and the scope
|
|
158
|
+
* is the contributor's constant — `catalog`'s editor is always editing a
|
|
159
|
+
* category.
|
|
160
|
+
*/
|
|
161
|
+
export interface CategoryEditorZoneProps {
|
|
162
|
+
readonly categoryId: string;
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* A zone mounted once below the sales-channel editor's identity form.
|
|
166
|
+
*
|
|
167
|
+
* The channel's **id**, not its code: every route the one contribution calls is
|
|
168
|
+
* `/api/v1/admin/sales-channels/:channelId/warehouses`, and `channelId` there
|
|
169
|
+
* is the id. The host has both loaded, so the mount costs no request.
|
|
170
|
+
*/
|
|
171
|
+
export interface SalesChannelEditorZoneProps {
|
|
172
|
+
readonly channelId: string;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* A zone mounted once at the end of an organization's detail screen.
|
|
176
|
+
*
|
|
177
|
+
* The organization's own id and nothing else, which is the union of what the
|
|
178
|
+
* four contributions read: three of them take an entity id and their own
|
|
179
|
+
* constant scope, and the fourth — `carts`' approval policy — reads its own
|
|
180
|
+
* initial state from a route of its own rather than taking the boolean the
|
|
181
|
+
* host used to pass (§10.5). A prop only one contributor wants is a prop the
|
|
182
|
+
* other three would have to be given a reason for (Z3).
|
|
183
|
+
*/
|
|
184
|
+
export interface OrganizationDetailZoneProps {
|
|
185
|
+
readonly organizationId: string;
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* A zone mounted once at the end of a customer's detail screen.
|
|
189
|
+
*
|
|
190
|
+
* The customer's own id, on the same terms as its organization twin. Not
|
|
191
|
+
* aliased to {@link OrganizationDetailZoneProps} and not merged with it: the
|
|
192
|
+
* prop is named for the entity the mount carries, and the two members are two
|
|
193
|
+
* places (Z13).
|
|
194
|
+
*/
|
|
195
|
+
export interface CustomerDetailZoneProps {
|
|
196
|
+
readonly customerId: string;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* A zone mounted once as the body of the order detail's Payment tab.
|
|
200
|
+
*
|
|
201
|
+
* The order's own id and nothing else, which is what the one contribution
|
|
202
|
+
* reads: the panel fetches the order's payments and its invoices from two
|
|
203
|
+
* routes that take an order id, and it owns both requests.
|
|
204
|
+
*/
|
|
205
|
+
export interface OrderDetailZoneProps {
|
|
206
|
+
readonly orderId: string;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* A zone mounted once per shipment attempt on the order detail's Delivery tab.
|
|
210
|
+
*
|
|
211
|
+
* Five props, and the last two are here **because a contribution matches on
|
|
212
|
+
* them**. `match` compares by string value against the mount's props and a key
|
|
213
|
+
* the props do not carry never agrees, so a `providerCode` or a `status` left
|
|
214
|
+
* out of this interface would hide its contribution rather than widen it — the
|
|
215
|
+
* one way this conversion can regress in silence, and a `tsc` error at the
|
|
216
|
+
* mount rather than at the declaration.
|
|
217
|
+
*
|
|
218
|
+
* `providerCode` is nullable because an attempt the carrier never answered has
|
|
219
|
+
* no provider envelope, and a `null` there is the fail-closed direction: no
|
|
220
|
+
* carrier's contribution agrees with it.
|
|
221
|
+
*/
|
|
222
|
+
export interface OrderShipmentRowZoneProps {
|
|
223
|
+
readonly orderId: string;
|
|
224
|
+
readonly shipmentId: string;
|
|
225
|
+
/** The order's delivery-method code, e.g. `dhl_parcel_courier`. */
|
|
226
|
+
readonly deliveryMethodCode: string;
|
|
227
|
+
/**
|
|
228
|
+
* Which carrier opened *this attempt*, from the adapter's own envelope —
|
|
229
|
+
* `inpost`, `dhl_parcel`, or `null` when nothing was recorded.
|
|
230
|
+
*
|
|
231
|
+
* A provider code and not a module id: they coincide for both carriers today
|
|
232
|
+
* and the string is data the adapter deposited, which is why
|
|
233
|
+
* `check:admin-zones` reads it as neither.
|
|
234
|
+
*/
|
|
235
|
+
readonly providerCode: string | null;
|
|
236
|
+
/** {@link ShipmentStatus} — the attempt's own state, matched on. */
|
|
237
|
+
readonly status: ShipmentStatus;
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* A zone mounted once in the footer action bar of the order detail's Delivery
|
|
241
|
+
* tab.
|
|
242
|
+
*
|
|
243
|
+
* The **latest** attempt and not the list: every action a carrier offers here
|
|
244
|
+
* acts on the most recent attempt, which is the only one an operator can still
|
|
245
|
+
* do anything about, and the host already computes it. Both latest fields are
|
|
246
|
+
* nullable for an order with no attempt yet — a contributor that needs one
|
|
247
|
+
* renders nothing, which it decides for itself rather than through `match`,
|
|
248
|
+
* because `match` compares strings and has no negation.
|
|
249
|
+
*/
|
|
250
|
+
export interface OrderShipmentsActionsZoneProps {
|
|
251
|
+
readonly orderId: string;
|
|
252
|
+
/** The order's delivery-method code, which is what `dhl_parcel` matches on. */
|
|
253
|
+
readonly deliveryMethodCode: string;
|
|
254
|
+
readonly latestShipmentId: string | null;
|
|
255
|
+
/** {@link ShipmentStatus} of the latest attempt, or `null` when there is none. */
|
|
256
|
+
readonly latestStatus: ShipmentStatus | null;
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* A zone mounted on the order-entry tab strip, carrying nothing.
|
|
260
|
+
*
|
|
261
|
+
* Empty **by measurement, not by omission**, on
|
|
262
|
+
* {@link DeliveryMethodIntegrationsZoneProps}' terms: the contributions *are*
|
|
263
|
+
* the tabs, and the host has no identifier to name one by — it is a switch
|
|
264
|
+
* between two entry modes, not a view of an entity. Declared as a named
|
|
265
|
+
* interface rather than inline so the map's entry reads like every other one.
|
|
266
|
+
*/
|
|
267
|
+
export interface OrderEntryTabsZoneProps {
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* A zone mounted on the invoice-ledger section strip, carrying nothing.
|
|
271
|
+
*
|
|
272
|
+
* Empty on {@link OrderEntryTabsZoneProps}' terms: the contributions are the
|
|
273
|
+
* tabs, and the host has no entity id to pass.
|
|
274
|
+
*/
|
|
275
|
+
export interface LedgerSectionTabsZoneProps {
|
|
276
|
+
}
|
|
277
|
+
/** A zone mounted beside one field of the product editor. */
|
|
278
|
+
export interface ProductEditorFieldZoneProps {
|
|
279
|
+
readonly productId: string;
|
|
280
|
+
/**
|
|
281
|
+
* `name`, `description`, `categories`, `gallery`, `attachments`, or
|
|
282
|
+
* `attributeValues.<key>`.
|
|
283
|
+
*/
|
|
284
|
+
readonly fieldPath: string;
|
|
285
|
+
/**
|
|
286
|
+
* The locales this field is edited in, or `null` for a field that is not
|
|
287
|
+
* language-scoped.
|
|
288
|
+
*
|
|
289
|
+
* The host passes the set; a contributor that wants one control per locale
|
|
290
|
+
* fans out over it. That is what collapses the two `LOCALES.map(...)` loops
|
|
291
|
+
* the product editor used to write around a foreign module's component into
|
|
292
|
+
* one mount, and it is why the parameter is a prop rather than a parameter in
|
|
293
|
+
* the zone name — see the rejection recorded on
|
|
294
|
+
* {@link AdminZoneNameSchema}'s contract.
|
|
295
|
+
*/
|
|
296
|
+
readonly languageCodes: readonly string[] | null;
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* The props each zone carries, and the contract both ends are checked against.
|
|
300
|
+
*
|
|
301
|
+
* Declared as a `Record<AdminZoneName, object>`, so a member added to
|
|
302
|
+
* {@link AdminZoneNameSchema} without a props type is a compile error in this
|
|
303
|
+
* package — the half of the two-way refusal that needs no check.
|
|
304
|
+
*
|
|
305
|
+
* **`tsc` at both ends, and nothing at runtime.** The host writes
|
|
306
|
+
* `<AdminZone name="product.editor.field.after" props={{ ... }} />`, generic on
|
|
307
|
+
* the literal name; the contributor writes `zoneComponent('...', () => import(...))`,
|
|
308
|
+
* whose type constrains its module's default export to
|
|
309
|
+
* `ComponentType<AdminZoneProps<...>>`. The registry in the middle stays
|
|
310
|
+
* `unknown` deliberately: both ends are checked against this one map, so the
|
|
311
|
+
* map is the contract and the registry is a courier. A Zod schema parsed by the
|
|
312
|
+
* renderer was rejected — the props flow host to contributor, so a wrong prop
|
|
313
|
+
* is the first-party host's defect and `tsc` has already refused it, while the
|
|
314
|
+
* failure a parse cannot catch (a contributor assuming a prop the zone does not
|
|
315
|
+
* carry) is on the other side of the parse.
|
|
316
|
+
*/
|
|
317
|
+
export interface AdminZonePropsMap extends Record<AdminZoneName, object> {
|
|
318
|
+
'product.editor.details.before': ProductEditorZoneProps;
|
|
319
|
+
'product.editor.pricing.before': ProductEditorZoneProps;
|
|
320
|
+
'product.editor.field.after': ProductEditorFieldZoneProps;
|
|
321
|
+
'delivery_method.list.integrations': DeliveryMethodIntegrationsZoneProps;
|
|
322
|
+
'payment_method.list.integrations': PaymentMethodIntegrationsZoneProps;
|
|
323
|
+
'invoice.detail.after': InvoiceDetailZoneProps;
|
|
324
|
+
'category.editor.after': CategoryEditorZoneProps;
|
|
325
|
+
'product.editor.pricing.after': ProductEditorZoneProps;
|
|
326
|
+
'product.editor.channels': ProductEditorZoneProps;
|
|
327
|
+
'sales_channel.editor.after': SalesChannelEditorZoneProps;
|
|
328
|
+
'organization.detail.after': OrganizationDetailZoneProps;
|
|
329
|
+
'customer.detail.after': CustomerDetailZoneProps;
|
|
330
|
+
'order.detail.payment': OrderDetailZoneProps;
|
|
331
|
+
'order.shipment.row.actions': OrderShipmentRowZoneProps;
|
|
332
|
+
'order.shipments.tab.actions': OrderShipmentsActionsZoneProps;
|
|
333
|
+
'order.entry.tabs': OrderEntryTabsZoneProps;
|
|
334
|
+
'ledger.section.tabs': LedgerSectionTabsZoneProps;
|
|
335
|
+
}
|
|
336
|
+
/** The props of one zone, by name. */
|
|
337
|
+
export type AdminZoneProps<Z extends AdminZoneName> = AdminZonePropsMap[Z];
|
|
338
|
+
/**
|
|
339
|
+
* The data half of a route declaration — everything a generator or a check can
|
|
340
|
+
* read without evaluating the module's UI code.
|
|
341
|
+
*
|
|
342
|
+
* **Owner attribution is not a field.** The module id is the registry entry's
|
|
343
|
+
* key, so a declaration cannot claim to belong to a module other than the one
|
|
344
|
+
* that shipped it — the same reason a packaged migration is attributed to
|
|
345
|
+
* `endora.id` and never to a path segment (D-142). An attribution a module can
|
|
346
|
+
* write is an attribution a module can get wrong.
|
|
347
|
+
*/
|
|
348
|
+
export declare const AdminRouteDeclarationSchema: z.ZodObject<{
|
|
349
|
+
path: z.ZodString;
|
|
350
|
+
requiredPermission: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
351
|
+
index: z.ZodOptional<z.ZodBoolean>;
|
|
352
|
+
}, z.core.$strip>;
|
|
353
|
+
/**
|
|
354
|
+
* The data half of a sidebar entry.
|
|
355
|
+
*
|
|
356
|
+
* Deliberately the same five fields `NAV` already carries in
|
|
357
|
+
* `admin/src/components/AppShell.tsx`, so the sidebar renders
|
|
358
|
+
* `[...hostNav, ...registryNav]` through the one existing predicate with no
|
|
359
|
+
* second gate. Issue #230's finding — three surfaces answering the visibility
|
|
360
|
+
* question three ways — does not get a fourth chance.
|
|
361
|
+
*/
|
|
362
|
+
export declare const AdminNavDeclarationSchema: z.ZodObject<{
|
|
363
|
+
to: z.ZodString;
|
|
364
|
+
labelKey: z.ZodString;
|
|
365
|
+
icon: z.ZodEnum<{
|
|
366
|
+
Plus: "Plus";
|
|
367
|
+
Sparkles: "Sparkles";
|
|
368
|
+
Settings: "Settings";
|
|
369
|
+
Search: "Search";
|
|
370
|
+
Boxes: "Boxes";
|
|
371
|
+
Layers: "Layers";
|
|
372
|
+
Menu: "Menu";
|
|
373
|
+
PlusCircle: "PlusCircle";
|
|
374
|
+
PlusSquare: "PlusSquare";
|
|
375
|
+
FilePlus: "FilePlus";
|
|
376
|
+
FolderPlus: "FolderPlus";
|
|
377
|
+
Upload: "Upload";
|
|
378
|
+
FileUp: "FileUp";
|
|
379
|
+
CloudUpload: "CloudUpload";
|
|
380
|
+
Download: "Download";
|
|
381
|
+
FileDown: "FileDown";
|
|
382
|
+
FileText: "FileText";
|
|
383
|
+
BookOpen: "BookOpen";
|
|
384
|
+
Rss: "Rss";
|
|
385
|
+
Package: "Package";
|
|
386
|
+
Tag: "Tag";
|
|
387
|
+
ShoppingCart: "ShoppingCart";
|
|
388
|
+
Receipt: "Receipt";
|
|
389
|
+
CreditCard: "CreditCard";
|
|
390
|
+
Users: "Users";
|
|
391
|
+
UserPlus: "UserPlus";
|
|
392
|
+
Inbox: "Inbox";
|
|
393
|
+
ListChecks: "ListChecks";
|
|
394
|
+
ClipboardList: "ClipboardList";
|
|
395
|
+
Image: "Image";
|
|
396
|
+
Video: "Video";
|
|
397
|
+
LayoutDashboard: "LayoutDashboard";
|
|
398
|
+
PanelLeft: "PanelLeft";
|
|
399
|
+
KeyRound: "KeyRound";
|
|
400
|
+
ShieldCheck: "ShieldCheck";
|
|
401
|
+
Edit: "Edit";
|
|
402
|
+
Archive: "Archive";
|
|
403
|
+
Box: "Box";
|
|
404
|
+
Truck: "Truck";
|
|
405
|
+
CircleDollarSign: "CircleDollarSign";
|
|
406
|
+
Activity: "Activity";
|
|
407
|
+
LineChart: "LineChart";
|
|
408
|
+
Smartphone: "Smartphone";
|
|
409
|
+
Webhook: "Webhook";
|
|
410
|
+
Scale: "Scale";
|
|
411
|
+
PlugZap: "PlugZap";
|
|
412
|
+
PercentDiamond: "PercentDiamond";
|
|
413
|
+
Newspaper: "Newspaper";
|
|
414
|
+
Languages: "Languages";
|
|
415
|
+
Eraser: "Eraser";
|
|
416
|
+
Warehouse: "Warehouse";
|
|
417
|
+
TrendingDown: "TrendingDown";
|
|
418
|
+
Bell: "Bell";
|
|
419
|
+
PackageOpen: "PackageOpen";
|
|
420
|
+
Building2: "Building2";
|
|
421
|
+
Store: "Store";
|
|
422
|
+
ClipboardCheck: "ClipboardCheck";
|
|
423
|
+
}>;
|
|
424
|
+
section: z.ZodEnum<{
|
|
425
|
+
system: "system";
|
|
426
|
+
catalog: "catalog";
|
|
427
|
+
customers: "customers";
|
|
428
|
+
content: "content";
|
|
429
|
+
newsletter: "newsletter";
|
|
430
|
+
main: "main";
|
|
431
|
+
sales: "sales";
|
|
432
|
+
inventory: "inventory";
|
|
433
|
+
pricing: "pricing";
|
|
434
|
+
channels: "channels";
|
|
435
|
+
messaging: "messaging";
|
|
436
|
+
analyticsAds: "analyticsAds";
|
|
437
|
+
}>;
|
|
438
|
+
weight: z.ZodNumber;
|
|
439
|
+
requiredPermission: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
440
|
+
}, z.core.$strip>;
|
|
441
|
+
/**
|
|
442
|
+
* The data half of a contribution into another module's screen.
|
|
443
|
+
*
|
|
444
|
+
* A contribution declares **one** zone, so a component appearing in two zones
|
|
445
|
+
* is two contributions — and only the one that needs narrowing carries a
|
|
446
|
+
* {@link AdminZoneContributionSchema.shape.match}.
|
|
447
|
+
*/
|
|
448
|
+
export declare const AdminZoneContributionSchema: z.ZodObject<{
|
|
449
|
+
zone: z.ZodEnum<{
|
|
450
|
+
"product.editor.details.before": "product.editor.details.before";
|
|
451
|
+
"product.editor.pricing.before": "product.editor.pricing.before";
|
|
452
|
+
"product.editor.field.after": "product.editor.field.after";
|
|
453
|
+
"delivery_method.list.integrations": "delivery_method.list.integrations";
|
|
454
|
+
"payment_method.list.integrations": "payment_method.list.integrations";
|
|
455
|
+
"invoice.detail.after": "invoice.detail.after";
|
|
456
|
+
"category.editor.after": "category.editor.after";
|
|
457
|
+
"product.editor.pricing.after": "product.editor.pricing.after";
|
|
458
|
+
"product.editor.channels": "product.editor.channels";
|
|
459
|
+
"sales_channel.editor.after": "sales_channel.editor.after";
|
|
460
|
+
"organization.detail.after": "organization.detail.after";
|
|
461
|
+
"customer.detail.after": "customer.detail.after";
|
|
462
|
+
"order.detail.payment": "order.detail.payment";
|
|
463
|
+
"order.shipment.row.actions": "order.shipment.row.actions";
|
|
464
|
+
"order.shipments.tab.actions": "order.shipments.tab.actions";
|
|
465
|
+
"order.entry.tabs": "order.entry.tabs";
|
|
466
|
+
"ledger.section.tabs": "ledger.section.tabs";
|
|
467
|
+
}>;
|
|
468
|
+
weight: z.ZodNumber;
|
|
469
|
+
requiredPermission: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
|
|
470
|
+
match: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<readonly [z.ZodString, z.ZodReadonly<z.ZodArray<z.ZodString>>]>>>;
|
|
471
|
+
}, z.core.$strip>;
|
|
472
|
+
/**
|
|
473
|
+
* A lazily-loaded React component.
|
|
474
|
+
*
|
|
475
|
+
* Typed structurally rather than against `react`, because
|
|
476
|
+
* `@endora-commerce/contracts` is compiled by the backend and must acquire no
|
|
477
|
+
* React dependency: a module's admin layer resolves the application's own copy
|
|
478
|
+
* of React through `@endora-commerce/admin-kit`'s peer dependencies, and the
|
|
479
|
+
* declaration only has to say "a default export a bundler can split on".
|
|
480
|
+
*/
|
|
481
|
+
export type AdminComponentFactory = () => Promise<{
|
|
482
|
+
readonly default: unknown;
|
|
483
|
+
}>;
|
|
484
|
+
/** A route a module adds to the admin's route table. */
|
|
485
|
+
export interface AdminRouteDeclaration extends z.infer<typeof AdminRouteDeclarationSchema> {
|
|
486
|
+
/**
|
|
487
|
+
* A dynamic-import factory, and the **only** function-valued field.
|
|
488
|
+
*
|
|
489
|
+
* A statically imported component defeats FR-013 — an operator downloads the
|
|
490
|
+
* page code of modules they cannot reach — and makes the registry evaluate
|
|
491
|
+
* module UI code in order to be enumerated.
|
|
492
|
+
*/
|
|
493
|
+
readonly component: AdminComponentFactory;
|
|
494
|
+
}
|
|
495
|
+
/** A sidebar entry a module adds. */
|
|
496
|
+
export type AdminNavDeclaration = z.infer<typeof AdminNavDeclarationSchema>;
|
|
497
|
+
/** A contribution a module makes into a zone another module's screen renders. */
|
|
498
|
+
export interface AdminZoneContribution extends z.infer<typeof AdminZoneContributionSchema> {
|
|
499
|
+
readonly component: AdminComponentFactory;
|
|
500
|
+
}
|
|
501
|
+
/**
|
|
502
|
+
* What a module package's `src/admin/index.ts` exports — and the only thing it
|
|
503
|
+
* exports.
|
|
504
|
+
*
|
|
505
|
+
* All three arrays are optional, so a module shipping only a nav entry pointing
|
|
506
|
+
* at a host route is legal and so is one shipping only a zone contribution.
|
|
507
|
+
* The entry may not export a component, a hook or a service:
|
|
508
|
+
* `check:module-boundary`'s D-171 rule designates a subpath as contract surface
|
|
509
|
+
* when it emits **no runtime binding**, and `./admin` deliberately does not
|
|
510
|
+
* qualify — it exports an object — so a consumer reaching into another module's
|
|
511
|
+
* `./admin` is a counted boundary reach, which is the correct answer.
|
|
512
|
+
*/
|
|
513
|
+
export interface AdminContributions {
|
|
514
|
+
readonly routes?: readonly AdminRouteDeclaration[];
|
|
515
|
+
readonly nav?: readonly AdminNavDeclaration[];
|
|
516
|
+
readonly zones?: readonly AdminZoneContribution[];
|
|
517
|
+
}
|
|
518
|
+
//# sourceMappingURL=admin-contributions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"admin-contributions.d.ts","sourceRoot":"","sources":["../src/admin-contributions.ts"],"names":[],"mappings":"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"}
|