@infuro/cms-core 1.0.45 → 1.0.47

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.
Files changed (82) hide show
  1. package/README.md +19 -2
  2. package/dist/admin.cjs +4249 -2872
  3. package/dist/admin.d.cts +24 -4
  4. package/dist/admin.d.ts +24 -4
  5. package/dist/admin.js +3179 -1804
  6. package/dist/api.cjs +41 -39
  7. package/dist/api.d.cts +10 -4
  8. package/dist/api.d.ts +10 -4
  9. package/dist/api.js +9 -7
  10. package/dist/auth.cjs +55 -51
  11. package/dist/auth.d.cts +6 -3
  12. package/dist/auth.d.ts +6 -3
  13. package/dist/auth.js +3 -3
  14. package/dist/{chunk-KFFB6EMZ.js → chunk-2HU5R2JE.js} +2 -0
  15. package/dist/chunk-2IAXTKQN.cjs +19 -0
  16. package/dist/chunk-2KUCQVAQ.js +936 -0
  17. package/dist/chunk-3K5AIEIZ.js +256 -0
  18. package/dist/{chunk-SPQFNIYJ.cjs → chunk-4PMK3RNA.cjs} +2 -0
  19. package/dist/{chunk-X6UQFV4X.cjs → chunk-77NUXO6A.cjs} +14 -12
  20. package/dist/chunk-BXYZDMTZ.cjs +953 -0
  21. package/dist/chunk-DBPSJYLZ.js +47 -0
  22. package/dist/chunk-EIZKW2PF.js +13 -0
  23. package/dist/chunk-HY3AXLOI.cjs +265 -0
  24. package/dist/{chunk-X47PBV4I.js → chunk-JE22VP6S.js} +1 -0
  25. package/dist/{chunk-DN65KDIA.js → chunk-JIWUVQ6B.js} +14 -13
  26. package/dist/{chunk-HT5DI3XW.cjs → chunk-KOTXDSQB.cjs} +1 -0
  27. package/dist/chunk-L3525VXI.js +243 -0
  28. package/dist/{chunk-22FFHLTO.cjs → chunk-LMJ7RKPF.cjs} +421 -150
  29. package/dist/chunk-OY2YTBMP.cjs +50 -0
  30. package/dist/{chunk-TAHX46EI.cjs → chunk-Q3HQEM4R.cjs} +15 -7
  31. package/dist/chunk-V25RDUOU.cjs +248 -0
  32. package/dist/{chunk-ZMRQ72F6.cjs → chunk-VUQFARRT.cjs} +10 -10
  33. package/dist/{chunk-MVXLRANV.js → chunk-W42UZLQO.js} +1977 -891
  34. package/dist/{chunk-F5XFHYTG.cjs → chunk-XUCKZPML.cjs} +2088 -991
  35. package/dist/{chunk-I6NH72MO.js → chunk-YC4NUZCS.js} +10 -2
  36. package/dist/{chunk-NNQBWDCI.js → chunk-YXH2UUEZ.js} +418 -146
  37. package/dist/{chunk-BLR6H5GL.js → chunk-ZF2RQWXB.js} +4 -4
  38. package/dist/cli.cjs +9 -4
  39. package/dist/cli.js +9 -4
  40. package/dist/{email-queue-TPZWLTIV.cjs → email-queue-6NJY6HNM.cjs} +7 -5
  41. package/dist/email-queue-OI2HSCGE.js +4 -0
  42. package/dist/{emit-order-notification-trigger-IVLWKKJL.js → emit-order-notification-trigger-6XX7LSC4.js} +1 -1
  43. package/dist/{emit-order-notification-trigger-D2N3KFHL.cjs → emit-order-notification-trigger-NASG7ZEO.cjs} +3 -3
  44. package/dist/erp-order-invoice-3GXDE443.js +3 -0
  45. package/dist/erp-order-invoice-EYYNR526.cjs +24 -0
  46. package/dist/{event-order-defaults-EMWBIGL3.cjs → event-order-defaults-7Z3UZOEH.cjs} +9 -9
  47. package/dist/{event-order-defaults-SDRNAZHC.js → event-order-defaults-XQ3IDPD7.js} +1 -1
  48. package/dist/hooks.cjs +43 -0
  49. package/dist/hooks.d.cts +10 -1
  50. package/dist/hooks.d.ts +10 -1
  51. package/dist/hooks.js +39 -1
  52. package/dist/index.cjs +429 -298
  53. package/dist/index.d.cts +317 -30
  54. package/dist/index.d.ts +317 -30
  55. package/dist/index.js +17 -13
  56. package/dist/migrations/1781810000000-OrderItemsVariantId.ts +44 -0
  57. package/dist/migrations/1781900000000-UserInviteStatusToken.ts +46 -0
  58. package/dist/migrations/1782000000000-ComboSlug.ts +58 -0
  59. package/dist/migrations/1782100000000-DiscountDeviceType.ts +20 -0
  60. package/dist/migrations/1782200000000-VendorTeamProfiles.ts +233 -0
  61. package/dist/migrations/1782300000000-AddTypeToOrderNotificationBindings.ts +75 -0
  62. package/dist/order-inventory-2MYRKEPC.cjs +39 -0
  63. package/dist/order-inventory-76V4XIGW.js +2 -0
  64. package/dist/{order-notification-dispatcher-XWIJYDGA.js → order-notification-dispatcher-6WNG24NY.js} +4 -2
  65. package/dist/{order-notification-dispatcher-RU7BTGGX.cjs → order-notification-dispatcher-6XSU3AR7.cjs} +6 -4
  66. package/dist/{rbac-debug-db-2SGNLANF.js → rbac-debug-db-6EMIVMGF.js} +1 -1
  67. package/dist/{rbac-debug-db-4Z6A425H.cjs → rbac-debug-db-6PWTLBEL.cjs} +2 -2
  68. package/dist/retire-soft-deleted-unique-5VXBA5XX.cjs +15 -0
  69. package/dist/retire-soft-deleted-unique-NXQIH4BC.js +2 -0
  70. package/dist/theme.cjs +6 -1
  71. package/dist/theme.d.cts +4 -1
  72. package/dist/theme.d.ts +4 -1
  73. package/dist/theme.js +3 -1
  74. package/package.json +5 -4
  75. package/src/admin/admin.css +34 -24
  76. package/dist/chunk-5ELSW2UP.js +0 -150
  77. package/dist/chunk-PNOKNSG2.cjs +0 -222
  78. package/dist/chunk-WEMDMVHQ.js +0 -216
  79. package/dist/chunk-XW5ATPRW.cjs +0 -155
  80. package/dist/email-queue-CGZBVVAS.js +0 -2
  81. package/dist/erp-order-invoice-3YISSOWW.js +0 -3
  82. package/dist/erp-order-invoice-ZR5F2KTA.cjs +0 -12
