@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 @@
|
|
|
1
|
+
{"version":3,"file":"invoices.d.ts","sourceRoot":"","sources":["../src/invoices.ts"],"names":[],"mappings":"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"}
|
package/dist/invoices.js
ADDED
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { isoDateTimeSchema, uuidSchema } from './common.js';
|
|
3
|
+
/**
|
|
4
|
+
* Invoices (FR-080 + feature 047-invoices-module). Produces proforma, VAT
|
|
5
|
+
* invoice, and corrective (credit-note) PDFs against orders. The binary
|
|
6
|
+
* download happens at `GET /orders/:id/invoices/:invoiceId/pdf` (customer) and
|
|
7
|
+
* `GET /admin/invoices/:id/pdf` (admin); this file defines the JSON metadata,
|
|
8
|
+
* the seller/company settings shape, the line/VAT-summary snapshots, and the
|
|
9
|
+
* WYSIWYG template metadata.
|
|
10
|
+
*/
|
|
11
|
+
export const invoiceKindSchema = z.enum(['proforma', 'invoice', 'correction', 'wz']);
|
|
12
|
+
/** Whether a row was issued by the platform or imported from an ERP connector. */
|
|
13
|
+
export const invoiceOriginSchema = z.enum(['platform', 'erp_import']);
|
|
14
|
+
/** Sale-document kind carried inside {@link externalDocumentRefSchema}. */
|
|
15
|
+
export const erpSaleDocumentKindSchema = z.enum(['invoice', 'wz']);
|
|
16
|
+
/**
|
|
17
|
+
* Stable identity for an ERP-imported sale document (feature 119, FR-087/FR-088).
|
|
18
|
+
*
|
|
19
|
+
* An imported document is identified by the pair `(system, externalId)`: the
|
|
20
|
+
* source system it was imported from, and its id in that system. Ids from two
|
|
21
|
+
* source systems come from unrelated id spaces, so the same `externalId` from
|
|
22
|
+
* another `system` is another document (feature 134, T135; `research.md` D21).
|
|
23
|
+
*
|
|
24
|
+
* `system` is also the key an attachment fetch provider registers under
|
|
25
|
+
* ({@link InvoiceAttachmentFetchRegistryPort}). It is open rather than a literal
|
|
26
|
+
* since feature 134 (T065): a free contract that enumerates its connectors has
|
|
27
|
+
* to be edited for every connector that is added, which is the coupling the
|
|
28
|
+
* seam removes. `externalNumber` is the document number the source system
|
|
29
|
+
* shows, when it has one.
|
|
30
|
+
*/
|
|
31
|
+
export const externalDocumentRefSchema = z.object({
|
|
32
|
+
system: z.string().min(1).max(64),
|
|
33
|
+
externalId: z.string().min(1).max(128),
|
|
34
|
+
externalNumber: z.string().max(64).optional(),
|
|
35
|
+
documentKind: erpSaleDocumentKindSchema,
|
|
36
|
+
});
|
|
37
|
+
export const invoiceStatusSchema = z.enum(['pending', 'ready', 'cancelled']);
|
|
38
|
+
/** Whether the invoice email carries the PDF or a storefront download link. */
|
|
39
|
+
export const invoiceDeliveryModeSchema = z.enum(['attachment', 'link']);
|
|
40
|
+
/**
|
|
41
|
+
* Seller (own company) data printed on every invoice. Stored as a JSON setting
|
|
42
|
+
* (`invoices.seller.company_data`); the VAT/NIP lives in a separate
|
|
43
|
+
* `invoices.seller.tax_id` setting but is surfaced together here at render time.
|
|
44
|
+
*/
|
|
45
|
+
export const sellerCompanyDataSchema = z.object({
|
|
46
|
+
legalName: z.string().max(255),
|
|
47
|
+
addressLine1: z.string().max(255),
|
|
48
|
+
addressLine2: z.string().max(255).optional().default(''),
|
|
49
|
+
postalCode: z.string().max(20),
|
|
50
|
+
city: z.string().max(120),
|
|
51
|
+
country: z.string().max(2).describe('ISO-3166-1 alpha-2 country code'),
|
|
52
|
+
taxId: z.string().max(32).optional().default(''),
|
|
53
|
+
bankName: z.string().max(160).optional().default(''),
|
|
54
|
+
bankAccount: z.string().max(64).optional().default(''),
|
|
55
|
+
swift: z.string().max(32).optional().default(''),
|
|
56
|
+
email: z.string().max(320).optional().default(''),
|
|
57
|
+
phone: z.string().max(32).optional().default(''),
|
|
58
|
+
});
|
|
59
|
+
/** Buyer (recipient) snapshot captured at issuance. */
|
|
60
|
+
export const invoiceBuyerSchema = z.object({
|
|
61
|
+
name: z.string().max(255),
|
|
62
|
+
taxId: z.string().max(32).optional().default(''),
|
|
63
|
+
addressLine1: z.string().max(255).optional().default(''),
|
|
64
|
+
addressLine2: z.string().max(255).optional().default(''),
|
|
65
|
+
postalCode: z.string().max(20).optional().default(''),
|
|
66
|
+
city: z.string().max(120).optional().default(''),
|
|
67
|
+
country: z.string().max(2).optional().default(''),
|
|
68
|
+
});
|
|
69
|
+
/** One immutable invoice line, snapshotted from the order at issuance. */
|
|
70
|
+
export const invoiceLineSchema = z.object({
|
|
71
|
+
ordinal: z.number().int().positive(),
|
|
72
|
+
name: z.string().max(512),
|
|
73
|
+
unit: z.string().max(32),
|
|
74
|
+
quantity: z.number().finite(),
|
|
75
|
+
unitNetPrice: z.number().finite(),
|
|
76
|
+
taxRate: z.number().finite().describe('Fractional VAT rate, e.g. 0.23 for 23%'),
|
|
77
|
+
netValue: z.number().finite(),
|
|
78
|
+
grossValue: z.number().finite(),
|
|
79
|
+
});
|
|
80
|
+
/** Aggregation per VAT rate; reconciles with the invoice totals. */
|
|
81
|
+
export const vatSummaryRowSchema = z.object({
|
|
82
|
+
taxRate: z.number().finite(),
|
|
83
|
+
netTotal: z.number().finite(),
|
|
84
|
+
vatAmount: z.number().finite(),
|
|
85
|
+
grossTotal: z.number().finite(),
|
|
86
|
+
});
|
|
87
|
+
export const invoiceSchema = z.object({
|
|
88
|
+
id: uuidSchema,
|
|
89
|
+
orderId: uuidSchema.nullable(),
|
|
90
|
+
salesChannelId: uuidSchema.nullable(),
|
|
91
|
+
kind: invoiceKindSchema,
|
|
92
|
+
number: z.string(),
|
|
93
|
+
status: invoiceStatusSchema,
|
|
94
|
+
currency: z.string().length(3),
|
|
95
|
+
issuedAt: isoDateTimeSchema,
|
|
96
|
+
saleDate: z.string().nullable(),
|
|
97
|
+
paymentDueDate: z.string().nullable(),
|
|
98
|
+
paymentMethod: z.string().nullable(),
|
|
99
|
+
netTotal: z.number().finite(),
|
|
100
|
+
taxTotal: z.number().finite(),
|
|
101
|
+
grossTotal: z.number().finite(),
|
|
102
|
+
paidTotal: z.number().finite(),
|
|
103
|
+
amountDue: z.number().finite(),
|
|
104
|
+
/** Legacy alias of grossTotal kept for back-compat with the original schema. */
|
|
105
|
+
total: z.number().finite(),
|
|
106
|
+
originalInvoiceId: uuidSchema.nullable(),
|
|
107
|
+
templateId: uuidSchema.nullable(),
|
|
108
|
+
pdfAssetId: uuidSchema.nullable(),
|
|
109
|
+
ksefReferenceNumber: z.string().nullable(),
|
|
110
|
+
ksefProcessedAt: isoDateTimeSchema.nullable(),
|
|
111
|
+
});
|
|
112
|
+
export const invoiceDetailSchema = invoiceSchema.extend({
|
|
113
|
+
/** Human-readable order business id (e.g. `ORD-…`); null if the order is gone. */
|
|
114
|
+
orderBusinessId: z.string().nullable(),
|
|
115
|
+
lines: z.array(invoiceLineSchema),
|
|
116
|
+
vatSummary: z.array(vatSummaryRowSchema),
|
|
117
|
+
seller: sellerCompanyDataSchema,
|
|
118
|
+
buyer: invoiceBuyerSchema,
|
|
119
|
+
});
|
|
120
|
+
/** WYSIWYG (Puck) invoice PDF template metadata. */
|
|
121
|
+
export const invoiceTemplateSchema = z.object({
|
|
122
|
+
id: uuidSchema,
|
|
123
|
+
code: z.string().max(180),
|
|
124
|
+
name: z.string().max(200),
|
|
125
|
+
salesChannelId: uuidSchema.nullable(),
|
|
126
|
+
languages: z.array(z.string()),
|
|
127
|
+
active: z.boolean(),
|
|
128
|
+
isSystem: z.boolean(),
|
|
129
|
+
version: z.number().int(),
|
|
130
|
+
});
|
|
131
|
+
/** Body for issuing an invoice/proforma against an order. */
|
|
132
|
+
export const issueInvoiceRequestSchema = z.object({
|
|
133
|
+
kind: z.enum(['invoice', 'proforma']).default('invoice'),
|
|
134
|
+
saleDate: z.string().optional(),
|
|
135
|
+
paymentDueDate: z.string().optional(),
|
|
136
|
+
});
|
|
137
|
+
/** Body for (re)sending the invoice email. */
|
|
138
|
+
export const sendInvoiceEmailRequestSchema = z.object({
|
|
139
|
+
mode: invoiceDeliveryModeSchema.optional(),
|
|
140
|
+
});
|
|
141
|
+
/**
|
|
142
|
+
* Why the invoice e-mail did not go out (issue #103).
|
|
143
|
+
*
|
|
144
|
+
* The dispatcher has answered these seven since #103; they only ever reached a
|
|
145
|
+
* log. They are part of the API shape now because the operator who clicked
|
|
146
|
+
* "issue" is the one person who can act on them (issue #149).
|
|
147
|
+
*/
|
|
148
|
+
export const invoiceEmailNotSentReasonSchema = z.enum([
|
|
149
|
+
/** No transactional sender is wired in this composition. */
|
|
150
|
+
'no_sender',
|
|
151
|
+
/** The invoice, or the order behind it, could not be loaded. */
|
|
152
|
+
'invoice_not_found',
|
|
153
|
+
/** No recipient address could be resolved for the order. */
|
|
154
|
+
'no_recipient',
|
|
155
|
+
/** The operator switched the `invoice_issued` e-mail off. */
|
|
156
|
+
'deactivated',
|
|
157
|
+
/** No mailer is wired behind the sender. */
|
|
158
|
+
'no_transport',
|
|
159
|
+
/** No `invoice_issued` template exists yet. */
|
|
160
|
+
'no_definition',
|
|
161
|
+
/** The send raised, and the issuance was kept (FR-029). */
|
|
162
|
+
'failed',
|
|
163
|
+
]);
|
|
164
|
+
/**
|
|
165
|
+
* `POST /admin/invoices/:id/send-email` — the answer to an explicitly requested
|
|
166
|
+
* re-send. The route has carried it since issue #103; it is written down here
|
|
167
|
+
* because both admin surfaces used to announce "sent" over it (issue #149).
|
|
168
|
+
*/
|
|
169
|
+
export const sendInvoiceEmailResultSchema = z.discriminatedUnion('ok', [
|
|
170
|
+
z.object({ ok: z.literal(true) }),
|
|
171
|
+
z.object({ ok: z.literal(false), reason: invoiceEmailNotSentReasonSchema }),
|
|
172
|
+
]);
|
|
173
|
+
/**
|
|
174
|
+
* What became of the send-on-issue e-mail an issuance triggered (issue #149).
|
|
175
|
+
*
|
|
176
|
+
* Three answers, and the middle one is the point: `not_requested` means the
|
|
177
|
+
* operator switched send-on-issue off for this channel, which is a configured
|
|
178
|
+
* choice and not a delivery that failed. Reading "no e-mail" out of a missing
|
|
179
|
+
* field cannot tell those apart, which is how an issuance whose notification was
|
|
180
|
+
* suppressed came back as a bare 201 saying "issued".
|
|
181
|
+
*
|
|
182
|
+
* A suppressed or failed e-mail never invalidates the issuance (FR-029): the
|
|
183
|
+
* invoice is a legal document that was drawn, numbered and stored, so this
|
|
184
|
+
* rides **alongside** a 201 rather than turning it into an error.
|
|
185
|
+
*/
|
|
186
|
+
export const issueInvoiceEmailOutcomeSchema = z.discriminatedUnion('status', [
|
|
187
|
+
z.object({ status: z.literal('sent') }),
|
|
188
|
+
z.object({ status: z.literal('not_requested') }),
|
|
189
|
+
z.object({ status: z.literal('not_sent'), reason: invoiceEmailNotSentReasonSchema }),
|
|
190
|
+
]);
|
|
191
|
+
/**
|
|
192
|
+
* `POST /admin/orders/:orderId/invoices` — the issued document plus what became
|
|
193
|
+
* of its notification. `email` is a sibling of `data`, the way `pagination` is
|
|
194
|
+
* on a collection: it describes the action, not the invoice, and the invoice
|
|
195
|
+
* detail shape stays identical on every surface that reads one.
|
|
196
|
+
*/
|
|
197
|
+
export const issueInvoiceResponseSchema = z.object({
|
|
198
|
+
data: invoiceDetailSchema,
|
|
199
|
+
email: issueInvoiceEmailOutcomeSchema,
|
|
200
|
+
});
|
|
201
|
+
export const INVOICE_NUMBERING_HOST_PORT = 'invoiceNumberingHostPort';
|
|
202
|
+
export const INVOICE_PAID_HOST_PORT = 'invoicePaidHostPort';
|
|
203
|
+
export const INVOICE_COPY_HOST_PORT = 'invoiceCopyHostPort';
|
|
204
|
+
export const INVOICE_KSEF_ASSIGNMENT_PORT = 'invoiceKsefAssignmentPort';
|
|
205
|
+
// ---------------------------------------------------------------------------
|
|
206
|
+
// Domain events — `invoice.issued.v1`, `invoice.corrected.v1`
|
|
207
|
+
// ---------------------------------------------------------------------------
|
|
208
|
+
//
|
|
209
|
+
// Raised by this module and read by whoever subscribes: `invoice_ledger`
|
|
210
|
+
// routes them to an accounting vendor, and `ksef` submits them to the national
|
|
211
|
+
// clearing system. They were declared in the KSeF vendor file until feature
|
|
212
|
+
// 134's T062 (`specs/134-paid-module-extraction/research.md` §C.4): the payload
|
|
213
|
+
// of an event is the contract of the module that raises it, so a subscriber
|
|
214
|
+
// never has to read another subscriber's contract to understand it.
|
|
215
|
+
//
|
|
216
|
+
// Both describe the fields a subscriber reads. The emitter also sends the
|
|
217
|
+
// `eventId` / `occurredAt` envelope every in-process event carries, which a
|
|
218
|
+
// subscriber's parse ignores.
|
|
219
|
+
/** `invoice.issued.v1` payload, emitted when `invoices` issues a VAT invoice or a proforma. */
|
|
220
|
+
export const invoiceIssuedEventSchema = z.object({
|
|
221
|
+
invoiceId: z.string().uuid(),
|
|
222
|
+
orderId: z.string().uuid(),
|
|
223
|
+
kind: z.enum(['invoice', 'proforma']),
|
|
224
|
+
salesChannelId: z.string().uuid().nullable(),
|
|
225
|
+
});
|
|
226
|
+
/** `invoice.corrected.v1` payload, emitted when `invoices` issues a corrective invoice. */
|
|
227
|
+
export const invoiceCorrectedEventSchema = z.object({
|
|
228
|
+
invoiceId: z.string().uuid(),
|
|
229
|
+
originalInvoiceId: z.string().uuid().nullable(),
|
|
230
|
+
orderId: z.string().uuid(),
|
|
231
|
+
salesChannelId: z.string().uuid().nullable(),
|
|
232
|
+
});
|
|
233
|
+
// ---------------------------------------------------------------------------
|
|
234
|
+
// Numbering — the pattern vocabulary and the collision shapes (feature 078, D-95)
|
|
235
|
+
// ---------------------------------------------------------------------------
|
|
236
|
+
/**
|
|
237
|
+
* The tokens an invoice numbering pattern may contain. Everything else in a
|
|
238
|
+
* pattern is literal text.
|
|
239
|
+
*
|
|
240
|
+
* `{channel}` renders the sales channel's `code`, uppercased and otherwise
|
|
241
|
+
* verbatim. The code charset is `/^[a-z][a-z0-9_-]*$/`
|
|
242
|
+
* (`salesChannelCreateBodySchema`), so uppercasing is injective and no two
|
|
243
|
+
* channels can produce the same discriminator; the code is also immutable
|
|
244
|
+
* (the update schema accepts it only when it repeats the current value), so a
|
|
245
|
+
* number already rendered through `{channel}` can never be retroactively
|
|
246
|
+
* invalidated by a rename.
|
|
247
|
+
*/
|
|
248
|
+
export const INVOICE_NUMBER_TOKENS = [
|
|
249
|
+
'seq',
|
|
250
|
+
'seq:N',
|
|
251
|
+
'channel',
|
|
252
|
+
'YYYY',
|
|
253
|
+
'YY',
|
|
254
|
+
'MM',
|
|
255
|
+
];
|
|
256
|
+
// ---------------------------------------------------------------------------
|
|
257
|
+
// ERP-imported sale documents (feature 119, FR-086–FR-088)
|
|
258
|
+
// ---------------------------------------------------------------------------
|
|
259
|
+
export const ERP_SALE_DOCUMENT_WRITE_PORT = 'erpSaleDocumentWritePort';
|
|
260
|
+
/**
|
|
261
|
+
* Metadata for a source-system attachment registered on import; bytes arrive on
|
|
262
|
+
* first download (FR-086). `externalAttachmentId` is the attachment's id in the
|
|
263
|
+
* source system, unique within its document.
|
|
264
|
+
*/
|
|
265
|
+
export const erpSaleDocumentAttachmentInputSchema = z.object({
|
|
266
|
+
externalAttachmentId: z.string().max(128),
|
|
267
|
+
fileName: z.string().max(256),
|
|
268
|
+
contentType: z.string().max(128).nullable().optional(),
|
|
269
|
+
});
|
|
270
|
+
export const erpSaleDocumentUpsertInputSchema = z.object({
|
|
271
|
+
organizationId: uuidSchema,
|
|
272
|
+
orderId: uuidSchema.nullable().optional(),
|
|
273
|
+
externalDocumentRef: externalDocumentRefSchema,
|
|
274
|
+
kind: invoiceKindSchema,
|
|
275
|
+
number: z.string().max(64),
|
|
276
|
+
currency: z.string().length(3),
|
|
277
|
+
issuedAt: isoDateTimeSchema,
|
|
278
|
+
saleDate: z.string().nullable().optional(),
|
|
279
|
+
paymentDueDate: z.string().nullable().optional(),
|
|
280
|
+
paymentMethod: z.string().max(64).nullable().optional(),
|
|
281
|
+
netTotal: z.string().nullable().optional(),
|
|
282
|
+
taxTotal: z.string().nullable().optional(),
|
|
283
|
+
grossTotal: z.string(),
|
|
284
|
+
paidTotal: z.string().optional(),
|
|
285
|
+
buyerSnapshot: invoiceBuyerSchema.nullable().optional(),
|
|
286
|
+
attachments: z.array(erpSaleDocumentAttachmentInputSchema).optional(),
|
|
287
|
+
});
|
|
288
|
+
export const erpSaleDocumentUpsertResultSchema = z.object({
|
|
289
|
+
invoiceId: uuidSchema,
|
|
290
|
+
created: z.boolean(),
|
|
291
|
+
});
|
|
292
|
+
export const erpSaleDocumentAttachmentListItemSchema = z.object({
|
|
293
|
+
id: uuidSchema,
|
|
294
|
+
fileName: z.string(),
|
|
295
|
+
contentType: z.string().nullable(),
|
|
296
|
+
downloadHref: z.string(),
|
|
297
|
+
});
|
|
298
|
+
export const erpSaleDocumentListItemSchema = z.object({
|
|
299
|
+
id: uuidSchema,
|
|
300
|
+
kind: invoiceKindSchema,
|
|
301
|
+
number: z.string(),
|
|
302
|
+
documentKind: erpSaleDocumentKindSchema,
|
|
303
|
+
issuedAt: isoDateTimeSchema,
|
|
304
|
+
currency: z.string(),
|
|
305
|
+
total: z.number().finite(),
|
|
306
|
+
orderId: uuidSchema.nullable(),
|
|
307
|
+
attachments: z.array(erpSaleDocumentAttachmentListItemSchema),
|
|
308
|
+
});
|
|
309
|
+
// ---------------------------------------------------------------------------
|
|
310
|
+
// ERP attachment fetch — the seam an importing connector contributes to
|
|
311
|
+
// (feature 134, T061; `specs/134-paid-module-extraction/research.md` D12)
|
|
312
|
+
// ---------------------------------------------------------------------------
|
|
313
|
+
export const INVOICE_ATTACHMENT_FETCH_REGISTRY = 'invoiceAttachmentFetchRegistry';
|
|
314
|
+
//# sourceMappingURL=invoices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invoices.js","sourceRoot":"","sources":["../src/invoices.ts"],"names":[],"mappings":"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"}
|
package/dist/kernel.d.ts
ADDED
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kernel composition contracts (feature 072).
|
|
3
|
+
*
|
|
4
|
+
* **Scope note — a correction to `tasks.md` T003/T004.** Those tasks ask for
|
|
5
|
+
* `ModuleContext`, `Registration`, `RegistrationBuilder` and `PlatformScope` to
|
|
6
|
+
* live here. They cannot: this package declares exactly one dependency (`zod`)
|
|
7
|
+
* and is consumed by the admin app and the storefront, whereas those four types
|
|
8
|
+
* reference `FastifyInstance`, `bullmq`'s `Worker`, MikroORM's `EntityManager`,
|
|
9
|
+
* `TenantContext` and awilix's resolver types. Putting them here would drag the
|
|
10
|
+
* backend's entire framework surface into every browser bundle, and would need
|
|
11
|
+
* new dependencies on a feature whose budget is one (`awilix`).
|
|
12
|
+
*
|
|
13
|
+
* So the split is: **framework-agnostic data shapes and vocabulary here**, the
|
|
14
|
+
* framework-coupled composition types in `backend/src/kernel/`. That is also
|
|
15
|
+
* what `plan.md`'s "Source Code" tree and `contracts/module-context.md`'s own
|
|
16
|
+
* example import (`from '../../kernel/index.js'`) already assume.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* How long the container keeps an instance of a registration.
|
|
20
|
+
*
|
|
21
|
+
* `transient` is not a fallback — it is what `emFactory` uses, so every
|
|
22
|
+
* resolution hands out a fresh `EntityManager` fork exactly as the pre-kernel
|
|
23
|
+
* composition root did (research R-1b).
|
|
24
|
+
*/
|
|
25
|
+
export type RegistrationLifetime = 'singleton' | 'scoped' | 'transient';
|
|
26
|
+
/**
|
|
27
|
+
* The classes of entry point that establish a scoped execution. Every one of
|
|
28
|
+
* them goes through `enterPlatformScope`; before feature 072 only the HTTP path
|
|
29
|
+
* and (most of) the worker path established a tenant context at all.
|
|
30
|
+
*
|
|
31
|
+
* `'message'` is a Redis pub/sub callback (issue #235). It is its own label
|
|
32
|
+
* rather than a `'worker'`, because it is neither a BullMQ job nor a timer: it
|
|
33
|
+
* is delivered from a socket the composition opened, so it inherits no context
|
|
34
|
+
* from whatever asked for the work, and its own label is what says so at the
|
|
35
|
+
* call site.
|
|
36
|
+
*/
|
|
37
|
+
export type ScopeEntryPointKind = 'http' | 'worker' | 'cli' | 'boot' | 'interval' | 'message';
|
|
38
|
+
/**
|
|
39
|
+
* Per-execution metadata carried by a scope. Field names match the Command
|
|
40
|
+
* Bus's `CommandRequestMeta` deliberately, so the audit row a Command writes can
|
|
41
|
+
* be fed from the scope without a translation step.
|
|
42
|
+
*/
|
|
43
|
+
export interface RequestMeta {
|
|
44
|
+
/** Correlation id — the inbound `X-Request-Id`, or one generated at the edge. */
|
|
45
|
+
readonly requestId?: string | null;
|
|
46
|
+
readonly ipAddress?: string | null;
|
|
47
|
+
readonly userAgent?: string | null;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=kernel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel.d.ts","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;AAExE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,mBAAmB,GAC3B,MAAM,GACN,QAAQ,GACR,KAAK,GACL,MAAM,GACN,UAAU,GACV,SAAS,CAAC;AAEd;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,iFAAiF;IACjF,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC"}
|
package/dist/kernel.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kernel composition contracts (feature 072).
|
|
3
|
+
*
|
|
4
|
+
* **Scope note — a correction to `tasks.md` T003/T004.** Those tasks ask for
|
|
5
|
+
* `ModuleContext`, `Registration`, `RegistrationBuilder` and `PlatformScope` to
|
|
6
|
+
* live here. They cannot: this package declares exactly one dependency (`zod`)
|
|
7
|
+
* and is consumed by the admin app and the storefront, whereas those four types
|
|
8
|
+
* reference `FastifyInstance`, `bullmq`'s `Worker`, MikroORM's `EntityManager`,
|
|
9
|
+
* `TenantContext` and awilix's resolver types. Putting them here would drag the
|
|
10
|
+
* backend's entire framework surface into every browser bundle, and would need
|
|
11
|
+
* new dependencies on a feature whose budget is one (`awilix`).
|
|
12
|
+
*
|
|
13
|
+
* So the split is: **framework-agnostic data shapes and vocabulary here**, the
|
|
14
|
+
* framework-coupled composition types in `backend/src/kernel/`. That is also
|
|
15
|
+
* what `plan.md`'s "Source Code" tree and `contracts/module-context.md`'s own
|
|
16
|
+
* example import (`from '../../kernel/index.js'`) already assume.
|
|
17
|
+
*/
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=kernel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kernel.js","sourceRoot":"","sources":["../src/kernel.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `languages` module contracts — the in-process port surface (feature 075,
|
|
3
|
+
* Phase P).
|
|
4
|
+
*
|
|
5
|
+
* The module's own HTTP shapes are `dictionary.ts`' business: `dictionaries`
|
|
6
|
+
* serves the admin screen over both this table and `currencies`'. What belongs
|
|
7
|
+
* here is what the other four modules ask of it — sixteen import sites, ten of
|
|
8
|
+
* them `dictionaries` reading the `Language` entity directly to resolve a
|
|
9
|
+
* label, validate a code or walk a fallback chain.
|
|
10
|
+
*
|
|
11
|
+
* Plain TypeScript rather than Zod: these describe in-process calls.
|
|
12
|
+
*
|
|
13
|
+
* Nothing here imports from `backend/src/` (FR-034).
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* The EventBus name `languages` announces on after any write.
|
|
17
|
+
*
|
|
18
|
+
* Published as a **constant, not a port** (FR-013): it is a string, and
|
|
19
|
+
* whoever caches language data subscribes to it. The direction is deliberate
|
|
20
|
+
* and stays — `languages` announces, and it must not know who listens, so
|
|
21
|
+
* there is no manifest dependency in either direction over this name.
|
|
22
|
+
*/
|
|
23
|
+
export declare const LANGUAGE_CHANGED_EVENT = "languages.changed";
|
|
24
|
+
/**
|
|
25
|
+
* A language as it crosses a module boundary — a plain shape, never the ORM
|
|
26
|
+
* entity (FR-011). The primary key is `code`, not a uuid; that is the table's
|
|
27
|
+
* own design and consumers key on it.
|
|
28
|
+
*/
|
|
29
|
+
export interface LanguageRecord {
|
|
30
|
+
/** BCP-47-ish code. The primary key. */
|
|
31
|
+
code: string;
|
|
32
|
+
label: string;
|
|
33
|
+
nativeLabel: string;
|
|
34
|
+
isRtl: boolean;
|
|
35
|
+
/** The language a missing translation falls back to, or `null` for none. */
|
|
36
|
+
fallbackCode: string | null;
|
|
37
|
+
isDefault: boolean;
|
|
38
|
+
isActive: boolean;
|
|
39
|
+
sortOrder: number;
|
|
40
|
+
createdAt: Date;
|
|
41
|
+
updatedAt: Date;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Container name: `languageReadPort`. Owner: `languages`.
|
|
45
|
+
*
|
|
46
|
+
* `listActive` is six of the sixteen inbound sites on its own — `catalog`
|
|
47
|
+
* resolving a product's locale chain, `product_feeds` deciding which
|
|
48
|
+
* translations to emit, `pim_ergonode` mapping an import's locales,
|
|
49
|
+
* `dictionaries` rendering its admin screen.
|
|
50
|
+
*
|
|
51
|
+
* When `languages` is off every method fails closed. There is no sensible
|
|
52
|
+
* degrade: a storefront that cannot list its languages would have to invent
|
|
53
|
+
* one, and inventing `'en'` is how a Polish shop renders in English.
|
|
54
|
+
*
|
|
55
|
+
* Whether `languages` has an off state at all is its manifest's `activation` to
|
|
56
|
+
* say, not this line's: a module declaring `nonDeactivatable` never enters one.
|
|
57
|
+
*/
|
|
58
|
+
export interface LanguageReadPort {
|
|
59
|
+
list(): Promise<LanguageRecord[]>;
|
|
60
|
+
/** Only `isActive`, ordered by sort order then code. */
|
|
61
|
+
listActive(): Promise<LanguageRecord[]>;
|
|
62
|
+
/** Exactly one language is the default; `null` only before the first seed. */
|
|
63
|
+
getDefault(): Promise<LanguageRecord | null>;
|
|
64
|
+
findByCode(code: string): Promise<LanguageRecord | null>;
|
|
65
|
+
}
|
|
66
|
+
export interface CreateLanguageInput {
|
|
67
|
+
code: string;
|
|
68
|
+
label: string;
|
|
69
|
+
nativeLabel: string;
|
|
70
|
+
isRtl?: boolean;
|
|
71
|
+
fallbackCode?: string | null;
|
|
72
|
+
isActive?: boolean;
|
|
73
|
+
sortOrder?: number;
|
|
74
|
+
}
|
|
75
|
+
export interface UpdateLanguageInput {
|
|
76
|
+
label?: string;
|
|
77
|
+
nativeLabel?: string;
|
|
78
|
+
isRtl?: boolean;
|
|
79
|
+
fallbackCode?: string | null;
|
|
80
|
+
isActive?: boolean;
|
|
81
|
+
sortOrder?: number;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Container name: `languageAdminPort`. Owner: `languages`.
|
|
85
|
+
*
|
|
86
|
+
* `dictionaries` hosts the admin screen for this table — the module that owns
|
|
87
|
+
* the rows does not own the surface — so the write side crosses a boundary as
|
|
88
|
+
* a matter of design rather than of accident.
|
|
89
|
+
*
|
|
90
|
+
* The invariants stay on this side: exactly one default, a default may not be
|
|
91
|
+
* deactivated, and a fallback chain may not cycle. A caller cannot be trusted
|
|
92
|
+
* with them, and two of the three were already enforced here.
|
|
93
|
+
*/
|
|
94
|
+
export interface LanguageAdminPort {
|
|
95
|
+
create(input: CreateLanguageInput): Promise<LanguageRecord>;
|
|
96
|
+
update(code: string, input: UpdateLanguageInput): Promise<LanguageRecord>;
|
|
97
|
+
setDefault(code: string): Promise<LanguageRecord>;
|
|
98
|
+
remove(code: string): Promise<void>;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Container name: `languageSeedPort`. Owner: `languages`.
|
|
102
|
+
*
|
|
103
|
+
* The seam `dictionaries`' boot reconciler used to be a raw
|
|
104
|
+
* `update "languages" set "native_label" = …` — this module's table, written by
|
|
105
|
+
* another module (D-87).
|
|
106
|
+
*
|
|
107
|
+
* Narrow on purpose: the only seeding `dictionaries` does against this table is
|
|
108
|
+
* filling the empty `native_label` that migration 038 left behind, and the fill
|
|
109
|
+
* happens **once**. A row whose label an operator has since set is never
|
|
110
|
+
* overwritten, so a re-run is a no-op rather than a revert.
|
|
111
|
+
*/
|
|
112
|
+
export interface LanguageSeedPort {
|
|
113
|
+
/**
|
|
114
|
+
* Sets `nativeLabel` on every listed code that still holds the empty string.
|
|
115
|
+
* Returns how many rows it filled.
|
|
116
|
+
*/
|
|
117
|
+
backfillNativeLabels(rows: readonly {
|
|
118
|
+
code: string;
|
|
119
|
+
nativeLabel: string;
|
|
120
|
+
}[]): Promise<number>;
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=languages.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages.d.ts","sourceRoot":"","sources":["../src/languages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,sBAAsB,CAAC;AAE1D;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,OAAO,CAAC;IACf,4EAA4E;IAC5E,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IAClC,wDAAwD;IACxD,UAAU,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;IACxC,8EAA8E;IAC9E,UAAU,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IAC7C,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC5D,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1E,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAClD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,oBAAoB,CAClB,IAAI,EAAE,SAAS;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,GACrD,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `languages` module contracts — the in-process port surface (feature 075,
|
|
3
|
+
* Phase P).
|
|
4
|
+
*
|
|
5
|
+
* The module's own HTTP shapes are `dictionary.ts`' business: `dictionaries`
|
|
6
|
+
* serves the admin screen over both this table and `currencies`'. What belongs
|
|
7
|
+
* here is what the other four modules ask of it — sixteen import sites, ten of
|
|
8
|
+
* them `dictionaries` reading the `Language` entity directly to resolve a
|
|
9
|
+
* label, validate a code or walk a fallback chain.
|
|
10
|
+
*
|
|
11
|
+
* Plain TypeScript rather than Zod: these describe in-process calls.
|
|
12
|
+
*
|
|
13
|
+
* Nothing here imports from `backend/src/` (FR-034).
|
|
14
|
+
*/
|
|
15
|
+
/**
|
|
16
|
+
* The EventBus name `languages` announces on after any write.
|
|
17
|
+
*
|
|
18
|
+
* Published as a **constant, not a port** (FR-013): it is a string, and
|
|
19
|
+
* whoever caches language data subscribes to it. The direction is deliberate
|
|
20
|
+
* and stays — `languages` announces, and it must not know who listens, so
|
|
21
|
+
* there is no manifest dependency in either direction over this name.
|
|
22
|
+
*/
|
|
23
|
+
export const LANGUAGE_CHANGED_EVENT = 'languages.changed';
|
|
24
|
+
//# sourceMappingURL=languages.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"languages.js","sourceRoot":"","sources":["../src/languages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,mBAAmB,CAAC"}
|