@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,43 @@
|
|
|
1
|
+
// Shared PIM connector vocabulary — feature 089 (`pim_connector` package).
|
|
2
|
+
// UnoPim-specific HTTP shapes live in `pim-unopim.ts`.
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
export const pimImportRunStatusSchema = z.enum([
|
|
5
|
+
'queued',
|
|
6
|
+
'running',
|
|
7
|
+
'completed',
|
|
8
|
+
'completed_with_issues',
|
|
9
|
+
'failed',
|
|
10
|
+
'skipped',
|
|
11
|
+
]);
|
|
12
|
+
export const pimImportTriggerSchema = z.enum(['manual', 'scheduled', 'push']);
|
|
13
|
+
export const pimImportModeSchema = z.enum(['delta', 'full']);
|
|
14
|
+
export const pimImportIssueSeveritySchema = z.enum(['info', 'warning', 'error']);
|
|
15
|
+
export const pimImportCountsSchema = z.object({
|
|
16
|
+
considered: z.number().int().nonnegative(),
|
|
17
|
+
created: z.number().int().nonnegative(),
|
|
18
|
+
updated: z.number().int().nonnegative(),
|
|
19
|
+
skipped: z.number().int().nonnegative(),
|
|
20
|
+
withdrawn: z.number().int().nonnegative(),
|
|
21
|
+
failed: z.number().int().nonnegative(),
|
|
22
|
+
protected: z.number().int().nonnegative().optional(),
|
|
23
|
+
});
|
|
24
|
+
/** Canonical field-protection path grammar (shared across PIM connectors). */
|
|
25
|
+
export const pimFieldPathSchema = z
|
|
26
|
+
.string()
|
|
27
|
+
.min(1)
|
|
28
|
+
.max(256)
|
|
29
|
+
.regex(/^(attribute\.[a-z][a-z0-9_]*(\.[a-z]{2}(_[A-Z]{2})?)?(\.[0-9a-f-]{36}(\.[a-z]{2}(_[A-Z]{2})?)?)?|seo\.(metaTitle|metaDescription|metaKeywords)(\.[a-z]{2}(_[A-Z]{2})?)?|gallery\.\d+|attachment\.[0-9a-f-]{36}|price\.[0-9a-f-]{36}\.[A-Z]{3}|category\.[0-9a-f-]{36}|name(\.[a-z]{2}(_[A-Z]{2})?)?|description(\.[a-z]{2}(_[A-Z]{2})?)?)$/);
|
|
30
|
+
export const PIM_CONNECTOR_REGISTRY_PORT = 'pimConnectorRegistryPort';
|
|
31
|
+
// Feature 132 — `PIM_CONNECTOR_MODULES` is **gone**.
|
|
32
|
+
//
|
|
33
|
+
// It listed two of the four shipped PIM connectors, so exclusivity covered 2 of the
|
|
34
|
+
// 12 ordered pairs and nothing said so; its second field, `activationSettingCode`,
|
|
35
|
+
// was byte-identical to each member's own `activation.settingCode` in every entry
|
|
36
|
+
// that could be checked — one fact with two homes (D-100); and a connector
|
|
37
|
+
// installed from npm or shipped by a deployment's overlay could not get into it
|
|
38
|
+
// without editing this file, which they do not own.
|
|
39
|
+
//
|
|
40
|
+
// The family is declared by its members, in their own manifests
|
|
41
|
+
// (`capabilities: ['pim-connector']`), and derived by the platform on every
|
|
42
|
+
// composition. `pim_connector` owns the key and mints the refusal code.
|
|
43
|
+
//# sourceMappingURL=pim-connector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pim-connector.js","sourceRoot":"","sources":["../src/pim-connector.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,uDAAuD;AAEvD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC7C,QAAQ;IACR,SAAS;IACT,WAAW;IACX,uBAAuB;IACvB,QAAQ;IACR,SAAS;CACV,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;AAG9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;AAG7D,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAGjF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IAC1C,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACvC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACvC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACvC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACzC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE;IACtC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CACrD,CAAC,CAAC;AAGH,8EAA8E;AAC9E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC;KAChC,MAAM,EAAE;KACR,GAAG,CAAC,CAAC,CAAC;KACN,GAAG,CAAC,GAAG,CAAC;KACR,KAAK,CACJ,4UAA4U,CAC7U,CAAC;AAGJ,MAAM,CAAC,MAAM,2BAA2B,GAAG,0BAAmC,CAAC;AAqB/E,qDAAqD;AACrD,EAAE;AACF,oFAAoF;AACpF,mFAAmF;AACnF,kFAAkF;AAClF,2EAA2E;AAC3E,gFAAgF;AAChF,oDAAoD;AACpD,EAAE;AACF,gEAAgE;AAChE,4EAA4E;AAC5E,wEAAwE"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical form of a shared field-protection path, or `null` when outside the grammar.
|
|
3
|
+
*/
|
|
4
|
+
export declare function canonicalisePimFieldPath(raw: string): string | null;
|
|
5
|
+
export declare function isValidPimFieldPath(raw: string): boolean;
|
|
6
|
+
//# sourceMappingURL=pim-field-path.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pim-field-path.d.ts","sourceRoot":"","sources":["../src/pim-field-path.ts"],"names":[],"mappings":"AA+CA;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA6CnE;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAExD"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { pimFieldPathSchema } from './pim-connector.js';
|
|
2
|
+
const UUID_PATTERN = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
3
|
+
const ATTRIBUTE_KEY_PATTERN = /^[a-z][a-z0-9_]*$/;
|
|
4
|
+
const CURRENCY_PATTERN = /^[A-Za-z]{3}$/;
|
|
5
|
+
function normaliseLocaleSegment(raw) {
|
|
6
|
+
const match = /^([a-z]{2})(?:_([a-z]{2}))?$/i.exec(raw);
|
|
7
|
+
if (match === null)
|
|
8
|
+
return null;
|
|
9
|
+
const primary = match[1].toLowerCase();
|
|
10
|
+
const region = match[2];
|
|
11
|
+
return region === undefined ? primary : `${primary}_${region.toUpperCase()}`;
|
|
12
|
+
}
|
|
13
|
+
function normaliseUuid(raw) {
|
|
14
|
+
return UUID_PATTERN.test(raw) ? raw.toLowerCase() : null;
|
|
15
|
+
}
|
|
16
|
+
function canonicaliseAttributeBranch(segments) {
|
|
17
|
+
if (segments.length < 2 || segments.length > 4)
|
|
18
|
+
return null;
|
|
19
|
+
const key = segments[1];
|
|
20
|
+
if (!ATTRIBUTE_KEY_PATTERN.test(key))
|
|
21
|
+
return null;
|
|
22
|
+
if (segments.length === 2) {
|
|
23
|
+
return `attribute.${key}`;
|
|
24
|
+
}
|
|
25
|
+
if (segments.length === 3) {
|
|
26
|
+
const third = segments[2];
|
|
27
|
+
const locale = normaliseLocaleSegment(third);
|
|
28
|
+
if (locale !== null) {
|
|
29
|
+
return `attribute.${key}.${locale}`;
|
|
30
|
+
}
|
|
31
|
+
const channelId = normaliseUuid(third);
|
|
32
|
+
if (channelId !== null) {
|
|
33
|
+
return `attribute.${key}.${channelId}`;
|
|
34
|
+
}
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
const channelId = normaliseUuid(segments[2]);
|
|
38
|
+
const locale = normaliseLocaleSegment(segments[3]);
|
|
39
|
+
if (channelId === null || locale === null)
|
|
40
|
+
return null;
|
|
41
|
+
return `attribute.${key}.${channelId}.${locale}`;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Canonical form of a shared field-protection path, or `null` when outside the grammar.
|
|
45
|
+
*/
|
|
46
|
+
export function canonicalisePimFieldPath(raw) {
|
|
47
|
+
const value = raw.trim();
|
|
48
|
+
if (value === '' || value.length > 256)
|
|
49
|
+
return null;
|
|
50
|
+
const segments = value.split('.');
|
|
51
|
+
let canonical = null;
|
|
52
|
+
if (segments[0] === 'attribute') {
|
|
53
|
+
canonical = canonicaliseAttributeBranch(segments);
|
|
54
|
+
}
|
|
55
|
+
else if (segments[0] === 'seo' && segments.length === 3) {
|
|
56
|
+
const field = segments[1];
|
|
57
|
+
const locale = normaliseLocaleSegment(segments[2]);
|
|
58
|
+
if (locale !== null &&
|
|
59
|
+
(field === 'metaTitle' || field === 'metaDescription' || field === 'metaKeywords')) {
|
|
60
|
+
canonical = `seo.${field}.${locale}`;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else if (segments[0] === 'gallery' && segments.length === 2 && /^\d+$/.test(segments[1])) {
|
|
64
|
+
canonical = `gallery.${segments[1]}`;
|
|
65
|
+
}
|
|
66
|
+
else if (segments[0] === 'attachment' && segments.length === 2) {
|
|
67
|
+
const assetId = normaliseUuid(segments[1]);
|
|
68
|
+
if (assetId !== null)
|
|
69
|
+
canonical = `attachment.${assetId}`;
|
|
70
|
+
}
|
|
71
|
+
else if (segments[0] === 'price' && segments.length === 3) {
|
|
72
|
+
const priceListId = normaliseUuid(segments[1]);
|
|
73
|
+
const currency = segments[2];
|
|
74
|
+
if (priceListId !== null && CURRENCY_PATTERN.test(currency)) {
|
|
75
|
+
canonical = `price.${priceListId}.${currency.toUpperCase()}`;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
else if (segments[0] === 'category' && segments.length === 2) {
|
|
79
|
+
const categoryId = normaliseUuid(segments[1]);
|
|
80
|
+
if (categoryId !== null)
|
|
81
|
+
canonical = `category.${categoryId}`;
|
|
82
|
+
}
|
|
83
|
+
else if (segments[0] === 'name' || segments[0] === 'description') {
|
|
84
|
+
if (segments.length === 1) {
|
|
85
|
+
canonical = segments[0];
|
|
86
|
+
}
|
|
87
|
+
else if (segments.length === 2) {
|
|
88
|
+
const locale = normaliseLocaleSegment(segments[1]);
|
|
89
|
+
if (locale !== null)
|
|
90
|
+
canonical = `${segments[0]}.${locale}`;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (canonical === null || !pimFieldPathSchema.safeParse(canonical).success) {
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
return canonical;
|
|
97
|
+
}
|
|
98
|
+
export function isValidPimFieldPath(raw) {
|
|
99
|
+
return canonicalisePimFieldPath(raw) !== null;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=pim-field-path.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pim-field-path.js","sourceRoot":"","sources":["../src/pim-field-path.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* The languages the platform ships translation bundles for.
|
|
4
|
+
*
|
|
5
|
+
* Distinct from `Language` in `i18n.ts`, which is the operator-configured
|
|
6
|
+
* **content** language pool — BCP-47, database rows, extended at runtime by an
|
|
7
|
+
* operator. This enum is extended only by shipping a bundle and changing this
|
|
8
|
+
* line. `normalise` in `backend/src/kernel/i18n/request-language.ts` is the
|
|
9
|
+
* bridge between the two, and a bridge needs both ends named.
|
|
10
|
+
*/
|
|
11
|
+
export declare const SupportedLanguageSchema: z.ZodEnum<{
|
|
12
|
+
en: "en";
|
|
13
|
+
pl: "pl";
|
|
14
|
+
}>;
|
|
15
|
+
export type SupportedLanguage = z.infer<typeof SupportedLanguageSchema>;
|
|
16
|
+
/** Convenience: every supported value as a runtime array. */
|
|
17
|
+
export declare const SUPPORTED_LANGUAGES: ("en" | "pl")[];
|
|
18
|
+
/** The language the platform answers in when nothing else resolves. */
|
|
19
|
+
export declare const LANGUAGE_FALLBACK: SupportedLanguage;
|
|
20
|
+
//# sourceMappingURL=platform-language.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-language.d.ts","sourceRoot":"","sources":["../src/platform-language.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,eAAO,MAAM,uBAAuB;;;EAAuB,CAAC;AAC5D,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,6DAA6D;AAC7D,eAAO,MAAM,mBAAmB,iBAAkC,CAAC;AAEnE,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,EAAE,iBAAwB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
// The language the platform answers a request in (feature 083, D-136).
|
|
2
|
+
//
|
|
3
|
+
// Named for the platform, not for an audience. The constant this replaces was
|
|
4
|
+
// `ADMIN_LANGUAGE_FALLBACK`, and the name is what made issue #234 invisible:
|
|
5
|
+
// a fallback called "admin" reads correctly in a resolver that only ever
|
|
6
|
+
// answered admins, so nobody asked why a buyer was reaching it.
|
|
7
|
+
import { z } from 'zod';
|
|
8
|
+
/**
|
|
9
|
+
* The languages the platform ships translation bundles for.
|
|
10
|
+
*
|
|
11
|
+
* Distinct from `Language` in `i18n.ts`, which is the operator-configured
|
|
12
|
+
* **content** language pool — BCP-47, database rows, extended at runtime by an
|
|
13
|
+
* operator. This enum is extended only by shipping a bundle and changing this
|
|
14
|
+
* line. `normalise` in `backend/src/kernel/i18n/request-language.ts` is the
|
|
15
|
+
* bridge between the two, and a bridge needs both ends named.
|
|
16
|
+
*/
|
|
17
|
+
export const SupportedLanguageSchema = z.enum(['en', 'pl']);
|
|
18
|
+
/** Convenience: every supported value as a runtime array. */
|
|
19
|
+
export const SUPPORTED_LANGUAGES = SupportedLanguageSchema.options;
|
|
20
|
+
/** The language the platform answers in when nothing else resolves. */
|
|
21
|
+
export const LANGUAGE_FALLBACK = 'en';
|
|
22
|
+
//# sourceMappingURL=platform-language.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform-language.js","sourceRoot":"","sources":["../src/platform-language.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,yEAAyE;AACzE,gEAAgE;AAEhE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;AAG5D,6DAA6D;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,uBAAuB,CAAC,OAAO,CAAC;AAEnE,uEAAuE;AACvE,MAAM,CAAC,MAAM,iBAAiB,GAAsB,IAAI,CAAC"}
|