package/dist/index.js CHANGED
@@ -1,22 +1,25 @@
1
- export { emitOrderNotificationTrigger, fireOrderNotificationTrigger } from './chunk-X47PBV4I.js';
2
- import { checkMultiVendorEnabled, loadUserVendorContext, getPublicSettingsGroup, BlogGeneratorService } from './chunk-MVXLRANV.js';
3
- export { Address, Attendee, Attribute, BLOG_GENERATOR_AGENT_NAME, BLOG_GENERATOR_DEFAULT_SYSTEM_INSTRUCTION, BLOG_GENERATOR_DEFAULT_VALIDATION_RULES, BLOG_GENERATOR_LLM_AGENT_SLUG, BLOG_GENERATOR_MARKDOWN_ARTICLE_SEPARATOR, BLOG_METADATA_ENRICHER_AGENT_NAME, BLOG_METADATA_ENRICHER_DEFAULT_SYSTEM_INSTRUCTION, BLOG_METADATA_ENRICHER_DEFAULT_VALIDATION_RULES, BLOG_METADATA_ENRICHER_LLM_AGENT_SLUG, Blog, BlogGeneratorService, Brand, CMS_ENTITY_MAP, Cart, CartItem, Category, ChatConversation, ChatMessage, Collection, Combo, ComboItem, Comment, Config, Contact, Currency, CurrencyExchange, Customer, Customer_Contacts, Discount, DiscountRules, Event, EventProduct, Form, FormField, FormSubmission, JobSchedule, JobScheduleRun, KnowledgeBaseChunk, KnowledgeBaseDocument, LlmAgent, Media, MessageTemplate, Order, OrderAddresses, OrderDiscounts, OrderItem, OrderNotificationBinding, OrderNotificationTrigger, OtpChallenge, Page, PasswordResetToken, Payment, Permission, Product, ProductAttribute, ProductCategory, ProductConfig, ProductVariant, RefundPolicy, RefundRequest, RssArticle, RssFeed, Seo, Tag, Tax, User, UserGroup, Vendor, VendorCustomer, VendorRole, VendorRolePermission, VendorUser, Wishlist, WishlistItem, ZIP_MIME_TYPES, applyApprovalStatusSideEffects, applyEventApprovalStatusSideEffects, applyRotatingVendorInvite, applyVendorCustomersContactFilter, applyVendorEventCreateApproval, applyVendorProductCreateApproval, assertCaptchaOk, assertContactAllowedForVendorOrder, assertEventApprovalUpdate, assertProductApprovalUpdate, buildBlogMetadataUserPrompt, buildCronFromSchedule, buildRssUserPromptFromFeeds, buildVendorInviteLink, calculateOrderRefundPreview, calculateRefundFromPolicy, checkEventsEnabled, checkMultiVendorEnabled, contactIsVendorCustomer, countRecentOtpSends, createAnalyticsHandlers, createBlogBySlugHandler, createChangePasswordHandler, createCmsApiHandler, createCmsApp, createCmsAppWithMessaging, createCrudByIdHandler, createCrudHandler, createDashboardStatsHandler, createEcommerceAnalyticsHandler, createEventOrderMessageTemplateHandlers, createForgotPasswordHandler, createFormBySlugHandler, createInviteAcceptHandler, createJobScheduleHandlers, createLlmAgentKnowledgeHandlers, createMediaZipExtractHandler, createMessageTemplateRowLoader, createOtpChallenge, createSetPasswordHandler, createSettingsApiHandlers, createSocialMediaHandlers, createStorefrontApiHandler, createUploadHandler, createUserAuthApiRouter, createUserAvatarHandler, createUserProfileHandler, createUsersApiHandlers, createVendorDashboardHandler, createVendorOnboardHandlers, customerPhoneForEmail, customerPhoneForUser, daysBeforeEventStart, describeEventTierPolicy, ensureCustomerForUser, ensureCustomerRecord, ensureMessagingPluginsOnCms, ensureScheduleQueueWorker, ensureVendorCustomerForOrderContact, ensureVendorCustomersForOrder, findActiveRefundPolicyForVendor, findVendorByInviteToken, formatTierRange, generateNumericOtp, getPublicSettingsGroup, getRequireEventApproval, getRequireProductApproval, getRssArticleSummaryFromItem, getVendorCatalogCreateFlags, hashOtpCode, hydrateVendorSessionUser, invalidateEventsCache, invalidateMultiVendorCache, invalidateRequireEventApprovalCache, invalidateRequireProductApprovalCache, invalidateVendorCatalogCreateFlagsCache, isCustomerTypeContact, isSyntheticCustomerPhone, isZipMedia, linkUnclaimedContactToUser, llmAgentToChatAgentOptions, loadSettingsGroupFromDb, loadUserVendorContext, mergeGuardrailsIntoSystemPrompt, messagingPlugins, metaFetchUserManagedPages, metaPostPageFeed, metaPostPagePhoto, metaResolvePageAccessToken, normalizeCustomerPhone, normalizePhoneE164, normalizeRefundTiers, overlayCmsPlugins, parseBlogGeneratorAgentContent, parseBlogGeneratorModelOutput, parseBlogMetadataEnrichmentJson, parseLlmAgentValidationRules, pgBossScheduleNameForId, queueErpCreateContactIfEnabled, queueJobScheduleNow, queuePlugin, queueSms, registerJobRunnerWorker, registerMessagingQueueProcessors, registerSmsQueueProcessor, relativePathFromMediaParentId, resolveBlogCategoryIdByName, resolveSettingsEncryptionKey, resolveVendorIdForContactCheck, sanitizeMediaFolderPath, sanitizeStorageSegment, sendVendorOnboardEmails, simpleDecrypt, simpleEncrypt, syncJobScheduleToPgBoss, validateRefundTiers, validateScheduleInput, validateUserMessageAgainstAgentRules, validateUserMessageAgainstStructuredRules, verifyAndConsumeOtpChallenge, verifyOtpCodeHash, whatsappPlugin, wrapGetCmsWithMessaging } from './chunk-MVXLRANV.js';
4
- import { mergeEmailLayoutCompanyDetails, parseEmailRecipientsFromConfig } from './chunk-NNQBWDCI.js';
5
- export { EmailService, buildEventOrderTemplateVariables, emailPlugin, emailTemplates, getCompanyDetailsFromSettings, initWhatsappTriggerDispatcher, joinRecipientsForSend, mergeEmailLayoutCompanyDetails, parseEmailRecipientsFromConfig, queueWhatsApp, registerWhatsAppQueueProcessor, renderEmail, renderLayout, resendOrderNotification, serializeEmailRecipients } from './chunk-NNQBWDCI.js';
1
+ export { emitOrderNotificationTrigger, fireOrderNotificationTrigger } from './chunk-JE22VP6S.js';
2
+ import { checkMultiVendorEnabled, loadUserVendorContext, getPublicSettingsGroup, BlogGeneratorService } from './chunk-W42UZLQO.js';
3
+ export { Address, Attendee, Attribute, BLOG_GENERATOR_AGENT_NAME, BLOG_GENERATOR_DEFAULT_SYSTEM_INSTRUCTION, BLOG_GENERATOR_DEFAULT_VALIDATION_RULES, BLOG_GENERATOR_LLM_AGENT_SLUG, BLOG_GENERATOR_MARKDOWN_ARTICLE_SEPARATOR, BLOG_METADATA_ENRICHER_AGENT_NAME, BLOG_METADATA_ENRICHER_DEFAULT_SYSTEM_INSTRUCTION, BLOG_METADATA_ENRICHER_DEFAULT_VALIDATION_RULES, BLOG_METADATA_ENRICHER_LLM_AGENT_SLUG, Blog, BlogGeneratorService, Brand, CMS_ENTITY_MAP, Cart, CartItem, Category, ChatConversation, ChatMessage, Collection, Combo, ComboItem, Comment, Config, Contact, Currency, CurrencyExchange, Customer, Customer_Contacts, Discount, DiscountRules, Event, EventProduct, Form, FormField, FormSubmission, JobSchedule, JobScheduleRun, KnowledgeBaseChunk, KnowledgeBaseDocument, LlmAgent, Media, MessageTemplate, Order, OrderAddresses, OrderDiscounts, OrderItem, OrderNotificationBinding, OrderNotificationTrigger, OtpChallenge, Page, PasswordResetToken, Payment, Permission, Product, ProductAttribute, ProductCategory, ProductConfig, ProductVariant, RefundPolicy, RefundRequest, RssArticle, RssFeed, Seo, Tag, Tax, User, UserGroup, Vendor, VendorCustomer, VendorRole, VendorRolePermission, VendorUser, VendorUserProfile, Wishlist, WishlistItem, ZIP_MIME_TYPES, applyApprovalStatusSideEffects, applyEventApprovalStatusSideEffects, applyRotatingVendorInvite, applyVendorCustomersContactFilter, applyVendorEventCreateApproval, applyVendorProductCreateApproval, assertCaptchaOk, assertContactAllowedForVendorOrder, assertEventApprovalUpdate, assertProductApprovalUpdate, buildBlogMetadataUserPrompt, buildCronFromSchedule, buildRssUserPromptFromFeeds, buildUserInviteLink, buildVendorInviteLink, calculateOrderRefundPreview, calculateRefundFromPolicy, checkAndIncrementDiscountUsage, checkEventsEnabled, checkMultiVendorEnabled, completeUserInviteAccept, consumeAppliedDiscountUsages, contactIsVendorCustomer, countDiscountOrdersForContact, countRecentOtpSends, createAnalyticsHandlers, createBlogBySlugHandler, createChangePasswordHandler, createCmsApiHandler, createCmsApp, createCmsAppWithMessaging, createCrudByIdHandler, createCrudHandler, createDashboardStatsHandler, createEcommerceAnalyticsHandler, createEventOrderMessageTemplateHandlers, createForgotPasswordHandler, createFormBySlugHandler, createInviteAcceptHandler, createJobScheduleHandlers, createLlmAgentKnowledgeHandlers, createMediaZipExtractHandler, createMessageTemplateRowLoader, createOtpChallenge, createSetPasswordHandler, createSettingsApiHandlers, createSocialMediaHandlers, createStorefrontApiHandler, createUploadHandler, createUserAuthApiRouter, createUserAvatarHandler, createUserProfileHandler, createUsersApiHandlers, createVendorDashboardHandler, createVendorOnboardHandlers, customerPhoneForEmail, customerPhoneForUser, daysBeforeEventStart, decrementDiscountUsage, describeEventTierPolicy, ensureCustomerForUser, ensureCustomerRecord, ensureMessagingPluginsOnCms, ensureScheduleQueueWorker, ensureVendorCustomerForOrderContact, ensureVendorCustomersForOrder, findActiveRefundPolicyForVendor, findUserByInviteToken, findVendorByInviteToken, formatTierRange, generateNumericOtp, getPublicSettingsGroup, getRequireEventApproval, getRequireProductApproval, getRssArticleSummaryFromItem, getVendorCatalogCreateFlags, hashOtpCode, hydrateVendorSessionUser, invalidateEventsCache, invalidateMultiVendorCache, invalidateRequireEventApprovalCache, invalidateRequireProductApprovalCache, invalidateVendorCatalogCreateFlagsCache, isCustomerTypeContact, isMaxPerUserUsageReached, isMaxTotalUsageReached, isSyntheticCustomerPhone, isZipMedia, linkUnclaimedContactToUser, llmAgentToChatAgentOptions, loadSettingsGroupFromDb, loadUserVendorContext, mergeGuardrailsIntoSystemPrompt, messagingPlugins, metaFetchUserManagedPages, metaPostPageFeed, metaPostPagePhoto, metaResolvePageAccessToken, newUserInviteToken, normalizeCustomerPhone, normalizePhoneE164, normalizeRefundTiers, overlayCmsPlugins, parseBlogGeneratorAgentContent, parseBlogGeneratorModelOutput, parseBlogMetadataEnrichmentJson, parseLlmAgentValidationRules, pgBossScheduleNameForId, queueErpCreateContactIfEnabled, queueJobScheduleNow, queuePlugin, queueSms, recordDiscountUsage, registerJobRunnerWorker, registerMessagingQueueProcessors, registerSmsQueueProcessor, relativePathFromMediaParentId, resolveBlogCategoryIdByName, resolveSettingsEncryptionKey, resolveVendorIdForContactCheck, sanitizeMediaFolderPath, sanitizeStorageSegment, sendVendorOnboardEmails, simpleDecrypt, simpleEncrypt, syncJobScheduleToPgBoss, validateRefundTiers, validateScheduleInput, validateUserMessageAgainstAgentRules, validateUserMessageAgainstStructuredRules, verifyAndConsumeOtpChallenge, verifyOtpCodeHash, whatsappPlugin, wrapGetCmsWithMessaging } from './chunk-W42UZLQO.js';
4
+ export { deductInventoryForConfirmedOrder, mergeInventoryLines, orderInventorySnapshotFromRow, orderStatusHoldsStock, reconcileOrderInventoryBetweenSnapshots, restoreInventoryForCancelledOrder, validateInventoryForConfirmedOrderLines, validateInventoryForOrderBecomingConfirmed } from './chunk-3K5AIEIZ.js';
5
+ export { activeUniqueValueExists, retireSoftDeletedUniqueValue } from './chunk-DBPSJYLZ.js';
6
+ import { parseEmailRecipientsFromConfig } from './chunk-YXH2UUEZ.js';
7
+ export { EmailService, buildEventOrderTemplateVariables, emailPlugin, emailTemplates, initWhatsappTriggerDispatcher, joinRecipientsForSend, parseEmailRecipientsFromConfig, queueWhatsApp, registerWhatsAppQueueProcessor, renderEmail, renderLayout, resendOrderNotification, serializeEmailRecipients } from './chunk-YXH2UUEZ.js';
6
8
  export { KNOWN_NOTIFICATION_TRIGGERS, notificationTriggerEmitter } from './chunk-HCIRL37O.js';
