@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
package/dist/megamenu.js
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
// Megamenu — feature 015 contract surface.
|
|
2
|
+
// Pages, Bindings, Items (with a discriminated-union target shape), the
|
|
3
|
+
// resolved storefront payload. Per Principle V these schemas are the
|
|
4
|
+
// source of truth for every HTTP boundary in the new `megamenu` module.
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { isoDateTimeSchema, multilingualStringSchema, uuidSchema } from './common.js';
|
|
7
|
+
// ────────────────────────────────────────────────────────────────────
|
|
8
|
+
// Domain primitives
|
|
9
|
+
// ────────────────────────────────────────────────────────────────────
|
|
10
|
+
export const megamenuItemKindSchema = z.enum([
|
|
11
|
+
'category-link',
|
|
12
|
+
'cms-page-link',
|
|
13
|
+
'external-link',
|
|
14
|
+
'button',
|
|
15
|
+
'asset',
|
|
16
|
+
'cms-block-embed',
|
|
17
|
+
]);
|
|
18
|
+
export const megamenuButtonVariantSchema = z.enum(['primary', 'secondary', 'ghost']);
|
|
19
|
+
export const megamenuIconPositionSchema = z.enum(['left', 'right']);
|
|
20
|
+
export const megamenuEmbedSideSchema = z.enum(['left', 'right']);
|
|
21
|
+
export const megamenuAssetKindSchema = z.enum(['image', 'video']);
|
|
22
|
+
const externalUrlRegex = /^(?:https?:\/\/|tel:|mailto:)/i;
|
|
23
|
+
const externalUrlSchema = z
|
|
24
|
+
.string()
|
|
25
|
+
.min(1)
|
|
26
|
+
.max(2048)
|
|
27
|
+
.refine((value) => externalUrlRegex.test(value), {
|
|
28
|
+
message: 'External link must use http://, https://, tel:, or mailto: scheme.',
|
|
29
|
+
});
|
|
30
|
+
const buttonUrlSchema = z.string().min(1).max(2048);
|
|
31
|
+
const optionalIconShape = {
|
|
32
|
+
iconAssetId: uuidSchema.nullable().optional(),
|
|
33
|
+
iconPosition: megamenuIconPositionSchema.nullable().optional(),
|
|
34
|
+
};
|
|
35
|
+
// ────────────────────────────────────────────────────────────────────
|
|
36
|
+
// Item-level discriminated union — the wire shape carries `kind` at
|
|
37
|
+
// the item level and the kind-specific fields collapsed into `target`.
|
|
38
|
+
// ────────────────────────────────────────────────────────────────────
|
|
39
|
+
export const megamenuItemBaseFields = {
|
|
40
|
+
id: uuidSchema.optional(),
|
|
41
|
+
parentId: uuidSchema.nullable().optional(),
|
|
42
|
+
position: z.number().int().nonnegative(),
|
|
43
|
+
labels: multilingualStringSchema,
|
|
44
|
+
descriptions: multilingualStringSchema.nullable().optional(),
|
|
45
|
+
};
|
|
46
|
+
export const categoryLinkTargetSchema = z.object({
|
|
47
|
+
categoryId: uuidSchema,
|
|
48
|
+
...optionalIconShape,
|
|
49
|
+
});
|
|
50
|
+
export const cmsPageLinkTargetSchema = z.object({
|
|
51
|
+
pageId: uuidSchema,
|
|
52
|
+
...optionalIconShape,
|
|
53
|
+
});
|
|
54
|
+
export const externalLinkTargetSchema = z.object({
|
|
55
|
+
url: externalUrlSchema,
|
|
56
|
+
...optionalIconShape,
|
|
57
|
+
});
|
|
58
|
+
export const buttonTargetSchema = z.object({
|
|
59
|
+
url: buttonUrlSchema,
|
|
60
|
+
variant: megamenuButtonVariantSchema,
|
|
61
|
+
});
|
|
62
|
+
export const assetTargetSchema = z.union([
|
|
63
|
+
z.object({
|
|
64
|
+
assetId: uuidSchema,
|
|
65
|
+
kind: megamenuAssetKindSchema,
|
|
66
|
+
}),
|
|
67
|
+
z.object({
|
|
68
|
+
/** Free URL — replaced with assetId at save time via Assets Library import. */
|
|
69
|
+
url: z.string().url(),
|
|
70
|
+
kind: megamenuAssetKindSchema,
|
|
71
|
+
}),
|
|
72
|
+
]);
|
|
73
|
+
export const cmsBlockEmbedTargetSchema = z.object({
|
|
74
|
+
blockId: uuidSchema,
|
|
75
|
+
embedSide: megamenuEmbedSideSchema,
|
|
76
|
+
});
|
|
77
|
+
export const megamenuItemSchema = z.discriminatedUnion('kind', [
|
|
78
|
+
z.object({ ...megamenuItemBaseFields, kind: z.literal('category-link'), target: categoryLinkTargetSchema }),
|
|
79
|
+
z.object({ ...megamenuItemBaseFields, kind: z.literal('cms-page-link'), target: cmsPageLinkTargetSchema }),
|
|
80
|
+
z.object({ ...megamenuItemBaseFields, kind: z.literal('external-link'), target: externalLinkTargetSchema }),
|
|
81
|
+
z.object({ ...megamenuItemBaseFields, kind: z.literal('button'), target: buttonTargetSchema }),
|
|
82
|
+
z.object({ ...megamenuItemBaseFields, kind: z.literal('asset'), target: assetTargetSchema }),
|
|
83
|
+
z.object({ ...megamenuItemBaseFields, kind: z.literal('cms-block-embed'), target: cmsBlockEmbedTargetSchema }),
|
|
84
|
+
]);
|
|
85
|
+
// ────────────────────────────────────────────────────────────────────
|
|
86
|
+
// Megamenu (configuration row)
|
|
87
|
+
// ────────────────────────────────────────────────────────────────────
|
|
88
|
+
export const megamenuBindingSchema = z.object({
|
|
89
|
+
salesChannelId: uuidSchema,
|
|
90
|
+
language: z.string().min(2).max(8),
|
|
91
|
+
active: z.boolean(),
|
|
92
|
+
version: z.number().int(),
|
|
93
|
+
createdAt: isoDateTimeSchema,
|
|
94
|
+
updatedAt: isoDateTimeSchema,
|
|
95
|
+
});
|
|
96
|
+
export const megamenuSummarySchema = z.object({
|
|
97
|
+
id: uuidSchema,
|
|
98
|
+
name: z.string(),
|
|
99
|
+
description: z.string().nullable(),
|
|
100
|
+
version: z.number().int(),
|
|
101
|
+
bindings: z.array(megamenuBindingSchema),
|
|
102
|
+
activeIn: z.number().int().nonnegative(),
|
|
103
|
+
createdAt: isoDateTimeSchema,
|
|
104
|
+
updatedAt: isoDateTimeSchema,
|
|
105
|
+
});
|
|
106
|
+
export const megamenuDetailSchema = megamenuSummarySchema.extend({
|
|
107
|
+
items: z.array(megamenuItemSchema),
|
|
108
|
+
});
|
|
109
|
+
export const createMegamenuRequestSchema = z.object({
|
|
110
|
+
name: z.string().min(1).max(200),
|
|
111
|
+
description: z.string().max(2000).nullable().optional(),
|
|
112
|
+
});
|
|
113
|
+
export const patchMegamenuRequestSchema = z
|
|
114
|
+
.object({
|
|
115
|
+
name: z.string().min(1).max(200).optional(),
|
|
116
|
+
description: z.string().max(2000).nullable().optional(),
|
|
117
|
+
version: z.number().int().optional(),
|
|
118
|
+
})
|
|
119
|
+
.refine((x) => Object.keys(x).length > 0, { message: 'At least one field required.' });
|
|
120
|
+
export const putItemsRequestSchema = z.object({
|
|
121
|
+
items: z.array(megamenuItemSchema),
|
|
122
|
+
version: z.number().int(),
|
|
123
|
+
});
|
|
124
|
+
export const addBindingRequestSchema = z.object({
|
|
125
|
+
salesChannelId: uuidSchema,
|
|
126
|
+
language: z.string().min(2).max(8),
|
|
127
|
+
});
|
|
128
|
+
export const activateBindingRequestSchema = addBindingRequestSchema;
|
|
129
|
+
// ────────────────────────────────────────────────────────────────────
|
|
130
|
+
// Storefront resolved payload (recursive)
|
|
131
|
+
// ────────────────────────────────────────────────────────────────────
|
|
132
|
+
export const megamenuResolvedIconSchema = z.object({
|
|
133
|
+
assetId: uuidSchema,
|
|
134
|
+
url: z.string(),
|
|
135
|
+
position: megamenuIconPositionSchema,
|
|
136
|
+
});
|
|
137
|
+
export const megamenuResolvedAssetSchema = z.object({
|
|
138
|
+
id: uuidSchema,
|
|
139
|
+
kind: megamenuAssetKindSchema,
|
|
140
|
+
url: z.string(),
|
|
141
|
+
label: z.string().nullable(),
|
|
142
|
+
});
|
|
143
|
+
export const megamenuResolvedBlockSchema = z.object({
|
|
144
|
+
id: uuidSchema,
|
|
145
|
+
code: z.string(),
|
|
146
|
+
language: z.string(),
|
|
147
|
+
content: z.object({ schemaVersion: z.number().int(), data: z.unknown() }),
|
|
148
|
+
});
|
|
149
|
+
const resolvedMenuItemBase = z.object({
|
|
150
|
+
id: uuidSchema,
|
|
151
|
+
parentId: uuidSchema.nullable(),
|
|
152
|
+
kind: megamenuItemKindSchema,
|
|
153
|
+
label: z.string(),
|
|
154
|
+
description: z.string().nullable().optional(),
|
|
155
|
+
url: z.string().optional(),
|
|
156
|
+
icon: megamenuResolvedIconSchema.nullable().optional(),
|
|
157
|
+
variant: megamenuButtonVariantSchema.optional(),
|
|
158
|
+
asset: megamenuResolvedAssetSchema.optional(),
|
|
159
|
+
block: megamenuResolvedBlockSchema.optional(),
|
|
160
|
+
embedSide: megamenuEmbedSideSchema.optional(),
|
|
161
|
+
});
|
|
162
|
+
export const resolvedMenuItemSchema = z.lazy(() => resolvedMenuItemBase.extend({ children: z.array(resolvedMenuItemSchema) }));
|
|
163
|
+
export const resolvedMegamenuSchema = z.object({
|
|
164
|
+
megamenuId: uuidSchema,
|
|
165
|
+
name: z.string(),
|
|
166
|
+
language: z.string(),
|
|
167
|
+
items: z.array(resolvedMenuItemSchema),
|
|
168
|
+
});
|
|
169
|
+
// ────────────────────────────────────────────────────────────────────
|
|
170
|
+
// Activate response — surfaces the previously-active menu so the admin
|
|
171
|
+
// can render a "switched from <name>" confirmation.
|
|
172
|
+
// ────────────────────────────────────────────────────────────────────
|
|
173
|
+
export const activateBindingResponseSchema = z.object({
|
|
174
|
+
activated: z.object({
|
|
175
|
+
megamenuId: uuidSchema,
|
|
176
|
+
salesChannelId: uuidSchema,
|
|
177
|
+
language: z.string(),
|
|
178
|
+
}),
|
|
179
|
+
previouslyActive: z
|
|
180
|
+
.object({
|
|
181
|
+
megamenuId: uuidSchema,
|
|
182
|
+
name: z.string(),
|
|
183
|
+
})
|
|
184
|
+
.nullable(),
|
|
185
|
+
});
|
|
186
|
+
//# sourceMappingURL=megamenu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"megamenu.js","sourceRoot":"","sources":["../src/megamenu.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Storefront actions a Meta event can be bound to — one entry per emitter in
|
|
4
|
+
* `storefront/lib/analytics/ecommerce.ts`. Same closed set as the LinkedIn
|
|
5
|
+
* module: an operator cannot map an action the storefront never emits.
|
|
6
|
+
*/
|
|
7
|
+
export declare const metaTriggerActionSchema: z.ZodEnum<{
|
|
8
|
+
contact_form_submitted: "contact_form_submitted";
|
|
9
|
+
place_order_clicked: "place_order_clicked";
|
|
10
|
+
add_to_cart: "add_to_cart";
|
|
11
|
+
add_to_quote_request: "add_to_quote_request";
|
|
12
|
+
add_to_shopping_list: "add_to_shopping_list";
|
|
13
|
+
begin_checkout: "begin_checkout";
|
|
14
|
+
purchase: "purchase";
|
|
15
|
+
product_viewed: "product_viewed";
|
|
16
|
+
}>;
|
|
17
|
+
export type MetaTriggerAction = z.infer<typeof metaTriggerActionSchema>;
|
|
18
|
+
export declare const META_TRIGGER_ACTIONS: readonly MetaTriggerAction[];
|
|
19
|
+
/**
|
|
20
|
+
* Meta's documented standard event for each action, or `null` where Meta has no
|
|
21
|
+
* matching standard name.
|
|
22
|
+
*
|
|
23
|
+
* Fixed in code, not operator-editable: Meta's optimisation, catalogue
|
|
24
|
+
* matching, and ROAS reporting key off these exact names, so letting an
|
|
25
|
+
* operator rename them would quietly downgrade their reporting. Actions with
|
|
26
|
+
* `null` still accept a custom mapping — that is what custom mappings are for.
|
|
27
|
+
*/
|
|
28
|
+
export declare const META_STANDARD_EVENTS: Record<MetaTriggerAction, string | null>;
|
|
29
|
+
/** Meta Pixel ID as shown in Events Manager. */
|
|
30
|
+
export declare const metaPixelIdSchema: z.ZodString;
|
|
31
|
+
/** Custom event name: letters, digits, underscore; Meta's practical shape. */
|
|
32
|
+
export declare const metaEventNameSchema: z.ZodString;
|
|
33
|
+
export declare const metaCustomEventMappingSchema: z.ZodObject<{
|
|
34
|
+
id: z.ZodString;
|
|
35
|
+
salesChannelId: z.ZodNullable<z.ZodString>;
|
|
36
|
+
triggerAction: z.ZodEnum<{
|
|
37
|
+
contact_form_submitted: "contact_form_submitted";
|
|
38
|
+
place_order_clicked: "place_order_clicked";
|
|
39
|
+
add_to_cart: "add_to_cart";
|
|
40
|
+
add_to_quote_request: "add_to_quote_request";
|
|
41
|
+
add_to_shopping_list: "add_to_shopping_list";
|
|
42
|
+
begin_checkout: "begin_checkout";
|
|
43
|
+
purchase: "purchase";
|
|
44
|
+
product_viewed: "product_viewed";
|
|
45
|
+
}>;
|
|
46
|
+
eventName: z.ZodString;
|
|
47
|
+
enabled: z.ZodBoolean;
|
|
48
|
+
version: z.ZodNumber;
|
|
49
|
+
createdAt: z.ZodString;
|
|
50
|
+
updatedAt: z.ZodString;
|
|
51
|
+
}, z.core.$strip>;
|
|
52
|
+
export type MetaCustomEventMapping = z.infer<typeof metaCustomEventMappingSchema>;
|
|
53
|
+
export declare const createMetaCustomEventMappingSchema: z.ZodObject<{
|
|
54
|
+
salesChannelId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
55
|
+
triggerAction: z.ZodEnum<{
|
|
56
|
+
contact_form_submitted: "contact_form_submitted";
|
|
57
|
+
place_order_clicked: "place_order_clicked";
|
|
58
|
+
add_to_cart: "add_to_cart";
|
|
59
|
+
add_to_quote_request: "add_to_quote_request";
|
|
60
|
+
add_to_shopping_list: "add_to_shopping_list";
|
|
61
|
+
begin_checkout: "begin_checkout";
|
|
62
|
+
purchase: "purchase";
|
|
63
|
+
product_viewed: "product_viewed";
|
|
64
|
+
}>;
|
|
65
|
+
eventName: z.ZodString;
|
|
66
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
67
|
+
}, z.core.$strip>;
|
|
68
|
+
export type CreateMetaCustomEventMapping = z.infer<typeof createMetaCustomEventMappingSchema>;
|
|
69
|
+
export declare const updateMetaCustomEventMappingSchema: z.ZodObject<{
|
|
70
|
+
salesChannelId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
|
|
71
|
+
triggerAction: z.ZodOptional<z.ZodEnum<{
|
|
72
|
+
contact_form_submitted: "contact_form_submitted";
|
|
73
|
+
place_order_clicked: "place_order_clicked";
|
|
74
|
+
add_to_cart: "add_to_cart";
|
|
75
|
+
add_to_quote_request: "add_to_quote_request";
|
|
76
|
+
add_to_shopping_list: "add_to_shopping_list";
|
|
77
|
+
begin_checkout: "begin_checkout";
|
|
78
|
+
purchase: "purchase";
|
|
79
|
+
product_viewed: "product_viewed";
|
|
80
|
+
}>>;
|
|
81
|
+
eventName: z.ZodOptional<z.ZodString>;
|
|
82
|
+
enabled: z.ZodOptional<z.ZodBoolean>;
|
|
83
|
+
version: z.ZodNumber;
|
|
84
|
+
}, z.core.$strip>;
|
|
85
|
+
export type UpdateMetaCustomEventMapping = z.infer<typeof updateMetaCustomEventMappingSchema>;
|
|
86
|
+
export declare const metaStorefrontMappingSchema: z.ZodObject<{
|
|
87
|
+
triggerAction: z.ZodEnum<{
|
|
88
|
+
contact_form_submitted: "contact_form_submitted";
|
|
89
|
+
place_order_clicked: "place_order_clicked";
|
|
90
|
+
add_to_cart: "add_to_cart";
|
|
91
|
+
add_to_quote_request: "add_to_quote_request";
|
|
92
|
+
add_to_shopping_list: "add_to_shopping_list";
|
|
93
|
+
begin_checkout: "begin_checkout";
|
|
94
|
+
purchase: "purchase";
|
|
95
|
+
product_viewed: "product_viewed";
|
|
96
|
+
}>;
|
|
97
|
+
eventName: z.ZodString;
|
|
98
|
+
}, z.core.$strip>;
|
|
99
|
+
export type MetaStorefrontMapping = z.infer<typeof metaStorefrontMappingSchema>;
|
|
100
|
+
export declare const metaStorefrontConfigSchema: z.ZodObject<{
|
|
101
|
+
enabled: z.ZodBoolean;
|
|
102
|
+
pixelId: z.ZodNullable<z.ZodString>;
|
|
103
|
+
requireConsent: z.ZodBoolean;
|
|
104
|
+
customEvents: z.ZodArray<z.ZodObject<{
|
|
105
|
+
triggerAction: z.ZodEnum<{
|
|
106
|
+
contact_form_submitted: "contact_form_submitted";
|
|
107
|
+
place_order_clicked: "place_order_clicked";
|
|
108
|
+
add_to_cart: "add_to_cart";
|
|
109
|
+
add_to_quote_request: "add_to_quote_request";
|
|
110
|
+
add_to_shopping_list: "add_to_shopping_list";
|
|
111
|
+
begin_checkout: "begin_checkout";
|
|
112
|
+
purchase: "purchase";
|
|
113
|
+
product_viewed: "product_viewed";
|
|
114
|
+
}>;
|
|
115
|
+
eventName: z.ZodString;
|
|
116
|
+
}, z.core.$strip>>;
|
|
117
|
+
}, z.core.$strip>;
|
|
118
|
+
export type MetaStorefrontConfig = z.infer<typeof metaStorefrontConfigSchema>;
|
|
119
|
+
/** Fully-off config — the shape every failure path degrades to. */
|
|
120
|
+
export declare const META_DISABLED_CONFIG: MetaStorefrontConfig;
|
|
121
|
+
export declare const META_ADS_SETTING_CODES: {
|
|
122
|
+
readonly ENABLED: "meta_ads.enabled";
|
|
123
|
+
readonly PIXEL_ID: "meta_ads.pixel_id";
|
|
124
|
+
readonly REQUIRE_CONSENT: "meta_ads.require_consent";
|
|
125
|
+
};
|
|
126
|
+
//# sourceMappingURL=meta-ads.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-ads.d.ts","sourceRoot":"","sources":["../src/meta-ads.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAOxB;;;;GAIG;AACH,eAAO,MAAM,uBAAuB;;;;;;;;;EASlC,CAAC;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,oBAAoB,EAAE,SAAS,iBAAiB,EAC5B,CAAC;AAElC;;;;;;;;GAQG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CASzE,CAAC;AAEF,gDAAgD;AAChD,eAAO,MAAM,iBAAiB,aAE2B,CAAC;AAE1D,8EAA8E;AAC9E,eAAO,MAAM,mBAAmB,aAEmC,CAAC;AAMpE,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;iBAUvC,CAAC;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAElF,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;iBAK7C,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAE9F,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;iBAO7C,CAAC;AACH,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAM9F,eAAO,MAAM,2BAA2B;;;;;;;;;;;;iBAGtC,CAAC;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEhF,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;iBAOrC,CAAC;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E,mEAAmE;AACnE,eAAO,MAAM,oBAAoB,EAAE,oBAKlC,CAAC;AAMF,eAAO,MAAM,sBAAsB;;;;CAIzB,CAAC"}
|
package/dist/meta-ads.js
ADDED
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
// Meta Ads module — feature 064 contract surface.
|
|
2
|
+
//
|
|
3
|
+
// Holds the admin custom-event-mapping DTOs, the storefront per-channel config
|
|
4
|
+
// read, the storefront-action enum, the fixed action → Meta standard event map,
|
|
5
|
+
// and `META_ADS_SETTING_CODES`.
|
|
6
|
+
import { z } from 'zod';
|
|
7
|
+
import { isoDateTimeSchema, uuidSchema } from './common.js';
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
// (1) Enumerations
|
|
10
|
+
// ---------------------------------------------------------------------------
|
|
11
|
+
/**
|
|
12
|
+
* Storefront actions a Meta event can be bound to — one entry per emitter in
|
|
13
|
+
* `storefront/lib/analytics/ecommerce.ts`. Same closed set as the LinkedIn
|
|
14
|
+
* module: an operator cannot map an action the storefront never emits.
|
|
15
|
+
*/
|
|
16
|
+
export const metaTriggerActionSchema = z.enum([
|
|
17
|
+
'product_viewed',
|
|
18
|
+
'add_to_cart',
|
|
19
|
+
'add_to_quote_request',
|
|
20
|
+
'add_to_shopping_list',
|
|
21
|
+
'begin_checkout',
|
|
22
|
+
'place_order_clicked',
|
|
23
|
+
'purchase',
|
|
24
|
+
'contact_form_submitted',
|
|
25
|
+
]);
|
|
26
|
+
export const META_TRIGGER_ACTIONS = metaTriggerActionSchema.options;
|
|
27
|
+
/**
|
|
28
|
+
* Meta's documented standard event for each action, or `null` where Meta has no
|
|
29
|
+
* matching standard name.
|
|
30
|
+
*
|
|
31
|
+
* Fixed in code, not operator-editable: Meta's optimisation, catalogue
|
|
32
|
+
* matching, and ROAS reporting key off these exact names, so letting an
|
|
33
|
+
* operator rename them would quietly downgrade their reporting. Actions with
|
|
34
|
+
* `null` still accept a custom mapping — that is what custom mappings are for.
|
|
35
|
+
*/
|
|
36
|
+
export const META_STANDARD_EVENTS = {
|
|
37
|
+
product_viewed: 'ViewContent',
|
|
38
|
+
add_to_cart: 'AddToCart',
|
|
39
|
+
add_to_quote_request: 'Lead',
|
|
40
|
+
add_to_shopping_list: null,
|
|
41
|
+
begin_checkout: 'InitiateCheckout',
|
|
42
|
+
place_order_clicked: null,
|
|
43
|
+
purchase: 'Purchase',
|
|
44
|
+
contact_form_submitted: 'Lead',
|
|
45
|
+
};
|
|
46
|
+
/** Meta Pixel ID as shown in Events Manager. */
|
|
47
|
+
export const metaPixelIdSchema = z
|
|
48
|
+
.string()
|
|
49
|
+
.regex(/^[0-9]{1,32}$/, 'Pixel ID must be 1-32 digits');
|
|
50
|
+
/** Custom event name: letters, digits, underscore; Meta's practical shape. */
|
|
51
|
+
export const metaEventNameSchema = z
|
|
52
|
+
.string()
|
|
53
|
+
.regex(/^[A-Za-z][A-Za-z0-9_]{0,63}$/, 'Invalid Meta event name');
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
// (2) Admin DTOs — custom event mappings
|
|
56
|
+
// ---------------------------------------------------------------------------
|
|
57
|
+
export const metaCustomEventMappingSchema = z.object({
|
|
58
|
+
id: uuidSchema,
|
|
59
|
+
/** `null` = applies to every sales channel. */
|
|
60
|
+
salesChannelId: uuidSchema.nullable(),
|
|
61
|
+
triggerAction: metaTriggerActionSchema,
|
|
62
|
+
eventName: metaEventNameSchema,
|
|
63
|
+
enabled: z.boolean(),
|
|
64
|
+
version: z.number().int().positive(),
|
|
65
|
+
createdAt: isoDateTimeSchema,
|
|
66
|
+
updatedAt: isoDateTimeSchema,
|
|
67
|
+
});
|
|
68
|
+
export const createMetaCustomEventMappingSchema = z.object({
|
|
69
|
+
salesChannelId: uuidSchema.nullable().optional(),
|
|
70
|
+
triggerAction: metaTriggerActionSchema,
|
|
71
|
+
eventName: metaEventNameSchema,
|
|
72
|
+
enabled: z.boolean().optional(),
|
|
73
|
+
});
|
|
74
|
+
export const updateMetaCustomEventMappingSchema = z.object({
|
|
75
|
+
salesChannelId: uuidSchema.nullable().optional(),
|
|
76
|
+
triggerAction: metaTriggerActionSchema.optional(),
|
|
77
|
+
eventName: metaEventNameSchema.optional(),
|
|
78
|
+
enabled: z.boolean().optional(),
|
|
79
|
+
/** Current version held by the client — a mismatch is a 409. */
|
|
80
|
+
version: z.number().int().positive(),
|
|
81
|
+
});
|
|
82
|
+
// ---------------------------------------------------------------------------
|
|
83
|
+
// (3) Storefront config
|
|
84
|
+
// ---------------------------------------------------------------------------
|
|
85
|
+
export const metaStorefrontMappingSchema = z.object({
|
|
86
|
+
triggerAction: metaTriggerActionSchema,
|
|
87
|
+
eventName: metaEventNameSchema,
|
|
88
|
+
});
|
|
89
|
+
export const metaStorefrontConfigSchema = z.object({
|
|
90
|
+
enabled: z.boolean(),
|
|
91
|
+
/** `null` when unset — a blank Pixel ID means "not configured" (FR-004). */
|
|
92
|
+
pixelId: z.string().nullable(),
|
|
93
|
+
requireConsent: z.boolean(),
|
|
94
|
+
/** Custom events reported *in addition to* the standard event for an action. */
|
|
95
|
+
customEvents: z.array(metaStorefrontMappingSchema),
|
|
96
|
+
});
|
|
97
|
+
/** Fully-off config — the shape every failure path degrades to. */
|
|
98
|
+
export const META_DISABLED_CONFIG = {
|
|
99
|
+
enabled: false,
|
|
100
|
+
pixelId: null,
|
|
101
|
+
requireConsent: true,
|
|
102
|
+
customEvents: [],
|
|
103
|
+
};
|
|
104
|
+
// ---------------------------------------------------------------------------
|
|
105
|
+
// (4) Setting codes
|
|
106
|
+
// ---------------------------------------------------------------------------
|
|
107
|
+
export const META_ADS_SETTING_CODES = {
|
|
108
|
+
ENABLED: 'meta_ads.enabled',
|
|
109
|
+
PIXEL_ID: 'meta_ads.pixel_id',
|
|
110
|
+
REQUIRE_CONSENT: 'meta_ads.require_consent',
|
|
111
|
+
};
|
|
112
|
+
//# sourceMappingURL=meta-ads.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meta-ads.js","sourceRoot":"","sources":["../src/meta-ads.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,+EAA+E;AAC/E,gFAAgF;AAChF,gCAAgC;AAEhC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE5D,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC5C,gBAAgB;IAChB,aAAa;IACb,sBAAsB;IACtB,sBAAsB;IACtB,gBAAgB;IAChB,qBAAqB;IACrB,UAAU;IACV,wBAAwB;CACzB,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,oBAAoB,GAC/B,uBAAuB,CAAC,OAAO,CAAC;AAElC;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA6C;IAC5E,cAAc,EAAE,aAAa;IAC7B,WAAW,EAAE,WAAW;IACxB,oBAAoB,EAAE,MAAM;IAC5B,oBAAoB,EAAE,IAAI;IAC1B,cAAc,EAAE,kBAAkB;IAClC,mBAAmB,EAAE,IAAI;IACzB,QAAQ,EAAE,UAAU;IACpB,sBAAsB,EAAE,MAAM;CAC/B,CAAC;AAEF,gDAAgD;AAChD,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC;KAC/B,MAAM,EAAE;KACR,KAAK,CAAC,eAAe,EAAE,8BAA8B,CAAC,CAAC;AAE1D,8EAA8E;AAC9E,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,EAAE;KACR,KAAK,CAAC,8BAA8B,EAAE,yBAAyB,CAAC,CAAC;AAEpE,8EAA8E;AAC9E,yCAAyC;AACzC,8EAA8E;AAE9E,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,EAAE,EAAE,UAAU;IACd,+CAA+C;IAC/C,cAAc,EAAE,UAAU,CAAC,QAAQ,EAAE;IACrC,aAAa,EAAE,uBAAuB;IACtC,SAAS,EAAE,mBAAmB;IAC9B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;IACpC,SAAS,EAAE,iBAAiB;IAC5B,SAAS,EAAE,iBAAiB;CAC7B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC,MAAM,CAAC;IACzD,cAAc,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAChD,aAAa,EAAE,uBAAuB;IACtC,SAAS,EAAE,mBAAmB;IAC9B,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,CAAC,MAAM,CAAC;IACzD,cAAc,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAChD,aAAa,EAAE,uBAAuB,CAAC,QAAQ,EAAE;IACjD,SAAS,EAAE,mBAAmB,CAAC,QAAQ,EAAE;IACzC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,gEAAgE;IAChE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE;CACrC,CAAC,CAAC;AAGH,8EAA8E;AAC9E,wBAAwB;AACxB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,aAAa,EAAE,uBAAuB;IACtC,SAAS,EAAE,mBAAmB;CAC/B,CAAC,CAAC;AAGH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,CAAC,MAAM,CAAC;IACjD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,4EAA4E;IAC5E,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE;IAC3B,gFAAgF;IAChF,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC;CACnD,CAAC,CAAC;AAGH,mEAAmE;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAyB;IACxD,OAAO,EAAE,KAAK;IACd,OAAO,EAAE,IAAI;IACb,cAAc,EAAE,IAAI;IACpB,YAAY,EAAE,EAAE;CACjB,CAAC;AAEF,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,OAAO,EAAE,kBAAkB;IAC3B,QAAQ,EAAE,mBAAmB;IAC7B,eAAe,EAAE,0BAA0B;CACnC,CAAC"}
|