wiil-core-js 0.0.82
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 +174 -0
- package/dist/core/account/index.d.ts +7 -0
- package/dist/core/account/index.js +23 -0
- package/dist/core/account/organization.schema.d.ts +118 -0
- package/dist/core/account/organization.schema.js +91 -0
- package/dist/core/account/project.schema.d.ts +121 -0
- package/dist/core/account/project.schema.js +102 -0
- package/dist/core/account/supported-business-verticals.d.ts +8 -0
- package/dist/core/account/supported-business-verticals.js +23 -0
- package/dist/core/assistant-setups/assistant-setup-result.schema.d.ts +115 -0
- package/dist/core/assistant-setups/assistant-setup-result.schema.js +17 -0
- package/dist/core/assistant-setups/base-assistant-setup.schema.d.ts +61 -0
- package/dist/core/assistant-setups/base-assistant-setup.schema.js +29 -0
- package/dist/core/assistant-setups/index.d.ts +4 -0
- package/dist/core/assistant-setups/index.js +21 -0
- package/dist/core/assistant-setups/phone-assistant-setup.schema.d.ts +63 -0
- package/dist/core/assistant-setups/phone-assistant-setup.schema.js +14 -0
- package/dist/core/assistant-setups/web-assitant-setup.schema.d.ts +56 -0
- package/dist/core/assistant-setups/web-assitant-setup.schema.js +17 -0
- package/dist/core/base.schema.d.ts +34 -0
- package/dist/core/base.schema.js +36 -0
- package/dist/core/business-mgt/appointment-additional-info.schema.d.ts +63 -0
- package/dist/core/business-mgt/appointment-additional-info.schema.js +53 -0
- package/dist/core/business-mgt/appointment-field-config.schema.d.ts +251 -0
- package/dist/core/business-mgt/appointment-field-config.schema.js +49 -0
- package/dist/core/business-mgt/bookings.shared.schema.d.ts +47 -0
- package/dist/core/business-mgt/bookings.shared.schema.js +60 -0
- package/dist/core/business-mgt/business-location.schema.d.ts +327 -0
- package/dist/core/business-mgt/business-location.schema.js +176 -0
- package/dist/core/business-mgt/customer-management/customer-group.schema.d.ts +87 -0
- package/dist/core/business-mgt/customer-management/customer-group.schema.js +53 -0
- package/dist/core/business-mgt/customer-management/customer.schema.d.ts +156 -0
- package/dist/core/business-mgt/customer-management/customer.schema.js +93 -0
- package/dist/core/business-mgt/customer-management/index.d.ts +7 -0
- package/dist/core/business-mgt/customer-management/index.js +23 -0
- package/dist/core/business-mgt/customer-management/shipping-address.schema.d.ts +112 -0
- package/dist/core/business-mgt/customer-management/shipping-address.schema.js +79 -0
- package/dist/core/business-mgt/customer.schema.d.ts +111 -0
- package/dist/core/business-mgt/customer.schema.js +73 -0
- package/dist/core/business-mgt/discount-rule.schema.d.ts +183 -0
- package/dist/core/business-mgt/discount-rule.schema.js +108 -0
- package/dist/core/business-mgt/index.d.ts +16 -0
- package/dist/core/business-mgt/index.js +38 -0
- package/dist/core/business-mgt/menu-config.schema.d.ts +165 -0
- package/dist/core/business-mgt/menu-config.schema.js +86 -0
- package/dist/core/business-mgt/menu-management/index.d.ts +11 -0
- package/dist/core/business-mgt/menu-management/index.js +27 -0
- package/dist/core/business-mgt/menu-management/menu-catalog.schema.d.ts +386 -0
- package/dist/core/business-mgt/menu-management/menu-catalog.schema.js +58 -0
- package/dist/core/business-mgt/menu-management/menu-config.schema.d.ts +301 -0
- package/dist/core/business-mgt/menu-management/menu-config.schema.js +169 -0
- package/dist/core/business-mgt/menu-management/menu-item-variant.schema.d.ts +143 -0
- package/dist/core/business-mgt/menu-management/menu-item-variant.schema.js +86 -0
- package/dist/core/business-mgt/menu-management/menu-pricing-rule.schema.d.ts +239 -0
- package/dist/core/business-mgt/menu-management/menu-pricing-rule.schema.js +117 -0
- package/dist/core/business-mgt/menu-management/menu-set.schema.d.ts +420 -0
- package/dist/core/business-mgt/menu-management/menu-set.schema.js +283 -0
- package/dist/core/business-mgt/menu-management/menu.order.schema.d.ts +654 -0
- package/dist/core/business-mgt/menu-management/menu.order.schema.js +204 -0
- package/dist/core/business-mgt/menu-management/modifier.schema.d.ts +585 -0
- package/dist/core/business-mgt/menu-management/modifier.schema.js +341 -0
- package/dist/core/business-mgt/menu.order.schema.d.ts +335 -0
- package/dist/core/business-mgt/menu.order.schema.js +149 -0
- package/dist/core/business-mgt/order.schema.d.ts +222 -0
- package/dist/core/business-mgt/order.schema.js +205 -0
- package/dist/core/business-mgt/pricing-rule.shared.schema.d.ts +56 -0
- package/dist/core/business-mgt/pricing-rule.shared.schema.js +68 -0
- package/dist/core/business-mgt/product-config.schema.d.ts +177 -0
- package/dist/core/business-mgt/product-config.schema.js +106 -0
- package/dist/core/business-mgt/product-management/index.d.ts +12 -0
- package/dist/core/business-mgt/product-management/index.js +28 -0
- package/dist/core/business-mgt/product-management/product-axis-binding.schema.d.ts +54 -0
- package/dist/core/business-mgt/product-management/product-axis-binding.schema.js +54 -0
- package/dist/core/business-mgt/product-management/product-config.schema.d.ts +1042 -0
- package/dist/core/business-mgt/product-management/product-config.schema.js +392 -0
- package/dist/core/business-mgt/product-management/product-display.schema.d.ts +548 -0
- package/dist/core/business-mgt/product-management/product-display.schema.js +80 -0
- package/dist/core/business-mgt/product-management/product-order.schema.d.ts +493 -0
- package/dist/core/business-mgt/product-management/product-order.schema.js +158 -0
- package/dist/core/business-mgt/product-management/product-pricing-rule.schema.d.ts +167 -0
- package/dist/core/business-mgt/product-management/product-pricing-rule.schema.js +68 -0
- package/dist/core/business-mgt/product-management/product-set.schema.d.ts +488 -0
- package/dist/core/business-mgt/product-management/product-set.schema.js +273 -0
- package/dist/core/business-mgt/product-management/product-variant-axis.schema.d.ts +156 -0
- package/dist/core/business-mgt/product-management/product-variant-axis.schema.js +98 -0
- package/dist/core/business-mgt/product-management/product-variant.schema.d.ts +219 -0
- package/dist/core/business-mgt/product-management/product-variant.schema.js +130 -0
- package/dist/core/business-mgt/product-order.schema.d.ts +326 -0
- package/dist/core/business-mgt/product-order.schema.js +153 -0
- package/dist/core/business-mgt/property-config.schema.d.ts +621 -0
- package/dist/core/business-mgt/property-config.schema.js +224 -0
- package/dist/core/business-mgt/property-inquiry.schema.d.ts +222 -0
- package/dist/core/business-mgt/property-inquiry.schema.js +112 -0
- package/dist/core/business-mgt/property-management/index.d.ts +6 -0
- package/dist/core/business-mgt/property-management/index.js +22 -0
- package/dist/core/business-mgt/property-management/property-config.schema.d.ts +1306 -0
- package/dist/core/business-mgt/property-management/property-config.schema.js +367 -0
- package/dist/core/business-mgt/property-management/property-inquiry.schema.d.ts +254 -0
- package/dist/core/business-mgt/property-management/property-inquiry.schema.js +131 -0
- package/dist/core/business-mgt/reservation-mgt/assignment/index.d.ts +3 -0
- package/dist/core/business-mgt/reservation-mgt/assignment/index.js +19 -0
- package/dist/core/business-mgt/reservation-mgt/assignment/reservation-rental-assignment.schema.d.ts +139 -0
- package/dist/core/business-mgt/reservation-mgt/assignment/reservation-rental-assignment.schema.js +90 -0
- package/dist/core/business-mgt/reservation-mgt/assignment/reservation-room-assignment.schema.d.ts +104 -0
- package/dist/core/business-mgt/reservation-mgt/assignment/reservation-room-assignment.schema.js +70 -0
- package/dist/core/business-mgt/reservation-mgt/assignment/reservation-table-assignment.schema.d.ts +104 -0
- package/dist/core/business-mgt/reservation-mgt/assignment/reservation-table-assignment.schema.js +72 -0
- package/dist/core/business-mgt/reservation-mgt/index.d.ts +14 -0
- package/dist/core/business-mgt/reservation-mgt/index.js +31 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-floor-plan-definition.schema.d.ts +180 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-floor-plan-definition.schema.js +75 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-maintenance-block.schema.d.ts +91 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-maintenance-block.schema.js +57 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-rental.schema.d.ts +334 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-rental.schema.js +179 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-room.schema.d.ts +195 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-room.schema.js +106 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-section.schema.d.ts +402 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-section.schema.js +198 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-settings.schema.d.ts +229 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-settings.schema.js +127 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-slot-query.schema.d.ts +382 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-slot-query.schema.js +322 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-table-layout.schema.d.ts +123 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-table-layout.schema.js +83 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-table.schema.d.ts +167 -0
- package/dist/core/business-mgt/reservation-mgt/reservation-table.schema.js +84 -0
- package/dist/core/business-mgt/reservation-mgt/reservation.schema.d.ts +0 -0
- package/dist/core/business-mgt/reservation-mgt/reservation.schema.js +153 -0
- package/dist/core/business-mgt/reservation-mgt/resource/index.d.ts +4 -0
- package/dist/core/business-mgt/reservation-mgt/resource/index.js +20 -0
- package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource-category.schema.d.ts +157 -0
- package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource-category.schema.js +76 -0
- package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource-instance.schema.d.ts +137 -0
- package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource-instance.schema.js +94 -0
- package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource.schema.d.ts +713 -0
- package/dist/core/business-mgt/reservation-mgt/resource/reservation-resource.schema.js +363 -0
- package/dist/core/business-mgt/reservation-mgt/resource/resource-versioning.schema.d.ts +151 -0
- package/dist/core/business-mgt/reservation-mgt/resource/resource-versioning.schema.js +147 -0
- package/dist/core/business-mgt/reservation-resource.schema.d.ts +154 -0
- package/dist/core/business-mgt/reservation-resource.schema.js +100 -0
- package/dist/core/business-mgt/reservation.schema.d.ts +119 -0
- package/dist/core/business-mgt/reservation.schema.js +89 -0
- package/dist/core/business-mgt/service-appointment.schema.d.ts +105 -0
- package/dist/core/business-mgt/service-appointment.schema.js +69 -0
- package/dist/core/business-mgt/service-config.schema.d.ts +453 -0
- package/dist/core/business-mgt/service-config.schema.js +102 -0
- package/dist/core/business-mgt/service-management/appointment-additional-info.schema.d.ts +110 -0
- package/dist/core/business-mgt/service-management/appointment-additional-info.schema.js +78 -0
- package/dist/core/business-mgt/service-management/appointment-field-config.schema.d.ts +304 -0
- package/dist/core/business-mgt/service-management/appointment-field-config.schema.js +75 -0
- package/dist/core/business-mgt/service-management/business-service-config.schema.d.ts +1226 -0
- package/dist/core/business-mgt/service-management/business-service-config.schema.js +317 -0
- package/dist/core/business-mgt/service-management/index.d.ts +13 -0
- package/dist/core/business-mgt/service-management/index.js +29 -0
- package/dist/core/business-mgt/service-management/service-appointment.schema.d.ts +531 -0
- package/dist/core/business-mgt/service-management/service-appointment.schema.js +116 -0
- package/dist/core/business-mgt/service-management/service-person.schema.d.ts +122 -0
- package/dist/core/business-mgt/service-management/service-person.schema.js +66 -0
- package/dist/core/business-mgt/service-management/service-pricing-rule.schema.d.ts +221 -0
- package/dist/core/business-mgt/service-management/service-pricing-rule.schema.js +118 -0
- package/dist/core/business-mgt/service-management/service-provider.schema.d.ts +90 -0
- package/dist/core/business-mgt/service-management/service-provider.schema.js +54 -0
- package/dist/core/business-mgt/service-management/service-slot-query.schema.d.ts +90 -0
- package/dist/core/business-mgt/service-management/service-slot-query.schema.js +113 -0
- package/dist/core/business-mgt/service-management/service-time-off.schema.d.ts +121 -0
- package/dist/core/business-mgt/service-management/service-time-off.schema.js +95 -0
- package/dist/core/business-mgt/service-person.schema.d.ts +43 -0
- package/dist/core/business-mgt/service-person.schema.js +38 -0
- package/dist/core/business-mgt/tax-rule.schema.d.ts +161 -0
- package/dist/core/business-mgt/tax-rule.schema.js +90 -0
- package/dist/core/conversation/conversation-config.schema.d.ts +644 -0
- package/dist/core/conversation/conversation-config.schema.js +351 -0
- package/dist/core/conversation/conversation-message.schema.d.ts +307 -0
- package/dist/core/conversation/conversation-message.schema.js +275 -0
- package/dist/core/conversation/index.d.ts +12 -0
- package/dist/core/conversation/index.js +28 -0
- package/dist/core/conversation/outbound-call.schema.d.ts +209 -0
- package/dist/core/conversation/outbound-call.schema.js +116 -0
- package/dist/core/conversation/outbound-email.schema.d.ts +338 -0
- package/dist/core/conversation/outbound-email.schema.js +150 -0
- package/dist/core/conversation/outbound-sms.schema.d.ts +163 -0
- package/dist/core/conversation/outbound-sms.schema.js +85 -0
- package/dist/core/conversation/outbound-template.schema.d.ts +375 -0
- package/dist/core/conversation/outbound-template.schema.js +160 -0
- package/dist/core/conversation/translation-config.schema.d.ts +92 -0
- package/dist/core/conversation/translation-config.schema.js +88 -0
- package/dist/core/conversation/translation-conversation.schema.d.ts +469 -0
- package/dist/core/conversation/translation-conversation.schema.js +175 -0
- package/dist/core/index.d.ts +12 -0
- package/dist/core/index.js +30 -0
- package/dist/core/service-configuration/agent-config.schema.d.ts +236 -0
- package/dist/core/service-configuration/agent-config.schema.js +152 -0
- package/dist/core/service-configuration/base-agent-setup.d.ts +147 -0
- package/dist/core/service-configuration/base-agent-setup.js +123 -0
- package/dist/core/service-configuration/call-transfer-config.schema.d.ts +60 -0
- package/dist/core/service-configuration/call-transfer-config.schema.js +53 -0
- package/dist/core/service-configuration/deployment-config.schema.d.ts +522 -0
- package/dist/core/service-configuration/deployment-config.schema.js +271 -0
- package/dist/core/service-configuration/dynamic_setup/base-agent-setup.d.ts +130 -0
- package/dist/core/service-configuration/dynamic_setup/base-agent-setup.js +110 -0
- package/dist/core/service-configuration/dynamic_setup/index.d.ts +10 -0
- package/dist/core/service-configuration/dynamic_setup/index.js +26 -0
- package/dist/core/service-configuration/dynamic_setup/phone-agent-setup.d.ts +111 -0
- package/dist/core/service-configuration/dynamic_setup/phone-agent-setup.js +56 -0
- package/dist/core/service-configuration/dynamic_setup/web-agent-setup.d.ts +113 -0
- package/dist/core/service-configuration/dynamic_setup/web-agent-setup.js +55 -0
- package/dist/core/service-configuration/index.d.ts +17 -0
- package/dist/core/service-configuration/index.js +33 -0
- package/dist/core/service-configuration/instruction-config.schema.d.ts +183 -0
- package/dist/core/service-configuration/instruction-config.schema.js +139 -0
- package/dist/core/service-configuration/interaction-channels.schema.d.ts +469 -0
- package/dist/core/service-configuration/interaction-channels.schema.js +390 -0
- package/dist/core/service-configuration/knowledge.schema.d.ts +107 -0
- package/dist/core/service-configuration/knowledge.schema.js +106 -0
- package/dist/core/service-configuration/phone-config.schema.d.ts +206 -0
- package/dist/core/service-configuration/phone-config.schema.js +121 -0
- package/dist/core/service-configuration/phone-number.schema.d.ts +236 -0
- package/dist/core/service-configuration/phone-number.schema.js +211 -0
- package/dist/core/service-configuration/provisioning-config.d.ts +429 -0
- package/dist/core/service-configuration/provisioning-config.js +307 -0
- package/dist/core/service-configuration/support-llm.d.ts +95 -0
- package/dist/core/service-configuration/support-llm.js +76 -0
- package/dist/core/service-configuration/voice-language.schema.d.ts +200 -0
- package/dist/core/service-configuration/voice-language.schema.js +166 -0
- package/dist/core/type-definitions/account-definitions.d.ts +82 -0
- package/dist/core/type-definitions/account-definitions.js +88 -0
- package/dist/core/type-definitions/business-definitions.d.ts +394 -0
- package/dist/core/type-definitions/business-definitions.js +447 -0
- package/dist/core/type-definitions/conversation.type.definition.d.ts +223 -0
- package/dist/core/type-definitions/conversation.type.definition.js +236 -0
- package/dist/core/type-definitions/display-order.d.ts +154 -0
- package/dist/core/type-definitions/display-order.js +154 -0
- package/dist/core/type-definitions/dynamic-fields/field-definition.schema.d.ts +165 -0
- package/dist/core/type-definitions/dynamic-fields/field-definition.schema.js +97 -0
- package/dist/core/type-definitions/dynamic-fields/field-types.d.ts +49 -0
- package/dist/core/type-definitions/dynamic-fields/field-types.js +104 -0
- package/dist/core/type-definitions/dynamic-fields/index.d.ts +9 -0
- package/dist/core/type-definitions/dynamic-fields/index.js +25 -0
- package/dist/core/type-definitions/index.d.ts +10 -0
- package/dist/core/type-definitions/index.js +26 -0
- package/dist/core/type-definitions/knowledge-definitions.d.ts +30 -0
- package/dist/core/type-definitions/knowledge-definitions.js +37 -0
- package/dist/core/type-definitions/service-config.definitions.d.ts +112 -0
- package/dist/core/type-definitions/service-config.definitions.js +135 -0
- package/dist/core/validators/channel-validation.d.ts +19 -0
- package/dist/core/validators/channel-validation.js +40 -0
- package/dist/core/validators/index.d.ts +5 -0
- package/dist/core/validators/index.js +21 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +24 -0
- package/dist/request/index.d.ts +5 -0
- package/dist/request/index.js +21 -0
- package/dist/request/models/index.d.ts +6 -0
- package/dist/request/models/index.js +22 -0
- package/dist/request/models/paginated-quest.schema.d.ts +33 -0
- package/dist/request/models/paginated-quest.schema.js +35 -0
- package/dist/request/models/paginated-result.schema.d.ts +124 -0
- package/dist/request/models/paginated-result.schema.js +94 -0
- package/package.json +43 -0
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.MenuSetViewSchema = exports.MenuSetItemViewSchema = exports.UpdateMenuSetSchema = exports.CreateMenuSetSchema = exports.MenuSetSchema = exports.MenuSetSelectorSchema = exports.MenuSetItemSchema = exports.MenuSetChannelMappingSchema = exports.MenuSetTargetingMode = exports.MenuSetPricingMode = void 0;
|
|
7
|
+
const zod_1 = __importDefault(require("zod"));
|
|
8
|
+
const base_schema_1 = require("../../base.schema");
|
|
9
|
+
const menu_config_schema_1 = require("./menu-config.schema");
|
|
10
|
+
/**
|
|
11
|
+
* @fileoverview Menu set schema definitions for bundled menu items.
|
|
12
|
+
* @module business-mgt/menu-set
|
|
13
|
+
*
|
|
14
|
+
* Includes menu sets (bundles/combos), pricing modes, targeting modes,
|
|
15
|
+
* and selectors for dynamic set membership.
|
|
16
|
+
*/
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// ENUMS
|
|
19
|
+
// ============================================================================
|
|
20
|
+
/**
|
|
21
|
+
* Menu set pricing mode.
|
|
22
|
+
* Determines how set pricing is calculated.
|
|
23
|
+
*
|
|
24
|
+
* @enum {string}
|
|
25
|
+
*/
|
|
26
|
+
var MenuSetPricingMode;
|
|
27
|
+
(function (MenuSetPricingMode) {
|
|
28
|
+
MenuSetPricingMode["FIXED"] = "FIXED";
|
|
29
|
+
MenuSetPricingMode["SUM_OF_ITEMS"] = "SUM_OF_ITEMS";
|
|
30
|
+
})(MenuSetPricingMode || (exports.MenuSetPricingMode = MenuSetPricingMode = {}));
|
|
31
|
+
/**
|
|
32
|
+
* Menu set targeting mode.
|
|
33
|
+
* Determines how set members are selected.
|
|
34
|
+
*
|
|
35
|
+
* @enum {string}
|
|
36
|
+
*/
|
|
37
|
+
var MenuSetTargetingMode;
|
|
38
|
+
(function (MenuSetTargetingMode) {
|
|
39
|
+
MenuSetTargetingMode["EXPLICIT"] = "EXPLICIT";
|
|
40
|
+
MenuSetTargetingMode["SELECTOR"] = "SELECTOR";
|
|
41
|
+
})(MenuSetTargetingMode || (exports.MenuSetTargetingMode = MenuSetTargetingMode = {}));
|
|
42
|
+
// ============================================================================
|
|
43
|
+
// CHANNEL MAPPING SCHEMAS
|
|
44
|
+
// ============================================================================
|
|
45
|
+
/**
|
|
46
|
+
* Menu set channel mapping schema.
|
|
47
|
+
* Maps menu sets to external platform identifiers.
|
|
48
|
+
*
|
|
49
|
+
* @typedef {Object} MenuSetChannelMapping
|
|
50
|
+
* @property {string} channelId - Channel identifier (e.g., doordash, uber-eats)
|
|
51
|
+
* @property {string} externalMenuSetId - External menu set ID for synchronization
|
|
52
|
+
*/
|
|
53
|
+
exports.MenuSetChannelMappingSchema = zod_1.default.object({
|
|
54
|
+
channelId: zod_1.default.string().describe("Channel ID (e.g., doordash, uber-eats)"),
|
|
55
|
+
externalMenuSetId: zod_1.default.string().describe("External menu set ID for this specific channel"),
|
|
56
|
+
}).describe("Per-channel external menu set ID mapping");
|
|
57
|
+
// ============================================================================
|
|
58
|
+
// MENU SET ITEM SCHEMA
|
|
59
|
+
// ============================================================================
|
|
60
|
+
/**
|
|
61
|
+
* Menu set item schema.
|
|
62
|
+
* Individual item within a menu set.
|
|
63
|
+
*
|
|
64
|
+
* @typedef {Object} MenuSetItem
|
|
65
|
+
* @property {string} menuItemId - Menu item ID included in the set
|
|
66
|
+
* @property {string} menuItemVariantId - Menu item variant ID included in the set
|
|
67
|
+
* @property {number} quantity - Quantity of this menu item in the set
|
|
68
|
+
* @property {boolean} isRequired - Whether this item is required in the set
|
|
69
|
+
* @property {number} [displayOrder] - Display order inside the set
|
|
70
|
+
*/
|
|
71
|
+
exports.MenuSetItemSchema = zod_1.default.object({
|
|
72
|
+
menuItemId: zod_1.default.string().describe("Menu item ID included in the set"),
|
|
73
|
+
menuItemVariantId: zod_1.default.string().describe("Menu item variant ID included in the set"),
|
|
74
|
+
quantity: zod_1.default.number().int().positive().describe("Quantity of this menu item in the set"),
|
|
75
|
+
isRequired: zod_1.default.boolean().default(true).describe("Whether this item is required in the set"),
|
|
76
|
+
displayOrder: zod_1.default.number().int().nullable().optional().describe("Display order inside the set"),
|
|
77
|
+
});
|
|
78
|
+
// ============================================================================
|
|
79
|
+
// MENU SET SELECTOR SCHEMA
|
|
80
|
+
// ============================================================================
|
|
81
|
+
/**
|
|
82
|
+
* Menu set selector schema.
|
|
83
|
+
* Defines dynamic rules for set membership.
|
|
84
|
+
*
|
|
85
|
+
* @typedef {Object} MenuSetSelector
|
|
86
|
+
* @property {string[]} menuItemIdsAny - Any matching catalog menu item IDs
|
|
87
|
+
* @property {string[]} menuItemIdsAll - All required catalog menu item IDs
|
|
88
|
+
* @property {boolean} allMenuItems - Includes all catalog menu items
|
|
89
|
+
* @property {number} [quantityExact] - Requires exact matched quantity
|
|
90
|
+
* @property {number} [quantityMin] - Requires minimum matched quantity
|
|
91
|
+
* @property {number} [quantityMax] - Caps maximum matched quantity
|
|
92
|
+
*/
|
|
93
|
+
exports.MenuSetSelectorSchema = zod_1.default.object({
|
|
94
|
+
menuItemIdsAny: zod_1.default.array(zod_1.default.string()).max(5000).default([]).describe("Any matching catalog menu item IDs"),
|
|
95
|
+
menuItemIdsAll: zod_1.default.array(zod_1.default.string()).max(5000).default([]).describe("All required catalog menu item IDs"),
|
|
96
|
+
allMenuItems: zod_1.default.boolean().default(false).describe("Includes all catalog menu items"),
|
|
97
|
+
quantityExact: zod_1.default.number().int().positive().optional().describe("Requires exact matched quantity"),
|
|
98
|
+
quantityMin: zod_1.default.number().int().nonnegative().optional().describe("Requires minimum matched quantity"),
|
|
99
|
+
quantityMax: zod_1.default.number().int().positive().optional().describe("Caps maximum matched quantity"),
|
|
100
|
+
}).superRefine((data, ctx) => {
|
|
101
|
+
const selectorModes = [
|
|
102
|
+
data.menuItemIdsAny.length > 0,
|
|
103
|
+
data.menuItemIdsAll.length > 0,
|
|
104
|
+
data.allMenuItems,
|
|
105
|
+
].filter(Boolean).length;
|
|
106
|
+
if (selectorModes !== 1) {
|
|
107
|
+
ctx.addIssue({
|
|
108
|
+
code: "custom",
|
|
109
|
+
path: ["menuItemIdsAny"],
|
|
110
|
+
message: "Exactly one of menuItemIdsAny, menuItemIdsAll, or allMenuItems must be set",
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
if (data.quantityExact !== undefined && (data.quantityMin !== undefined || data.quantityMax !== undefined)) {
|
|
114
|
+
ctx.addIssue({
|
|
115
|
+
code: "custom",
|
|
116
|
+
path: ["quantityExact"],
|
|
117
|
+
message: "quantityExact cannot be combined with quantityMin or quantityMax",
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
if (data.quantityMin !== undefined &&
|
|
121
|
+
data.quantityMax !== undefined &&
|
|
122
|
+
data.quantityMax < data.quantityMin) {
|
|
123
|
+
ctx.addIssue({
|
|
124
|
+
code: "custom",
|
|
125
|
+
path: ["quantityMax"],
|
|
126
|
+
message: "quantityMax must be greater than or equal to quantityMin",
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
// ============================================================================
|
|
131
|
+
// MENU SET SCHEMA
|
|
132
|
+
// ============================================================================
|
|
133
|
+
/**
|
|
134
|
+
* Menu set schema.
|
|
135
|
+
* Bundled menu items (combos, deals, meal sets).
|
|
136
|
+
*
|
|
137
|
+
* @typedef {Object} MenuSet
|
|
138
|
+
* @property {string} [locationId] - Location ID for location-specific menu sets
|
|
139
|
+
* @property {string} [menuRevisionId] - Menu revision ID for version-scoped data
|
|
140
|
+
* @property {string} [code] - Stable internal code for integration matching
|
|
141
|
+
* @property {string} name - Menu set name
|
|
142
|
+
* @property {string} [description] - Menu set description
|
|
143
|
+
* @property {MenuSetChannelMapping[]} [channelMappings] - Per-channel mappings
|
|
144
|
+
* @property {MenuSetTargetingMode} targetingMode - How this set selects its members
|
|
145
|
+
* @property {MenuSetPricingMode} pricingMode - How set pricing is resolved
|
|
146
|
+
* @property {number} [fixedPrice] - Set price when pricing mode is FIXED
|
|
147
|
+
* @property {MenuSetItem[]} [items] - Explicit menu members for EXPLICIT targeting
|
|
148
|
+
* @property {MenuSetSelector} [selector] - Selector definition for SELECTOR targeting
|
|
149
|
+
* @property {boolean} isActive - Whether this menu set is active
|
|
150
|
+
* @property {string} [imageUrl] - Public image URL for the menu set
|
|
151
|
+
* @property {string[]} [imageUrls] - Public image URLs for the menu set
|
|
152
|
+
* @property {number} [displayOrder] - Display order in catalog
|
|
153
|
+
*/
|
|
154
|
+
exports.MenuSetSchema = base_schema_1.BaseModelSchema.safeExtend({
|
|
155
|
+
locationId: zod_1.default.string().nullable().optional().describe("Location ID for location-specific menu sets"),
|
|
156
|
+
menuRevisionId: zod_1.default.string().nullable().optional().describe("Optional menu revision ID for version-scoped data"),
|
|
157
|
+
code: zod_1.default.string().min(1).nullable().optional().describe("Stable internal code for idempotent integration matching"),
|
|
158
|
+
name: zod_1.default.string().min(1, "Menu set name is required").describe("Menu set name"),
|
|
159
|
+
description: zod_1.default.string().nullable().optional().describe("Menu set description"),
|
|
160
|
+
channelMappings: zod_1.default.array(exports.MenuSetChannelMappingSchema).nullable().optional().describe("Per-channel menu set ID mappings"),
|
|
161
|
+
targetingMode: zod_1.default.enum(MenuSetTargetingMode).default(MenuSetTargetingMode.EXPLICIT).describe("How this set selects its members"),
|
|
162
|
+
pricingMode: zod_1.default.enum(MenuSetPricingMode).default(MenuSetPricingMode.SUM_OF_ITEMS).describe("How set pricing is resolved"),
|
|
163
|
+
fixedPrice: zod_1.default.number().nonnegative().nullable().optional().describe("Set price when pricing mode is FIXED"),
|
|
164
|
+
items: zod_1.default.array(exports.MenuSetItemSchema).nullable().optional().describe("Explicit menu members for EXPLICIT targeting"),
|
|
165
|
+
selector: exports.MenuSetSelectorSchema.nullable().optional().describe("Selector definition for SELECTOR targeting"),
|
|
166
|
+
isActive: zod_1.default.boolean().default(true).describe("Whether this menu set is active"),
|
|
167
|
+
imageUrl: zod_1.default.string().nullable().optional().describe("Public image URL for the menu set"),
|
|
168
|
+
imageUrls: zod_1.default.array(zod_1.default.string()).nullable().optional().describe("Public image URLs for the menu set"),
|
|
169
|
+
displayOrder: zod_1.default.number().int().nullable().optional().describe("Display order in catalog"),
|
|
170
|
+
}).superRefine((data, ctx) => {
|
|
171
|
+
if (data.pricingMode === MenuSetPricingMode.FIXED && (data.fixedPrice === undefined || data.fixedPrice === null)) {
|
|
172
|
+
ctx.addIssue({
|
|
173
|
+
code: "custom",
|
|
174
|
+
path: ["fixedPrice"],
|
|
175
|
+
message: "fixedPrice is required when pricingMode is FIXED",
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
if (data.pricingMode === MenuSetPricingMode.SUM_OF_ITEMS && data.fixedPrice != null) {
|
|
179
|
+
ctx.addIssue({
|
|
180
|
+
code: "custom",
|
|
181
|
+
path: ["fixedPrice"],
|
|
182
|
+
message: "fixedPrice must be null or omitted when pricingMode is SUM_OF_ITEMS",
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
if (data.targetingMode === MenuSetTargetingMode.EXPLICIT) {
|
|
186
|
+
if (!data.items || data.items.length === 0) {
|
|
187
|
+
ctx.addIssue({
|
|
188
|
+
code: "custom",
|
|
189
|
+
path: ["items"],
|
|
190
|
+
message: "items is required when targetingMode is EXPLICIT",
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
if (data.selector != null) {
|
|
194
|
+
ctx.addIssue({
|
|
195
|
+
code: "custom",
|
|
196
|
+
path: ["selector"],
|
|
197
|
+
message: "selector must be null or omitted when targetingMode is EXPLICIT",
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
if (data.targetingMode === MenuSetTargetingMode.SELECTOR) {
|
|
202
|
+
if (data.selector == null) {
|
|
203
|
+
ctx.addIssue({
|
|
204
|
+
code: "custom",
|
|
205
|
+
path: ["selector"],
|
|
206
|
+
message: "selector is required when targetingMode is SELECTOR",
|
|
207
|
+
});
|
|
208
|
+
}
|
|
209
|
+
if (data.items && data.items.length > 0) {
|
|
210
|
+
ctx.addIssue({
|
|
211
|
+
code: "custom",
|
|
212
|
+
path: ["items"],
|
|
213
|
+
message: "items must be empty when targetingMode is SELECTOR",
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (!data.items || data.items.length === 0) {
|
|
218
|
+
return;
|
|
219
|
+
}
|
|
220
|
+
const seenItemKeys = new Set();
|
|
221
|
+
for (const [index, item] of data.items.entries()) {
|
|
222
|
+
const itemKey = `${item.menuItemId}::${item.menuItemVariantId}`;
|
|
223
|
+
if (seenItemKeys.has(itemKey)) {
|
|
224
|
+
ctx.addIssue({
|
|
225
|
+
code: "custom",
|
|
226
|
+
path: ["items", index],
|
|
227
|
+
message: "Duplicate menuItemId + menuItemVariantId combination is not allowed in a menu set",
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
seenItemKeys.add(itemKey);
|
|
231
|
+
}
|
|
232
|
+
});
|
|
233
|
+
// ============================================================================
|
|
234
|
+
// CREATE/UPDATE SCHEMAS
|
|
235
|
+
// ============================================================================
|
|
236
|
+
/**
|
|
237
|
+
* Schema for creating a new menu set.
|
|
238
|
+
* Omits auto-generated fields.
|
|
239
|
+
*/
|
|
240
|
+
exports.CreateMenuSetSchema = exports.MenuSetSchema.omit({
|
|
241
|
+
id: true,
|
|
242
|
+
createdAt: true,
|
|
243
|
+
updatedAt: true,
|
|
244
|
+
});
|
|
245
|
+
/**
|
|
246
|
+
* Schema for updating an existing menu set.
|
|
247
|
+
* All fields optional except id (required).
|
|
248
|
+
*/
|
|
249
|
+
exports.UpdateMenuSetSchema = exports.CreateMenuSetSchema.partial().safeExtend({
|
|
250
|
+
id: zod_1.default.string(),
|
|
251
|
+
});
|
|
252
|
+
// ============================================================================
|
|
253
|
+
// VIEW SCHEMAS
|
|
254
|
+
// ============================================================================
|
|
255
|
+
/**
|
|
256
|
+
* Menu set item view schema.
|
|
257
|
+
* Read-optimized view with resolved menu item.
|
|
258
|
+
*
|
|
259
|
+
* @typedef {Object} MenuSetItemView
|
|
260
|
+
* @property {string} menuItemId - Menu item ID
|
|
261
|
+
* @property {string} menuItemVariantId - Menu item variant ID
|
|
262
|
+
* @property {number} quantity - Quantity in set
|
|
263
|
+
* @property {boolean} isRequired - Whether required
|
|
264
|
+
* @property {number} [displayOrder] - Display order
|
|
265
|
+
* @property {BusinessMenuItem} [menuItem] - Resolved menu item snapshot
|
|
266
|
+
*/
|
|
267
|
+
exports.MenuSetItemViewSchema = exports.MenuSetItemSchema.safeExtend({
|
|
268
|
+
menuItem: menu_config_schema_1.BusinessMenuItemSchema.nullable().optional().describe("Resolved menu item snapshot"),
|
|
269
|
+
});
|
|
270
|
+
/**
|
|
271
|
+
* Menu set view schema.
|
|
272
|
+
* Read-optimized view with resolved items and pricing.
|
|
273
|
+
*
|
|
274
|
+
* @typedef {Object} MenuSetView
|
|
275
|
+
* @property {MenuSetItemView[]} [items] - Resolved menu set items
|
|
276
|
+
* @property {number} [resolvedPrice] - Computed display price for the set
|
|
277
|
+
*/
|
|
278
|
+
exports.MenuSetViewSchema = exports.MenuSetSchema.omit({
|
|
279
|
+
items: true,
|
|
280
|
+
}).safeExtend({
|
|
281
|
+
items: zod_1.default.array(exports.MenuSetItemViewSchema).nullable().optional(),
|
|
282
|
+
resolvedPrice: zod_1.default.number().nonnegative().nullable().optional().describe("Computed display price for the set"),
|
|
283
|
+
});
|