7
9
  import './chunk-JXF23MPG.js';
8
- import './chunk-WEMDMVHQ.js';
9
- import { queueOrderPlacedEmails } from './chunk-5ELSW2UP.js';
10
- export { queueEmail, queueOrderPlacedEmails, queueVendorOnboardEmails, registerEmailQueueProcessor } from './chunk-5ELSW2UP.js';
10
+ import { queueOrderPlacedEmails } from './chunk-L3525VXI.js';
11
+ export { queueEmail, queueOrderPlacedEmails, queueVendorOnboardEmails, registerEmailQueueProcessor } from './chunk-L3525VXI.js';
12
+ import { mergeEmailLayoutCompanyDetails } from './chunk-2KUCQVAQ.js';
13
+ export { INVOICE_TEMPLATE_IDS, INVOICE_TEMPLATE_OPTIONS, buildLocalInvoicePdfForOrder, generateLocalInvoicePdf, getCompanyDetailsFromSettings, isOrderEligibleForInvoiceEmail, mergeEmailLayoutCompanyDetails, normalizeInvoiceTemplateId, resolveInvoiceAssetUrl, resolveOrderInvoicePdfBytes, streamOrderInvoicePdf } from './chunk-2KUCQVAQ.js';
11
14
  import './chunk-MQBT33IV.js';
12
15
  import './chunk-CRFV5WJK.js';
13
- export { EVENT_ORDER_MESSAGE_TEMPLATE_DEFAULTS, EVENT_ORDER_TEMPLATE_KEY, EVENT_ORDER_TEMPLATE_VARIABLES, resolveEventOrderTemplate } from './chunk-KFFB6EMZ.js';
16
+ export { EVENT_ORDER_MESSAGE_TEMPLATE_DEFAULTS, EVENT_ORDER_TEMPLATE_KEY, EVENT_ORDER_TEMPLATE_VARIABLES, resolveEventOrderTemplate } from './chunk-2HU5R2JE.js';
14
17
  import { PgBossService } from './chunk-GO7PPYNU.js';
15
18
  export { JOB_RUNNER_QUEUE, PgBossService } from './chunk-GO7PPYNU.js';
16
- export { createCmsMiddleware, defaultPublicApiMethods, getNextAuthOptions, getStorefrontNextAuthOptions, isAuthDebugClientEnabled, isAuthDebugEnabled, logAuth, logAuthClient, nextAuthCookieDebugInfo, seedAdministratorPermissions, summarizeSessionUserForLog } from './chunk-I6NH72MO.js';
17
- export { OPEN_ENDPOINTS, PERMISSION_REQUIRED_ENDPOINTS, RBAC_ADMIN_ONLY_ENTITIES, canManageRoles, createAuthHelpers, createCmsAuthBundle, getRequiredPermission, isOpenEndpoint, isPublicMethod, sessionHasEntityAccess } from './chunk-BLR6H5GL.js';
18
- import { isSuperAdmin, isVendorGroupName } from './chunk-DN65KDIA.js';
19
- export { ADMIN_GROUP_NAME, SUPER_ADMIN_GROUP_ID, VENDOR_ADMIN_GROUP_ID, VENDOR_OWNER_GROUP_NAME, VENDOR_SCOPED_STORE_ENTITIES, VENDOR_STORE_RBAC_ENTITIES, canManageVendorRoles, canManageVendorTeam, canOnboardVendors, explainSessionEntityAccess, getPermissionableEntityKeys, hasEntityPermission, isPlatformAdministrator, isRbacDebugEnabled, isSuperAdmin, isSuperAdminGroupName, isVendorAdmin, isVendorGroupName, isVendorOwner, isVendorPortalUser, isVendorStaff, logEntityAccessDecision, logRbac, permissionRowsToRecord, resolveVendorScopeFromSessionUser, summarizeEntityPerms, vendorPortalFlagsFromUser } from './chunk-DN65KDIA.js';
19
+ export { createCmsMiddleware, defaultPublicApiMethods, getNextAuthOptions, getStorefrontNextAuthOptions, isAuthDebugClientEnabled, isAuthDebugEnabled, logAuth, logAuthClient, nextAuthCookieDebugInfo, seedAdministratorPermissions, summarizeSessionUserForLog } from './chunk-YC4NUZCS.js';
20
+ export { OPEN_ENDPOINTS, PERMISSION_REQUIRED_ENDPOINTS, RBAC_ADMIN_ONLY_ENTITIES, canManageRoles, createAuthHelpers, createCmsAuthBundle, getRequiredPermission, isOpenEndpoint, isPublicMethod, sessionHasEntityAccess } from './chunk-ZF2RQWXB.js';
21
+ import { isSuperAdmin, isVendorGroupName } from './chunk-JIWUVQ6B.js';
22
+ export { ADMIN_GROUP_NAME, SUPER_ADMIN_GROUP_ID, VENDOR_ADMIN_GROUP_ID, VENDOR_GROUP_NAME, VENDOR_OWNER_GROUP_NAME, VENDOR_SCOPED_STORE_ENTITIES, VENDOR_STORE_RBAC_ENTITIES, canManageVendorRoles, canManageVendorTeam, canOnboardVendors, explainSessionEntityAccess, getPermissionableEntityKeys, hasEntityPermission, isPlatformAdministrator, isRbacDebugEnabled, isSuperAdmin, isSuperAdminGroupName, isVendorAdmin, isVendorGroupName, isVendorOwner, isVendorPortalUser, isVendorStaff, logEntityAccessDecision, logRbac, permissionRowsToRecord, resolveVendorScopeFromSessionUser, summarizeEntityPerms, vendorPortalFlagsFromUser } from './chunk-JIWUVQ6B.js';
20
23
  export { queueErpPaidOrderForOrderId } from './chunk-TDV6EJHV.js';
21
24
  import { erpSafeWebhookUrl, logErp, warnErp, errorErp } from './chunk-SYBOCAWB.js';
22
25
  export { queueErp, registerErpQueueProcessor } from './chunk-SYBOCAWB.js';
@@ -2258,6 +2261,7 @@ async function sendOrderPlacedEmailsAfterConfirmation(orderId, deps) {
2258
2261
  const salesTeamEmails = parseEmailRecipientsFromConfig(emailSettings.salesTeamEmails ?? emailSettings.salesTeamEmail);
2259
2262
  const cms = await deps.getCms();
2260
2263
  await queueOrderPlacedEmails(cms, {
2264
+ orderId,
2261
2265
  orderNumber: o.orderNumber,
2262
2266
  total: o.total,
2263
2267
  subtotal: o.subtotal,
@@ -0,0 +1,44 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ export class OrderItemsVariantId1781810000000 implements MigrationInterface {
4
+ name = 'OrderItemsVariantId1781810000000';
5
+
6
+ public async up(queryRunner: QueryRunner): Promise<void> {
7
+ await queryRunner.query(`
8
+ ALTER TABLE "order_items"
9
+ ADD COLUMN IF NOT EXISTS "variantId" integer
10
+ `);
11
+ await queryRunner.query(`
12
+ CREATE INDEX IF NOT EXISTS "IDX_order_items_variantId"
13
+ ON "order_items" ("variantId")
14
+ `);
15
+ // Best-effort FK when product_variants exists
16
+ await queryRunner.query(`
17
+ DO $$
18
+ BEGIN
19
+ IF EXISTS (
20
+ SELECT 1 FROM information_schema.tables
21
+ WHERE table_name = 'product_variants'
22
+ ) AND NOT EXISTS (
23
+ SELECT 1 FROM information_schema.table_constraints
24
+ WHERE constraint_name = 'FK_order_items_variant'
25
+ ) THEN
26
+ ALTER TABLE "order_items"
27
+ ADD CONSTRAINT "FK_order_items_variant"
28
+ FOREIGN KEY ("variantId") REFERENCES "product_variants"("id")
29
+ ON DELETE SET NULL ON UPDATE NO ACTION;
30
+ END IF;
31
+ END $$;
32
+ `);
33
+ }
34
+
35
+ public async down(queryRunner: QueryRunner): Promise<void> {
36
+ await queryRunner.query(`
37
+ ALTER TABLE "order_items" DROP CONSTRAINT IF EXISTS "FK_order_items_variant"
38
+ `);
39
+ await queryRunner.query(`DROP INDEX IF EXISTS "IDX_order_items_variantId"`);
40
+ await queryRunner.query(`
41
+ ALTER TABLE "order_items" DROP COLUMN IF EXISTS "variantId"
42
+ `);
43
+ }
44
+ }
@@ -0,0 +1,46 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ export class UserInviteStatusToken1781900000000 implements MigrationInterface {
4
+ name = 'UserInviteStatusToken1781900000000';
5
+
6
+ public async up(queryRunner: QueryRunner): Promise<void> {
7
+ await queryRunner.query(`
8
+ DO $$ BEGIN
9
+ CREATE TYPE "users_invitestatus_enum" AS ENUM ('pending', 'active');
10
+ EXCEPTION WHEN duplicate_object THEN NULL;
11
+ END $$
12
+ `);
13
+
14
+ await queryRunner.query(`
15
+ ALTER TABLE "users"
16
+ ADD COLUMN IF NOT EXISTS "inviteStatus" "users_invitestatus_enum" NOT NULL DEFAULT 'active'
17
+ `);
18
+ await queryRunner.query(`
19
+ ALTER TABLE "users"
20
+ ADD COLUMN IF NOT EXISTS "inviteToken" character varying
21
+ `);
22
+
23
+ // Existing users with a password are active; password-less users are pending invites.
24
+ await queryRunner.query(`
25
+ UPDATE "users"
26
+ SET "inviteStatus" = CASE
27
+ WHEN "password" IS NOT NULL AND TRIM("password") <> '' THEN 'active'::"users_invitestatus_enum"
28
+ ELSE 'pending'::"users_invitestatus_enum"
29
+ END
30
+ WHERE "deleted" = false
31
+ `);
32
+
33
+ await queryRunner.query(`
34
+ CREATE INDEX IF NOT EXISTS "IDX_users_inviteToken"
35
+ ON "users" ("inviteToken")
36
+ WHERE "inviteToken" IS NOT NULL
37
+ `);
38
+ }
39
+
40
+ public async down(queryRunner: QueryRunner): Promise<void> {
41
+ await queryRunner.query(`DROP INDEX IF EXISTS "IDX_users_inviteToken"`);
42
+ await queryRunner.query(`ALTER TABLE "users" DROP COLUMN IF EXISTS "inviteToken"`);
43
+ await queryRunner.query(`ALTER TABLE "users" DROP COLUMN IF EXISTS "inviteStatus"`);
44
+ await queryRunner.query(`DROP TYPE IF EXISTS "users_invitestatus_enum"`);
45
+ }
46
+ }
@@ -0,0 +1,58 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ /**
4
+ * Add combos.slug (unique per vendor), backfill from name.
5
+ */
6
+ export class ComboSlug1782000000000 implements MigrationInterface {
7
+ name = 'ComboSlug1782000000000';
8
+
9
+ public async up(queryRunner: QueryRunner): Promise<void> {
10
+ await queryRunner.query(`
11
+ ALTER TABLE "combos"
12
+ ADD COLUMN IF NOT EXISTS "slug" character varying
13
+ `);
14
+
15
+ // Slugify name; empty → combo-{id}
16
+ await queryRunner.query(`
17
+ UPDATE "combos"
18
+ SET "slug" = CASE
19
+ WHEN NULLIF(TRIM(BOTH '-' FROM LOWER(REGEXP_REPLACE(COALESCE(TRIM("name"), ''), '[^a-zA-Z0-9]+', '-', 'g'))), '') IS NULL
20
+ THEN 'combo-' || "id"::text
21
+ ELSE TRIM(BOTH '-' FROM LOWER(REGEXP_REPLACE(COALESCE(TRIM("name"), ''), '[^a-zA-Z0-9]+', '-', 'g')))
22
+ END
23
+ WHERE "slug" IS NULL OR TRIM("slug") = ''
24
+ `);
25
+
26
+ // Deduplicate within vendor (append -id when collisions remain)
27
+ await queryRunner.query(`
28
+ WITH ranked AS (
29
+ SELECT
30
+ id,
31
+ "vendorId",
32
+ slug,
33
+ ROW_NUMBER() OVER (PARTITION BY "vendorId", slug ORDER BY id) AS rn
34
+ FROM "combos"
35
+ WHERE deleted = false OR deleted IS NULL
36
+ )
37
+ UPDATE "combos" c
38
+ SET slug = c.slug || '-' || c.id::text
39
+ FROM ranked r
40
+ WHERE c.id = r.id AND r.rn > 1
41
+ `);
42
+
43
+ await queryRunner.query(`
44
+ ALTER TABLE "combos"
45
+ ALTER COLUMN "slug" SET NOT NULL
46
+ `);
47
+
48
+ await queryRunner.query(`
49
+ CREATE UNIQUE INDEX IF NOT EXISTS "UQ_combos_vendor_slug"
50
+ ON "combos" ("vendorId", "slug")
51
+ `);
52
+ }
53
+
54
+ public async down(queryRunner: QueryRunner): Promise<void> {
55
+ await queryRunner.query(`DROP INDEX IF EXISTS "UQ_combos_vendor_slug"`);
56
+ await queryRunner.query(`ALTER TABLE "combos" DROP COLUMN IF EXISTS "slug"`);
57
+ }
58
+ }
@@ -0,0 +1,20 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ /**
4
+ * Add discount_rules.type value `deviceType` (Web / Mobile condition; admin-only for now).
5
+ */
6
+ export class DiscountDeviceType1782100000000 implements MigrationInterface {
7
+ name = 'DiscountDeviceType1782100000000';
8
+
9
+ public async up(queryRunner: QueryRunner): Promise<void> {
10
+ await queryRunner.query(`
11
+ ALTER TYPE "public"."discount_rules_type_enum"
12
+ ADD VALUE IF NOT EXISTS 'deviceType'
13
+ `);
14
+ }
15
+
16
+ public async down(queryRunner: QueryRunner): Promise<void> {
17
+ // Postgres cannot easily remove a single enum value; leave as no-op.
18
+ void queryRunner;
19
+ }
20
+ }
@@ -0,0 +1,233 @@
1
+ import type { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ /**
4
+ * Vendor team/profiles redesign:
5
+ * - Rename user group "Vendor Owner" → "Vendor"
6
+ * - Create vendor_user_profiles
7
+ * - Add vendor_users.vendorUserProfileId; backfill profiles + vendorRoleId
8
+ * - Drop vendor_users.role and vendors.pan
9
+ */
10
+ export class VendorTeamProfiles1782200000000 implements MigrationInterface {
11
+ name = 'VendorTeamProfiles1782200000000';
12
+
13
+ public async up(queryRunner: QueryRunner): Promise<void> {
14
+ await queryRunner.query(`
15
+ UPDATE "user_groups"
16
+ SET "name" = 'Vendor'
17
+ WHERE "name" = 'Vendor Owner' AND "deleted" = false
18
+ `);
19
+
20
+ await queryRunner.query(`
21
+ CREATE TABLE IF NOT EXISTS "vendor_user_profiles" (
22
+ "id" SERIAL PRIMARY KEY,
23
+ "name" character varying NOT NULL,
24
+ "email" character varying NOT NULL,
25
+ "phone" character varying,
26
+ "aadhaarNo" character varying,
27
+ "panNo" character varying,
28
+ "addressLine1" character varying,
29
+ "addressLine2" character varying,
30
+ "city" character varying,
31
+ "state" character varying,
32
+ "postalCode" character varying,
33
+ "createdAt" TIMESTAMP NOT NULL DEFAULT now(),
34
+ "updatedAt" TIMESTAMP NOT NULL DEFAULT now()
35
+ )
36
+ `);
37
+
38
+ const hasProfileFk = (await queryRunner.query(`
39
+ SELECT 1 FROM information_schema.columns
40
+ WHERE table_name = 'vendor_users' AND column_name = 'vendorUserProfileId'
41
+ LIMIT 1
42
+ `)) as unknown[];
43
+ if (!hasProfileFk.length) {
44
+ await queryRunner.query(`
45
+ ALTER TABLE "vendor_users"
46
+ ADD COLUMN "vendorUserProfileId" integer
47
+ `);
48
+ }
49
+
50
+ // One profile per membership (loop keeps vu.id ↔ profile.id aligned)
51
+ await queryRunner.query(`
52
+ DO $$
53
+ DECLARE
54
+ r RECORD;
55
+ new_id integer;
56
+ is_owner boolean;
57
+ BEGIN
58
+ FOR r IN
59
+ SELECT
60
+ vu.id AS vu_id,
61
+ vu.role AS vu_role,
62
+ vu."vendorRoleId" AS vendor_role_id,
63
+ COALESCE(NULLIF(TRIM(u.name), ''), COALESCE(NULLIF(TRIM(u.email), ''), 'Vendor user')) AS pname,
64
+ COALESCE(NULLIF(TRIM(u.email), ''), CONCAT('vendor-user-', vu.id, '@placeholder.local')) AS pemail,
65
+ NULLIF(TRIM(u.phone), '') AS pphone,
66
+ v.pan AS vpan,
67
+ v."addressLine1" AS a1,
68
+ v."addressLine2" AS a2,
69
+ v.city AS city,
70
+ v.state AS state,
71
+ v."postalCode" AS postal,
72
+ COALESCE(vr."isOwnerRole", false) AS role_is_owner
73
+ FROM "vendor_users" vu
74
+ INNER JOIN "users" u ON u.id = vu."userId"
75
+ INNER JOIN "vendors" v ON v.id = vu."vendorId"
76
+ LEFT JOIN "vendor_roles" vr ON vr.id = vu."vendorRoleId"
77
+ WHERE vu."vendorUserProfileId" IS NULL
78
+ ORDER BY vu.id
79
+ LOOP
80
+ is_owner := (r.vu_role = 'owner') OR (r.role_is_owner = true);
81
+ INSERT INTO "vendor_user_profiles" (
82
+ "name", "email", "phone", "aadhaarNo", "panNo",
83
+ "addressLine1", "addressLine2", "city", "state", "postalCode",
84
+ "createdAt", "updatedAt"
85
+ ) VALUES (
86
+ r.pname,
87
+ r.pemail,
88
+ r.pphone,
89
+ NULL,
90
+ CASE WHEN is_owner THEN NULLIF(TRIM(r.vpan), '') ELSE NULL END,
91
+ CASE WHEN is_owner THEN r.a1 ELSE NULL END,
92
+ CASE WHEN is_owner THEN r.a2 ELSE NULL END,
93
+ CASE WHEN is_owner THEN r.city ELSE NULL END,
94
+ CASE WHEN is_owner THEN r.state ELSE NULL END,
95
+ CASE WHEN is_owner THEN r.postal ELSE NULL END,
96
+ now(),
97
+ now()
98
+ ) RETURNING id INTO new_id;
99
+ UPDATE "vendor_users" SET "vendorUserProfileId" = new_id WHERE id = r.vu_id;
100
+ END LOOP;
101
+ END $$;
102
+ `);
103
+
104
+ // Ensure vendorRoleId for legacy rows (while role column still exists)
105
+ await queryRunner.query(`
106
+ UPDATE "vendor_users" vu
107
+ SET "vendorRoleId" = vr.id
108
+ FROM "vendor_roles" vr
109
+ WHERE vu."vendorId" = vr."vendorId"
110
+ AND vu."vendorRoleId" IS NULL
111
+ AND vr.deleted = false
112
+ AND vu.role = 'owner'
113
+ AND vr."isOwnerRole" = true
114
+ `);
115
+
116
+ await queryRunner.query(`
117
+ UPDATE "vendor_users" vu
118
+ SET "vendorRoleId" = vr.id
119
+ FROM "vendor_roles" vr
120
+ WHERE vu."vendorId" = vr."vendorId"
121
+ AND vu."vendorRoleId" IS NULL
122
+ AND vr.deleted = false
123
+ AND vu.role IS DISTINCT FROM 'owner'
124
+ AND vr.name = 'Viewer'
125
+ AND vr."isSystem" = true
126
+ `);
127
+
128
+ await queryRunner.query(`
129
+ UPDATE "vendor_users" vu
130
+ SET "vendorRoleId" = vr.id
131
+ FROM "vendor_roles" vr
132
+ WHERE vu."vendorId" = vr."vendorId"
133
+ AND vu."vendorRoleId" IS NULL
134
+ AND vr.deleted = false
135
+ AND vr."isOwnerRole" = false
136
+ AND vr."isSystem" = true
137
+ AND vr.name = 'Manager'
138
+ `);
139
+
140
+ const nullProfiles = (await queryRunner.query(`
141
+ SELECT COUNT(*)::int AS c FROM "vendor_users" WHERE "vendorUserProfileId" IS NULL
142
+ `)) as Array<{ c: number }>;
143
+ if (Number(nullProfiles[0]?.c ?? 0) > 0) {
144
+ throw new Error('VendorTeamProfiles migration: some vendor_users still lack vendorUserProfileId');
145
+ }
146
+
147
+ await queryRunner.query(`
148
+ ALTER TABLE "vendor_users"
149
+ ALTER COLUMN "vendorUserProfileId" SET NOT NULL
150
+ `);
151
+
152
+ const fkExists = (await queryRunner.query(`
153
+ SELECT 1 FROM pg_constraint WHERE conname = 'FK_vendor_users_vendorUserProfileId' LIMIT 1
154
+ `)) as unknown[];
155
+ if (!fkExists.length) {
156
+ await queryRunner.query(`
157
+ ALTER TABLE "vendor_users"
158
+ ADD CONSTRAINT "FK_vendor_users_vendorUserProfileId"
159
+ FOREIGN KEY ("vendorUserProfileId") REFERENCES "vendor_user_profiles"("id")
160
+ ON DELETE RESTRICT
161
+ `);
162
+ }
163
+
164
+ const roleCol = (await queryRunner.query(`
165
+ SELECT 1 FROM information_schema.columns
166
+ WHERE table_name = 'vendor_users' AND column_name = 'role'
167
+ LIMIT 1
168
+ `)) as unknown[];
169
+ if (roleCol.length) {
170
+ await queryRunner.query(`ALTER TABLE "vendor_users" DROP COLUMN "role"`);
171
+ }
172
+
173
+ const panCol = (await queryRunner.query(`
174
+ SELECT 1 FROM information_schema.columns
175
+ WHERE table_name = 'vendors' AND column_name = 'pan'
176
+ LIMIT 1
177
+ `)) as unknown[];
178
+ if (panCol.length) {
179
+ await queryRunner.query(`ALTER TABLE "vendors" DROP COLUMN "pan"`);
180
+ }
181
+ }
182
+
183
+ public async down(queryRunner: QueryRunner): Promise<void> {
184
+ const panCol = (await queryRunner.query(`
185
+ SELECT 1 FROM information_schema.columns
186
+ WHERE table_name = 'vendors' AND column_name = 'pan'
187
+ LIMIT 1
188
+ `)) as unknown[];
189
+ if (!panCol.length) {
190
+ await queryRunner.query(`ALTER TABLE "vendors" ADD COLUMN "pan" character varying`);
191
+ await queryRunner.query(`
192
+ UPDATE "vendors" v
193
+ SET pan = p."panNo"
194
+ FROM "vendor_users" vu
195
+ INNER JOIN "vendor_user_profiles" p ON p.id = vu."vendorUserProfileId"
196
+ INNER JOIN "vendor_roles" vr ON vr.id = vu."vendorRoleId" AND vr."isOwnerRole" = true
197
+ WHERE vu."vendorId" = v.id AND p."panNo" IS NOT NULL
198
+ `);
199
+ }
200
+
201
+ const roleCol = (await queryRunner.query(`
202
+ SELECT 1 FROM information_schema.columns
203
+ WHERE table_name = 'vendor_users' AND column_name = 'role'
204
+ LIMIT 1
205
+ `)) as unknown[];
206
+ if (!roleCol.length) {
207
+ await queryRunner.query(`
208
+ ALTER TABLE "vendor_users"
209
+ ADD COLUMN "role" character varying NOT NULL DEFAULT 'staff'
210
+ `);
211
+ await queryRunner.query(`
212
+ UPDATE "vendor_users" vu
213
+ SET "role" = 'owner'
214
+ FROM "vendor_roles" vr
215
+ WHERE vu."vendorRoleId" = vr.id AND vr."isOwnerRole" = true
216
+ `);
217
+ }
218
+
219
+ await queryRunner.query(`
220
+ ALTER TABLE "vendor_users" DROP CONSTRAINT IF EXISTS "FK_vendor_users_vendorUserProfileId"
221
+ `);
222
+ await queryRunner.query(`
223
+ ALTER TABLE "vendor_users" DROP COLUMN IF EXISTS "vendorUserProfileId"
224
+ `);
225
+ await queryRunner.query(`DROP TABLE IF EXISTS "vendor_user_profiles"`);
226
+
227
+ await queryRunner.query(`
228
+ UPDATE "user_groups"
229
+ SET "name" = 'Vendor Owner'
230
+ WHERE "name" = 'Vendor' AND "deleted" = false
231
+ `);
232
+ }
233
+ }
@@ -0,0 +1,75 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ export class AddTypeToOrderNotificationBindings1782300000000
4
+ implements MigrationInterface
5
+ {
6
+ name = 'AddTypeToOrderNotificationBindings1782300000000';
7
+
8
+ public async up(queryRunner: QueryRunner): Promise<void> {
9
+ // 1. Create the audience type enum.
10
+ await queryRunner.query(`
11
+ CREATE TYPE "order_notification_bindings_type_enum" AS ENUM ('customers', 'vendors', 'admin')
12
+ `);
13
+
14
+ // 2. Add the type column, defaulting existing rows to 'customers'.
15
+ await queryRunner.query(`
16
+ ALTER TABLE "order_notification_bindings"
17
+ ADD COLUMN "type" "order_notification_bindings_type_enum" NOT NULL DEFAULT 'customers'
18
+ `);
19
+
20
+ // 3. Drop old unique constraint on (triggerKey, channel).
21
+ await queryRunner.query(`
22
+ DO $$
23
+ DECLARE
24
+ old_constraint_name text;
25
+ BEGIN
26
+ SELECT con.conname INTO old_constraint_name
27
+ FROM pg_constraint con
28
+ JOIN pg_class rel ON rel.oid = con.conrelid
29
+ WHERE rel.relname = 'order_notification_bindings'
30
+ AND con.contype = 'u'
31
+ AND con.conname LIKE '%triggerKey_channel%'
32
+ LIMIT 1;
33
+
34
+ IF old_constraint_name IS NOT NULL THEN
35
+ EXECUTE format('ALTER TABLE "order_notification_bindings" DROP CONSTRAINT %I', old_constraint_name);
36
+ END IF;
37
+ END $$;
38
+ `);
39
+
40
+ // 4. Add new composite unique constraint on (triggerKey, channel, type).
41
+ await queryRunner.query(`
42
+ ALTER TABLE "order_notification_bindings"
43
+ ADD CONSTRAINT "UQ_order_notification_bindings_triggerKey_channel_type" UNIQUE ("triggerKey", "channel", "type")
44
+ `);
45
+ }
46
+
47
+ public async down(queryRunner: QueryRunner): Promise<void> {
48
+ // 1. Drop composite unique constraint.
49
+ await queryRunner.query(`
50
+ ALTER TABLE "order_notification_bindings"
51
+ DROP CONSTRAINT "UQ_order_notification_bindings_triggerKey_channel_type"
52
+ `);
53
+
54
+ // 2. Remove vendor/admin audience rows prior to rollback.
55
+ await queryRunner.query(`
56
+ DELETE FROM "order_notification_bindings" WHERE "type" != 'customers'
57
+ `);
58
+
59
+ // 3. Drop type column.
60
+ await queryRunner.query(`
61
+ ALTER TABLE "order_notification_bindings" DROP COLUMN "type"
62
+ `);
63
+
64
+ // 4. Restore original unique constraint on (triggerKey, channel).
65
+ await queryRunner.query(`
66
+ ALTER TABLE "order_notification_bindings"
67
+ ADD CONSTRAINT "UQ_order_notification_bindings_triggerKey_channel" UNIQUE ("triggerKey", "channel")
68
+ `);
69
+
70
+ // 5. Drop enum type.
71
+ await queryRunner.query(`
72
+ DROP TYPE "order_notification_bindings_type_enum"
73
+ `);
74
+ }
75
+ }
@@ -0,0 +1,39 @@
1
+ 'use strict';
2
+
3
+ var chunkHY3AXLOI_cjs = require('./chunk-HY3AXLOI.cjs');
4
+ require('./chunk-USNT2KNT.cjs');
5
+
6
+
7
+
8
+ Object.defineProperty(exports, "deductInventoryForConfirmedOrder", {
9
+ enumerable: true,
10
+ get: function () { return chunkHY3AXLOI_cjs.deductInventoryForConfirmedOrder; }
11
+ });
12
+ Object.defineProperty(exports, "mergeInventoryLines", {
13
+ enumerable: true,
14
+ get: function () { return chunkHY3AXLOI_cjs.mergeInventoryLines; }
15
+ });
16
+ Object.defineProperty(exports, "orderInventorySnapshotFromRow", {
17
+ enumerable: true,
18
+ get: function () { return chunkHY3AXLOI_cjs.orderInventorySnapshotFromRow; }
19
+ });
20
+ Object.defineProperty(exports, "orderStatusHoldsStock", {
21
+ enumerable: true,
22
+ get: function () { return chunkHY3AXLOI_cjs.orderStatusHoldsStock; }
23
+ });
24
+ Object.defineProperty(exports, "reconcileOrderInventoryBetweenSnapshots", {
25
+ enumerable: true,
26
+ get: function () { return chunkHY3AXLOI_cjs.reconcileOrderInventoryBetweenSnapshots; }
27
+ });
28
+ Object.defineProperty(exports, "restoreInventoryForCancelledOrder", {
29
+ enumerable: true,
30
+ get: function () { return chunkHY3AXLOI_cjs.restoreInventoryForCancelledOrder; }
31
+ });
32
+ Object.defineProperty(exports, "validateInventoryForConfirmedOrderLines", {
33
+ enumerable: true,
34
+ get: function () { return chunkHY3AXLOI_cjs.validateInventoryForConfirmedOrderLines; }
35
+ });
36
+ Object.defineProperty(exports, "validateInventoryForOrderBecomingConfirmed", {
37
+ enumerable: true,
38
+ get: function () { return chunkHY3AXLOI_cjs.validateInventoryForOrderBecomingConfirmed; }
39
+ });
@@ -0,0 +1,2 @@
1
+ export { deductInventoryForConfirmedOrder, mergeInventoryLines, orderInventorySnapshotFromRow, orderStatusHoldsStock, reconcileOrderInventoryBetweenSnapshots, restoreInventoryForCancelledOrder, validateInventoryForConfirmedOrderLines, validateInventoryForOrderBecomingConfirmed } from './chunk-3K5AIEIZ.js';
2
+ import './chunk-SHUYVCID.js';
@@ -1,5 +1,7 @@
1
- export { initWhatsappTriggerDispatcher, resendOrderNotification } from './chunk-NNQBWDCI.js';
1
+ export { initWhatsappTriggerDispatcher, resendOrderNotification } from './chunk-YXH2UUEZ.js';
2
2
  import './chunk-HCIRL37O.js';
3
- import './chunk-5ELSW2UP.js';
3
+ import './chunk-L3525VXI.js';
4
+ import './chunk-2KUCQVAQ.js';
4
5
  import './chunk-CRFV5WJK.js';
6
+ import './chunk-JC6DLWTE.js';
5
7
  import './chunk-SHUYVCID.js';
@@ -1,18 +1,20 @@
1
1
  'use strict';
2
2
 
3
- var chunk22FFHLTO_cjs = require('./chunk-22FFHLTO.cjs');
3
+ var chunkLMJ7RKPF_cjs = require('./chunk-LMJ7RKPF.cjs');
4
4
  require('./chunk-UCKN4BBY.cjs');
5
- require('./chunk-XW5ATPRW.cjs');
5
+ require('./chunk-V25RDUOU.cjs');
6
+ require('./chunk-BXYZDMTZ.cjs');
6
7
  require('./chunk-OOTLNH63.cjs');
8
+ require('./chunk-UPLVMVRX.cjs');
7
9
  require('./chunk-USNT2KNT.cjs');
8
10
 
9
11
 
10
12
 
11
13
  Object.defineProperty(exports, "initWhatsappTriggerDispatcher", {
12
14
  enumerable: true,
13
- get: function () { return chunk22FFHLTO_cjs.initWhatsappTriggerDispatcher; }
15
+ get: function () { return chunkLMJ7RKPF_cjs.initWhatsappTriggerDispatcher; }
14
16
  });
15
17
  Object.defineProperty(exports, "resendOrderNotification", {
16
18
  enumerable: true,
17
- get: function () { return chunk22FFHLTO_cjs.resendOrderNotification; }
19
+ get: function () { return chunkLMJ7RKPF_cjs.resendOrderNotification; }
18
20
  });
@@ -1,4 +1,4 @@
1
- import { summarizeEntityPerms, permissionRowsToRecord } from './chunk-DN65KDIA.js';
1
+ import { summarizeEntityPerms, permissionRowsToRecord } from './chunk-JIWUVQ6B.js';
2
2
  import { __name } from './chunk-SHUYVCID.js';
3
3
 
4
4
  // src/auth/rbac-debug-db.ts
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkX6UQFV4X_cjs = require('./chunk-X6UQFV4X.cjs');
3
+ var chunk77NUXO6A_cjs = require('./chunk-77NUXO6A.cjs');
4
4
  var chunkUSNT2KNT_cjs = require('./chunk-USNT2KNT.cjs');
5
5
 
6
6
  // src/auth/rbac-debug-db.ts
@@ -27,7 +27,7 @@ async function loadDbPermissionsForUser(dataSource, userId) {
27
27
  return {
28
28
  groupId,
29
29
  groupName,
30
- dbEntityPerms: chunkX6UQFV4X_cjs.summarizeEntityPerms(chunkX6UQFV4X_cjs.permissionRowsToRecord(permRows))
30
+ dbEntityPerms: chunk77NUXO6A_cjs.summarizeEntityPerms(chunk77NUXO6A_cjs.permissionRowsToRecord(permRows))
31
31
  };
32
32
  }
33
33
  chunkUSNT2KNT_cjs.__name(loadDbPermissionsForUser, "loadDbPermissionsForUser");