@infuro/cms-core 1.0.72 → 1.0.74

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 (43) hide show
  1. package/dist/admin.cjs +543 -120
  2. package/dist/admin.js +545 -122
  3. package/dist/api.cjs +37 -37
  4. package/dist/api.d.cts +13 -6
  5. package/dist/api.d.ts +13 -6
  6. package/dist/api.js +5 -5
  7. package/dist/auth.cjs +11 -11
  8. package/dist/auth.d.cts +15 -0
  9. package/dist/auth.d.ts +15 -0
  10. package/dist/auth.js +1 -1
  11. package/dist/{chunk-BQQMTQ4C.cjs → chunk-25T6HP5T.cjs} +2 -2
  12. package/dist/{chunk-TTOEY7AH.cjs → chunk-2JV4EDY3.cjs} +3 -3
  13. package/dist/{chunk-LJ5C4RBF.js → chunk-6TRH3VY7.js} +1 -1
  14. package/dist/{chunk-4MNVIGVJ.cjs → chunk-D3SR6CYU.cjs} +3 -3
  15. package/dist/{chunk-PQJIJ4ZX.js → chunk-DAUBLBTP.js} +1 -1
  16. package/dist/{chunk-SCE2GIKH.js → chunk-DEGN4BTH.js} +9 -0
  17. package/dist/{chunk-CKTRA3Q2.cjs → chunk-F3FKBNMQ.cjs} +9 -0
  18. package/dist/{chunk-SRGDHASW.cjs → chunk-H4UIIBFD.cjs} +2571 -2096
  19. package/dist/{chunk-YHVA5NHI.js → chunk-LUSJITTI.js} +43 -6
  20. package/dist/{chunk-43UVXBEH.js → chunk-OQOO2JMB.js} +2529 -2054
  21. package/dist/{chunk-HZZTDM5J.js → chunk-R5HLPH6P.js} +1 -1
  22. package/dist/{chunk-3LF4RYAJ.js → chunk-X3IJG25M.js} +1 -1
  23. package/dist/{chunk-2JHGIWH7.cjs → chunk-X5ILLSTD.cjs} +43 -6
  24. package/dist/{chunk-NIBEGDD4.cjs → chunk-ZBSH4GWB.cjs} +1 -1
  25. package/dist/{email-queue-MWP4R67H.js → email-queue-5TOJJT3P.js} +3 -3
  26. package/dist/{email-queue-BJDH2ID7.cjs → email-queue-X2A46VD3.cjs} +7 -7
  27. package/dist/{emit-order-notification-trigger-TBXAZAPS.js → emit-order-notification-trigger-3RAVWKLG.js} +1 -1
  28. package/dist/{emit-order-notification-trigger-I4HQSTEN.cjs → emit-order-notification-trigger-MY3KP7CD.cjs} +3 -3
  29. package/dist/{erp-order-invoice-5O42ZKC5.cjs → erp-order-invoice-23BDWC2H.cjs} +6 -6
  30. package/dist/{erp-order-invoice-JEQKFXG4.js → erp-order-invoice-SEZZUDMW.js} +2 -2
  31. package/dist/generate-local-invoice-pdf-V5FHS23Z.js +3 -0
  32. package/dist/{generate-local-invoice-pdf-2NCA2WBL.cjs → generate-local-invoice-pdf-XYBVKHNP.cjs} +2 -2
  33. package/dist/index.cjs +243 -243
  34. package/dist/index.d.cts +31 -9
  35. package/dist/index.d.ts +31 -9
  36. package/dist/index.js +10 -10
  37. package/dist/migrations/1783400000000-MakeProductConfigTaxIdNullable.ts +40 -0
  38. package/dist/{order-completion-otp-handlers-KHLZQQJX.js → order-completion-otp-handlers-2WOFSORP.js} +4 -4
  39. package/dist/{order-completion-otp-handlers-2ZKRK5SN.cjs → order-completion-otp-handlers-EWY47XUA.cjs} +6 -6
  40. package/dist/{order-notification-dispatcher-Z3MXNF4U.js → order-notification-dispatcher-COR2ZHM3.js} +4 -4
  41. package/dist/{order-notification-dispatcher-37KDVHBM.cjs → order-notification-dispatcher-KTOAMMSD.cjs} +9 -9
  42. package/package.json +1 -1
  43. package/dist/generate-local-invoice-pdf-XUH6GYEJ.js +0 -3
package/dist/index.d.cts CHANGED
@@ -837,6 +837,14 @@ interface SessionUser {
837
837
  adminAccess?: boolean;
838
838
  /** Vendor stores this user can access (from vendor_users). */
839
839
  vendorIds?: number[];
840
+ /** Full list of accessible vendor stores with names & roles */
841
+ vendorStores?: Array<{
842
+ id: number;
843
+ name: string;
844
+ slug?: string;
845
+ roleName?: string;
846
+ isOwner?: boolean;
847
+ }>;
840
848
  /** Active vendor for scoped CRUD (vendor staff). */
841
849
  activeVendorId?: number | null;
842
850
  /** @deprecated Prefer isVendorRoleOwner / vendorRoleId. Legacy owner|staff hint. */
@@ -1527,10 +1535,6 @@ declare function createLlmAgentKnowledgeHandlers(config: LlmAgentKnowledgeApiCon
1527
1535
  unlink(req: Request, slug: string, documentIdStr: string): Promise<Response>;
1528
1536
  } | null;
1529
1537
 
1530
- /**
1531
- * Single CMS API handler: dashboard, analytics, upload, media zip extract, blog/form by slug, users API, user auth, CRUD. Mount once (e.g. app/api/[[...path]]/route.ts).
1532
- */
1533
-
1534
1538
  /** CMS instance with getPlugin; when provided, analytics and userAuth.sendEmail can be resolved from plugins when not passed. */
1535
1539
  type CmsGetter = () => Promise<{
1536
1540
  getPlugin: (name: string) => unknown;
@@ -1594,9 +1598,10 @@ interface CmsApiHandlerConfig {
1594
1598
  /** Same as `getSessionUser` (from `createAuthHelpers().getAuthenticatedUser`). */
1595
1599
  getAuthenticatedUser?: () => Promise<SessionUser | null>;
1596
1600
  }
1597
- declare function createCmsApiHandler(config: CmsApiHandlerConfig): {
1598
- handle(method: string, pathInput: string[], req: Request): Promise<Response>;
1601
+ type CmsApiHandler = {
1602
+ handle: (method: string, pathInput: string[], req: Request) => Promise<Response>;
1599
1603
  };
1604
+ declare function createCmsApiHandler(config: CmsApiHandlerConfig): CmsApiHandler;
1600
1605
 
1601
1606
  interface JobScheduleApiConfig {
1602
1607
  dataSource: DataSource;
@@ -2359,13 +2364,13 @@ declare class RefundPolicy {
2359
2364
  declare class ProductConfig {
2360
2365
  id: number;
2361
2366
  productId: number;
2362
- taxId: number;
2367
+ taxId: number | null;
2363
2368
  refundPolicyId: number | null;
2364
2369
  rate: number | null;
2365
2370
  createdAt: Date;
2366
2371
  updatedAt: Date;
2367
2372
  product: Product;
2368
- tax: Tax;
2373
+ tax: Tax | null;
2369
2374
  refundPolicy: RefundPolicy | null;
2370
2375
  }
2371
2376
 
@@ -3027,8 +3032,16 @@ declare function seedDefaultAdmin(ds: DataSource, entityMap: SeedEntityMap, opts
3027
3032
  password?: string;
3028
3033
  }): Promise<void>;
3029
3034
 
3035
+ type VendorStoreSession = {
3036
+ id: number;
3037
+ name: string;
3038
+ slug?: string;
3039
+ roleName?: string;
3040
+ isOwner?: boolean;
3041
+ };
3030
3042
  type UserVendorContext = {
3031
3043
  vendorIds: number[];
3044
+ vendorStores: VendorStoreSession[];
3032
3045
  activeVendorId: number | null;
3033
3046
  /** @deprecated Prefer isVendorRoleOwner / vendorRoleId */
3034
3047
  vendorRole: VendorUserRole | null;
@@ -3100,6 +3113,13 @@ interface NextAuthUser {
3100
3113
  }>;
3101
3114
  };
3102
3115
  vendorIds?: number[];
3116
+ vendorStores?: Array<{
3117
+ id: number;
3118
+ name: string;
3119
+ slug?: string;
3120
+ roleName?: string;
3121
+ isOwner?: boolean;
3122
+ }>;
3103
3123
  activeVendorId?: number | null;
3104
3124
  vendorRole?: 'owner' | 'staff' | null;
3105
3125
  vendorRoleId?: number | null;
@@ -3177,7 +3197,7 @@ declare function buildStorefrontNextAuthOptions(config: Omit<BuildNextAuthOption
3177
3197
  declare function enrichUserWithVendorContext(dataSource: DataSource, user: NextAuthUser | null): Promise<NextAuthUser | null>;
3178
3198
 
3179
3199
  /** Merge DB group + vendor_users into session (JWT often missing these). Server/API only. */
3180
- declare function hydrateVendorSessionUser(dataSource: DataSource, user: SessionUser | null | undefined): Promise<SessionUser | null | undefined>;
3200
+ declare function hydrateVendorSessionUser(dataSource: DataSource, user: SessionUser | null | undefined, preferredVendorId?: number | null): Promise<SessionUser | null | undefined>;
3181
3201
  declare function invalidateMultiVendorCache(): void;
3182
3202
  declare function checkMultiVendorEnabled(dataSource: DataSource): Promise<boolean>;
3183
3203
  declare function invalidateEventsCache(): void;
@@ -4351,6 +4371,8 @@ declare function createVendorOnboardHandlers(config: VendorOnboardHandlersConfig
4351
4371
  resendInvite(req: Request, vendorIdStr: string): Promise<Response>;
4352
4372
  /** POST /api/admin/vendor/switch — set active vendor in session (JWT update via client) */
4353
4373
  switchVendor(req: Request): Promise<Response>;
4374
+ /** GET /api/admin/vendor/context — get user's vendor stores, roles and active vendor */
4375
+ getVendorContext(req?: Request): Promise<Response>;
4354
4376
  /** GET /api/admin/vendor/team */
4355
4377
  listTeam(): Promise<Response>;
4356
4378
  /** POST /api/admin/vendor/team — invite staff (set-password for new; accept-only for existing vendor people) */
package/dist/index.d.ts CHANGED
@@ -837,6 +837,14 @@ interface SessionUser {
837
837
  adminAccess?: boolean;
838
838
  /** Vendor stores this user can access (from vendor_users). */
839
839
  vendorIds?: number[];
840
+ /** Full list of accessible vendor stores with names & roles */
841
+ vendorStores?: Array<{
842
+ id: number;
843
+ name: string;
844
+ slug?: string;
845
+ roleName?: string;
846
+ isOwner?: boolean;
847
+ }>;
840
848
  /** Active vendor for scoped CRUD (vendor staff). */
841
849
  activeVendorId?: number | null;
842
850
  /** @deprecated Prefer isVendorRoleOwner / vendorRoleId. Legacy owner|staff hint. */
@@ -1527,10 +1535,6 @@ declare function createLlmAgentKnowledgeHandlers(config: LlmAgentKnowledgeApiCon
1527
1535
  unlink(req: Request, slug: string, documentIdStr: string): Promise<Response>;
1528
1536
  } | null;
1529
1537
 
1530
- /**
1531
- * Single CMS API handler: dashboard, analytics, upload, media zip extract, blog/form by slug, users API, user auth, CRUD. Mount once (e.g. app/api/[[...path]]/route.ts).
1532
- */
1533
-
1534
1538
  /** CMS instance with getPlugin; when provided, analytics and userAuth.sendEmail can be resolved from plugins when not passed. */
1535
1539
  type CmsGetter = () => Promise<{
1536
1540
  getPlugin: (name: string) => unknown;
@@ -1594,9 +1598,10 @@ interface CmsApiHandlerConfig {
1594
1598
  /** Same as `getSessionUser` (from `createAuthHelpers().getAuthenticatedUser`). */
1595
1599
  getAuthenticatedUser?: () => Promise<SessionUser | null>;
1596
1600
  }
1597
- declare function createCmsApiHandler(config: CmsApiHandlerConfig): {
1598
- handle(method: string, pathInput: string[], req: Request): Promise<Response>;
1601
+ type CmsApiHandler = {
1602
+ handle: (method: string, pathInput: string[], req: Request) => Promise<Response>;
1599
1603
  };
1604
+ declare function createCmsApiHandler(config: CmsApiHandlerConfig): CmsApiHandler;
1600
1605
 
1601
1606
  interface JobScheduleApiConfig {
1602
1607
  dataSource: DataSource;
@@ -2359,13 +2364,13 @@ declare class RefundPolicy {
2359
2364
  declare class ProductConfig {
2360
2365
  id: number;
2361
2366
  productId: number;
2362
- taxId: number;
2367
+ taxId: number | null;
2363
2368
  refundPolicyId: number | null;
2364
2369
  rate: number | null;
2365
2370
  createdAt: Date;
2366
2371
  updatedAt: Date;
2367
2372
  product: Product;
2368
- tax: Tax;
2373
+ tax: Tax | null;
2369
2374
  refundPolicy: RefundPolicy | null;
2370
2375
  }
2371
2376
 
@@ -3027,8 +3032,16 @@ declare function seedDefaultAdmin(ds: DataSource, entityMap: SeedEntityMap, opts
3027
3032
  password?: string;
3028
3033
  }): Promise<void>;
3029
3034
 
3035
+ type VendorStoreSession = {
3036
+ id: number;
3037
+ name: string;
3038
+ slug?: string;
3039
+ roleName?: string;
3040
+ isOwner?: boolean;
3041
+ };
3030
3042
  type UserVendorContext = {
3031
3043
  vendorIds: number[];
3044
+ vendorStores: VendorStoreSession[];
3032
3045
  activeVendorId: number | null;
3033
3046
  /** @deprecated Prefer isVendorRoleOwner / vendorRoleId */
3034
3047
  vendorRole: VendorUserRole | null;
@@ -3100,6 +3113,13 @@ interface NextAuthUser {
3100
3113
  }>;
3101
3114
  };
3102
3115
  vendorIds?: number[];
3116
+ vendorStores?: Array<{
3117
+ id: number;
3118
+ name: string;
3119
+ slug?: string;
3120
+ roleName?: string;
3121
+ isOwner?: boolean;
3122
+ }>;
3103
3123
  activeVendorId?: number | null;
3104
3124
  vendorRole?: 'owner' | 'staff' | null;
3105
3125
  vendorRoleId?: number | null;
@@ -3177,7 +3197,7 @@ declare function buildStorefrontNextAuthOptions(config: Omit<BuildNextAuthOption
3177
3197
  declare function enrichUserWithVendorContext(dataSource: DataSource, user: NextAuthUser | null): Promise<NextAuthUser | null>;
3178
3198
 
3179
3199
  /** Merge DB group + vendor_users into session (JWT often missing these). Server/API only. */
3180
- declare function hydrateVendorSessionUser(dataSource: DataSource, user: SessionUser | null | undefined): Promise<SessionUser | null | undefined>;
3200
+ declare function hydrateVendorSessionUser(dataSource: DataSource, user: SessionUser | null | undefined, preferredVendorId?: number | null): Promise<SessionUser | null | undefined>;
3181
3201
  declare function invalidateMultiVendorCache(): void;
3182
3202
  declare function checkMultiVendorEnabled(dataSource: DataSource): Promise<boolean>;
3183
3203
  declare function invalidateEventsCache(): void;
@@ -4351,6 +4371,8 @@ declare function createVendorOnboardHandlers(config: VendorOnboardHandlersConfig
4351
4371
  resendInvite(req: Request, vendorIdStr: string): Promise<Response>;
4352
4372
  /** POST /api/admin/vendor/switch — set active vendor in session (JWT update via client) */
4353
4373
  switchVendor(req: Request): Promise<Response>;
4374
+ /** GET /api/admin/vendor/context — get user's vendor stores, roles and active vendor */
4375
+ getVendorContext(req?: Request): Promise<Response>;
4354
4376
  /** GET /api/admin/vendor/team */
4355
4377
  listTeam(): Promise<Response>;
4356
4378
  /** POST /api/admin/vendor/team — invite staff (set-password for new; accept-only for existing vendor people) */
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
- export { emitOrderNotificationTrigger, fireOrderNotificationTrigger } from './chunk-HZZTDM5J.js';
2
- import { checkMultiVendorEnabled, loadUserVendorContext, getPublicSettingsGroup, BlogGeneratorService } from './chunk-43UVXBEH.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, LlmAgentKnowledgeDocument, Media, MessageTemplate, Order, OrderAddresses, OrderAssignee, OrderDiscounts, OrderItem, OrderNotificationBinding, OrderNotificationTrigger, OtpChallenge, Page, PasswordResetToken, Payment, Permission, Product, ProductAttribute, ProductCategory, ProductConfig, ProductVariant, RefundPolicy, RefundRequest, RssArticle, RssFeed, Seo, Tag, Tax, User, UserDeviceToken, UserGroup, Vendor, VendorCustomer, VendorRole, VendorRolePermission, VendorUser, VendorUserProfile, Wishlist, WishlistItem, ZIP_MIME_TYPES, applyApprovalStatusSideEffects, applyEventApprovalStatusSideEffects, applyRotatingVendorInvite, applyVendorCustomersContactFilter, applyVendorEventCreateApproval, applyVendorProductCreateApproval, assertCaptchaOk, assertContactAllowedForVendorOrder, assertEventApprovalUpdate, assertProductApprovalUpdate, autoExpireOrderIfPaymentTimeExceeded, buildBlogMetadataUserPrompt, buildCronFromSchedule, buildRssUserPromptFromFeeds, buildUserInviteLink, buildVendorInviteLink, calculateOrderRefundPreview, calculateRefundFromPolicy, checkAndIncrementDiscountUsage, checkEventsEnabled, checkMultiVendorEnabled, completeUserInviteAccept, consumeAppliedDiscountUsages, contactIsVendorCustomer, countDiscountOrdersForContact, createAnalyticsHandlers, createBlogBySlugHandler, createChangePasswordHandler, createCmsApiHandler, createCmsApp, createCmsAppWithMessaging, createCrudByIdHandler, createCrudHandler, createDashboardStatsHandler, createEcommerceAnalyticsHandler, createEventOrderMessageTemplateHandlers, createForgotPasswordHandler, createFormBySlugHandler, createInviteAcceptHandler, createJobScheduleHandlers, createLlmAgentKnowledgeHandlers, createMediaZipExtractHandler, createMessageTemplateRowLoader, createSetPasswordHandler, createSettingsApiHandlers, createSocialMediaHandlers, createStorefrontApiHandler, createUploadHandler, createUserAuthApiRouter, createUserAvatarHandler, createUserProfileHandler, createUsersApiHandlers, createVendorDashboardHandler, createVendorOnboardHandlers, daysBeforeEventStart, decrementDiscountUsage, describeEventTierPolicy, ensureMessagingPluginsOnCms, ensureScheduleQueueWorker, ensureVendorCustomerForOrderContact, ensureVendorCustomersForOrder, findActiveRefundPolicyForVendor, findUserByInviteToken, findVendorByInviteToken, formatTierRange, getPublicSettingsGroup, getRequireEventApproval, getRequireProductApproval, getRssArticleSummaryFromItem, getVendorCatalogCreateFlags, hydrateVendorSessionUser, invalidateEventsCache, invalidateMultiVendorCache, invalidateRequireEventApprovalCache, invalidateRequireProductApprovalCache, invalidateVendorCatalogCreateFlagsCache, isCustomerTypeContact, isMaxPerUserUsageReached, isMaxTotalUsageReached, isZipMedia, llmAgentToChatAgentOptions, loadSettingsGroupFromDb, loadUserVendorContext, mergeGuardrailsIntoSystemPrompt, messagingPlugins, metaFetchUserManagedPages, metaPostPageFeed, metaPostPagePhoto, metaResolvePageAccessToken, newUserInviteToken, normalizeRefundTiers, overlayCmsPlugins, parseBlogGeneratorAgentContent, parseBlogGeneratorModelOutput, parseBlogMetadataEnrichmentJson, parseLlmAgentValidationRules, pgBossScheduleNameForId, queueErpCreateContactIfEnabled, queueJobScheduleNow, queuePlugin, recordDiscountUsage, registerJobRunnerWorker, registerMessagingQueueProcessors, relativePathFromMediaParentId, resolveBlogCategoryIdByName, resolveSettingsEncryptionKey, resolveVendorIdForContactCheck, sanitizeMediaFolderPath, sanitizeStorageSegment, sendVendorOnboardEmails, simpleDecrypt, simpleEncrypt, syncJobScheduleToPgBoss, validateRefundTiers, validateScheduleInput, validateUserMessageAgainstAgentRules, validateUserMessageAgainstStructuredRules, whatsappPlugin, wrapGetCmsWithMessaging } from './chunk-43UVXBEH.js';
4
- import { parseEmailRecipientsFromConfig } from './chunk-3LF4RYAJ.js';
5
- export { buildEventOrderTemplateVariables, emailPlugin, initWhatsappTriggerDispatcher, joinRecipientsForSend, parseEmailRecipientsFromConfig, resendOrderNotification, serializeEmailRecipients } from './chunk-3LF4RYAJ.js';
1
+ export { emitOrderNotificationTrigger, fireOrderNotificationTrigger } from './chunk-R5HLPH6P.js';
2
+ import { checkMultiVendorEnabled, loadUserVendorContext, getPublicSettingsGroup, BlogGeneratorService } from './chunk-OQOO2JMB.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, LlmAgentKnowledgeDocument, Media, MessageTemplate, Order, OrderAddresses, OrderAssignee, OrderDiscounts, OrderItem, OrderNotificationBinding, OrderNotificationTrigger, OtpChallenge, Page, PasswordResetToken, Payment, Permission, Product, ProductAttribute, ProductCategory, ProductConfig, ProductVariant, RefundPolicy, RefundRequest, RssArticle, RssFeed, Seo, Tag, Tax, User, UserDeviceToken, UserGroup, Vendor, VendorCustomer, VendorRole, VendorRolePermission, VendorUser, VendorUserProfile, Wishlist, WishlistItem, ZIP_MIME_TYPES, applyApprovalStatusSideEffects, applyEventApprovalStatusSideEffects, applyRotatingVendorInvite, applyVendorCustomersContactFilter, applyVendorEventCreateApproval, applyVendorProductCreateApproval, assertCaptchaOk, assertContactAllowedForVendorOrder, assertEventApprovalUpdate, assertProductApprovalUpdate, autoExpireOrderIfPaymentTimeExceeded, buildBlogMetadataUserPrompt, buildCronFromSchedule, buildRssUserPromptFromFeeds, buildUserInviteLink, buildVendorInviteLink, calculateOrderRefundPreview, calculateRefundFromPolicy, checkAndIncrementDiscountUsage, checkEventsEnabled, checkMultiVendorEnabled, completeUserInviteAccept, consumeAppliedDiscountUsages, contactIsVendorCustomer, countDiscountOrdersForContact, createAnalyticsHandlers, createBlogBySlugHandler, createChangePasswordHandler, createCmsApiHandler, createCmsApp, createCmsAppWithMessaging, createCrudByIdHandler, createCrudHandler, createDashboardStatsHandler, createEcommerceAnalyticsHandler, createEventOrderMessageTemplateHandlers, createForgotPasswordHandler, createFormBySlugHandler, createInviteAcceptHandler, createJobScheduleHandlers, createLlmAgentKnowledgeHandlers, createMediaZipExtractHandler, createMessageTemplateRowLoader, createSetPasswordHandler, createSettingsApiHandlers, createSocialMediaHandlers, createStorefrontApiHandler, createUploadHandler, createUserAuthApiRouter, createUserAvatarHandler, createUserProfileHandler, createUsersApiHandlers, createVendorDashboardHandler, createVendorOnboardHandlers, daysBeforeEventStart, decrementDiscountUsage, describeEventTierPolicy, ensureMessagingPluginsOnCms, ensureScheduleQueueWorker, ensureVendorCustomerForOrderContact, ensureVendorCustomersForOrder, findActiveRefundPolicyForVendor, findUserByInviteToken, findVendorByInviteToken, formatTierRange, getPublicSettingsGroup, getRequireEventApproval, getRequireProductApproval, getRssArticleSummaryFromItem, getVendorCatalogCreateFlags, hydrateVendorSessionUser, invalidateEventsCache, invalidateMultiVendorCache, invalidateRequireEventApprovalCache, invalidateRequireProductApprovalCache, invalidateVendorCatalogCreateFlagsCache, isCustomerTypeContact, isMaxPerUserUsageReached, isMaxTotalUsageReached, isZipMedia, llmAgentToChatAgentOptions, loadSettingsGroupFromDb, loadUserVendorContext, mergeGuardrailsIntoSystemPrompt, messagingPlugins, metaFetchUserManagedPages, metaPostPageFeed, metaPostPagePhoto, metaResolvePageAccessToken, newUserInviteToken, normalizeRefundTiers, overlayCmsPlugins, parseBlogGeneratorAgentContent, parseBlogGeneratorModelOutput, parseBlogMetadataEnrichmentJson, parseLlmAgentValidationRules, pgBossScheduleNameForId, queueErpCreateContactIfEnabled, queueJobScheduleNow, queuePlugin, recordDiscountUsage, registerJobRunnerWorker, registerMessagingQueueProcessors, relativePathFromMediaParentId, resolveBlogCategoryIdByName, resolveSettingsEncryptionKey, resolveVendorIdForContactCheck, sanitizeMediaFolderPath, sanitizeStorageSegment, sendVendorOnboardEmails, simpleDecrypt, simpleEncrypt, syncJobScheduleToPgBoss, validateRefundTiers, validateScheduleInput, validateUserMessageAgainstAgentRules, validateUserMessageAgainstStructuredRules, whatsappPlugin, wrapGetCmsWithMessaging } from './chunk-OQOO2JMB.js';
4
+ import { parseEmailRecipientsFromConfig } from './chunk-X3IJG25M.js';
5
+ export { buildEventOrderTemplateVariables, emailPlugin, initWhatsappTriggerDispatcher, joinRecipientsForSend, parseEmailRecipientsFromConfig, resendOrderNotification, serializeEmailRecipients } from './chunk-X3IJG25M.js';
6
6
  export { countRecentOtpSends, createOtpChallenge, generateNumericOtp, hashOtpCode, normalizePhoneE164, verifyAndConsumeOtpChallenge, verifyOtpCodeHash } from './chunk-ECUGNV2I.js';
7
7
  export { queueSms, queueWhatsApp, registerSmsQueueProcessor, registerWhatsAppQueueProcessor } from './chunk-K6JT7BKY.js';
8
8
  export { KNOWN_NOTIFICATION_TRIGGERS, notificationTriggerEmitter } from './chunk-W2ZTGLUH.js';
@@ -13,17 +13,17 @@ import { PgBossService } from './chunk-2BNVRFUQ.js';
13
13
  export { JOB_RUNNER_QUEUE, PgBossService } from './chunk-2BNVRFUQ.js';
14
14
  export { deductInventoryForConfirmedOrder, mergeInventoryLines, orderInventorySnapshotFromRow, orderStatusHoldsStock, reconcileOrderInventoryBetweenSnapshots, restoreInventoryForCancelledOrder, validateInventoryForConfirmedOrderLines, validateInventoryForOrderBecomingConfirmed } from './chunk-JYRFSFXH.js';
15
15
  export { EmailService, emailTemplates, renderEmail, renderLayout } from './chunk-CFUSYGSA.js';
16
- import { queueOrderPlacedEmails } from './chunk-LJ5C4RBF.js';
17
- export { queueEmail, queueOrderPlacedEmails, queueVendorOnboardEmails, registerEmailQueueProcessor } from './chunk-LJ5C4RBF.js';
18
- export { buildLocalInvoicePdfForOrder, isOrderEligibleForInvoiceEmail, resolveOrderInvoicePdfBytes, streamOrderInvoicePdf } from './chunk-PQJIJ4ZX.js';
16
+ import { queueOrderPlacedEmails } from './chunk-6TRH3VY7.js';
17
+ export { queueEmail, queueOrderPlacedEmails, queueVendorOnboardEmails, registerEmailQueueProcessor } from './chunk-6TRH3VY7.js';
18
+ export { buildLocalInvoicePdfForOrder, isOrderEligibleForInvoiceEmail, resolveOrderInvoicePdfBytes, streamOrderInvoicePdf } from './chunk-DAUBLBTP.js';
19
19
  import './chunk-WQZ4AH2P.js';
20
- export { generateLocalInvoicePdf } from './chunk-YHVA5NHI.js';
20
+ export { generateLocalInvoicePdf } from './chunk-LUSJITTI.js';
21
21
  export { INVOICE_TEMPLATE_IDS, INVOICE_TEMPLATE_OPTIONS, normalizeInvoiceTemplateId } from './chunk-K6RXCLD5.js';
22
22
  export { resolveInvoiceAssetUrl } from './chunk-5DSY3GQI.js';
23
23
  import { mergeEmailLayoutCompanyDetails } from './chunk-YDMHG6BA.js';
24
24
  export { getCompanyDetailsFromSettings, mergeEmailLayoutCompanyDetails } from './chunk-YDMHG6BA.js';
25
25
  import './chunk-MGT4DJ2D.js';
26
- export { AUTH_PROVIDERS_SETTINGS_GROUP, buildNextAuthOptions, buildStorefrontNextAuthOptions, createCustomerUserFromGoogleOAuth, getNextAuthOptions, getStorefrontNextAuthOptions, googleOAuthRedirectUri, isGoogleAuthPubliclyEnabled, resolveGoogleAuthConfig, seedAdministratorPermissions } from './chunk-SCE2GIKH.js';
26
+ export { AUTH_PROVIDERS_SETTINGS_GROUP, buildNextAuthOptions, buildStorefrontNextAuthOptions, createCustomerUserFromGoogleOAuth, getNextAuthOptions, getStorefrontNextAuthOptions, googleOAuthRedirectUri, isGoogleAuthPubliclyEnabled, resolveGoogleAuthConfig, seedAdministratorPermissions } from './chunk-DEGN4BTH.js';
27
27
  export { OPEN_ENDPOINTS, PERMISSION_REQUIRED_ENDPOINTS, RBAC_ADMIN_ONLY_ENTITIES, canManageRoles, createAuthHelpers, createCmsAuthBundle, customerPhoneForEmail, customerPhoneForUser, ensureCustomerForUser, ensureCustomerRecord, getRequiredPermission, isOpenEndpoint, isPublicMethod, isSyntheticCustomerPhone, linkUnclaimedContactToUser, normalizeCustomerPhone, sessionHasEntityAccess } from './chunk-NQF6H656.js';
28
28
  import { isSuperAdmin, isVendorGroupName } from './chunk-CJY2HUJC.js';
29
29
  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-CJY2HUJC.js';
@@ -0,0 +1,40 @@
1
+ import { MigrationInterface, QueryRunner } from 'typeorm';
2
+
3
+ export class MakeProductConfigTaxIdNullable1783400000000
4
+ implements MigrationInterface
5
+ {
6
+ name = 'MakeProductConfigTaxIdNullable1783400000000';
7
+
8
+ public async up(queryRunner: QueryRunner): Promise<void> {
9
+ await queryRunner.query(`
10
+ DO $$
11
+ BEGIN
12
+ IF EXISTS (
13
+ SELECT 1
14
+ FROM information_schema.columns
15
+ WHERE table_name = 'product_config' AND column_name = 'taxId' AND is_nullable = 'NO'
16
+ ) THEN
17
+ ALTER TABLE "product_config"
18
+ ALTER COLUMN "taxId" DROP NOT NULL;
19
+ END IF;
20
+ END $$;
21
+ `);
22
+ }
23
+
24
+ public async down(queryRunner: QueryRunner): Promise<void> {
25
+ // If needed to restore, only if no null taxId rows exist
26
+ await queryRunner.query(`
27
+ DO $$
28
+ BEGIN
29
+ IF NOT EXISTS (
30
+ SELECT 1
31
+ FROM "product_config"
32
+ WHERE "taxId" IS NULL
33
+ ) THEN
34
+ ALTER TABLE "product_config"
35
+ ALTER COLUMN "taxId" SET NOT NULL;
36
+ END IF;
37
+ END $$;
38
+ `);
39
+ }
40
+ }
@@ -1,11 +1,11 @@
1
- import { fireOrderNotificationTrigger } from './chunk-HZZTDM5J.js';
1
+ import { fireOrderNotificationTrigger } from './chunk-R5HLPH6P.js';
2
2
  import { verifyAndConsumeOtpChallenge, generateNumericOtp, createOtpChallenge } from './chunk-ECUGNV2I.js';
3
3
  import { queueWhatsApp, queueSms } from './chunk-K6JT7BKY.js';
4
4
  import './chunk-W2ZTGLUH.js';
5
- import { queueEmail } from './chunk-LJ5C4RBF.js';
6
- import './chunk-PQJIJ4ZX.js';
5
+ import { queueEmail } from './chunk-6TRH3VY7.js';
6
+ import './chunk-DAUBLBTP.js';
7
7
  import './chunk-WQZ4AH2P.js';
8
- import './chunk-YHVA5NHI.js';
8
+ import './chunk-LUSJITTI.js';
9
9
  import './chunk-K6RXCLD5.js';
10
10
  import './chunk-5DSY3GQI.js';
11
11
  import './chunk-YDMHG6BA.js';
@@ -1,13 +1,13 @@
1
1
  'use strict';
2
2
 
3
- var chunkNIBEGDD4_cjs = require('./chunk-NIBEGDD4.cjs');
3
+ var chunkZBSH4GWB_cjs = require('./chunk-ZBSH4GWB.cjs');
4
4
  var chunkKB7EBYPR_cjs = require('./chunk-KB7EBYPR.cjs');
5
5
  var chunkKJB5LBFQ_cjs = require('./chunk-KJB5LBFQ.cjs');
6
6
  require('./chunk-K742UE6S.cjs');
7
- var chunk4MNVIGVJ_cjs = require('./chunk-4MNVIGVJ.cjs');
8
- require('./chunk-BQQMTQ4C.cjs');
7
+ var chunkD3SR6CYU_cjs = require('./chunk-D3SR6CYU.cjs');
8
+ require('./chunk-25T6HP5T.cjs');
9
9
  require('./chunk-RQCXRCYM.cjs');
10
- require('./chunk-2JHGIWH7.cjs');
10
+ require('./chunk-X5ILLSTD.cjs');
11
11
  require('./chunk-E62LKM6Z.cjs');
12
12
  require('./chunk-47G65M5Q.cjs');
13
13
  require('./chunk-EYUBL7YH.cjs');
@@ -281,7 +281,7 @@ function createOrderCompletionOtpHandlers(dataSource, entityMap, getCms, getHydr
281
281
  <p style="color: #6b7280; font-size: 13px;">This code is valid for 10 minutes. If you did not authorize this completion, please contact support immediately.</p>
282
282
  </div>
283
283
  `;
284
- await chunk4MNVIGVJ_cjs.queueEmail(cms, {
284
+ await chunkD3SR6CYU_cjs.queueEmail(cms, {
285
285
  to: customerEmail,
286
286
  subject: `Completion Code ${code} for Order #${o.orderNumber}`,
287
287
  html,
@@ -396,7 +396,7 @@ function createOrderCompletionOtpHandlers(dataSource, entityMap, getCms, getHydr
396
396
  order.updatedAt = now;
397
397
  await orderRepo.save(order);
398
398
  try {
399
- await chunkNIBEGDD4_cjs.fireOrderNotificationTrigger("order_completed", orderId, {
399
+ await chunkZBSH4GWB_cjs.fireOrderNotificationTrigger("order_completed", orderId, {
400
400
  dataSource,
401
401
  entityMap
402
402
  });
@@ -1,12 +1,12 @@
1
- export { dispatchOrderNotificationDirectly, emitOrderNotificationTrigger, getSettingsGroup, initWhatsappTriggerDispatcher, resendOrderNotification } from './chunk-3LF4RYAJ.js';
1
+ export { dispatchOrderNotificationDirectly, emitOrderNotificationTrigger, getSettingsGroup, initWhatsappTriggerDispatcher, resendOrderNotification } from './chunk-X3IJG25M.js';
2
2
  import './chunk-K6JT7BKY.js';
3
3
  import './chunk-W2ZTGLUH.js';
4
4
  import './chunk-ECNYZG6T.js';
5
5
  import './chunk-CFUSYGSA.js';
6
- import './chunk-LJ5C4RBF.js';
7
- import './chunk-PQJIJ4ZX.js';
6
+ import './chunk-6TRH3VY7.js';
7
+ import './chunk-DAUBLBTP.js';
8
8
  import './chunk-WQZ4AH2P.js';
9
- import './chunk-YHVA5NHI.js';
9
+ import './chunk-LUSJITTI.js';
10
10
  import './chunk-K6RXCLD5.js';
11
11
  import './chunk-5DSY3GQI.js';
12
12
  import './chunk-YDMHG6BA.js';
@@ -1,14 +1,14 @@
1
1
  'use strict';
2
2
 
3
- var chunkTTOEY7AH_cjs = require('./chunk-TTOEY7AH.cjs');
3
+ var chunk2JV4EDY3_cjs = require('./chunk-2JV4EDY3.cjs');
4
4
  require('./chunk-KJB5LBFQ.cjs');
5
5
  require('./chunk-K742UE6S.cjs');
6
6
  require('./chunk-CIZZX57T.cjs');
7
7
  require('./chunk-QN6PZLAP.cjs');
8
- require('./chunk-4MNVIGVJ.cjs');
9
- require('./chunk-BQQMTQ4C.cjs');
8
+ require('./chunk-D3SR6CYU.cjs');
9
+ require('./chunk-25T6HP5T.cjs');
10
10
  require('./chunk-RQCXRCYM.cjs');
11
- require('./chunk-2JHGIWH7.cjs');
11
+ require('./chunk-X5ILLSTD.cjs');
12
12
  require('./chunk-E62LKM6Z.cjs');
13
13
  require('./chunk-47G65M5Q.cjs');
14
14
  require('./chunk-EYUBL7YH.cjs');
@@ -18,21 +18,21 @@ require('./chunk-XHPRD45G.cjs');
18
18
 
19
19
  Object.defineProperty(exports, "dispatchOrderNotificationDirectly", {
20
20
  enumerable: true,
21
- get: function () { return chunkTTOEY7AH_cjs.dispatchOrderNotificationDirectly; }
21
+ get: function () { return chunk2JV4EDY3_cjs.dispatchOrderNotificationDirectly; }
22
22
  });
23
23
  Object.defineProperty(exports, "emitOrderNotificationTrigger", {
24
24
  enumerable: true,
25
- get: function () { return chunkTTOEY7AH_cjs.emitOrderNotificationTrigger; }
25
+ get: function () { return chunk2JV4EDY3_cjs.emitOrderNotificationTrigger; }
26
26
  });
27
27
  Object.defineProperty(exports, "getSettingsGroup", {
28
28
  enumerable: true,
29
- get: function () { return chunkTTOEY7AH_cjs.getSettingsGroup; }
29
+ get: function () { return chunk2JV4EDY3_cjs.getSettingsGroup; }
30
30
  });
31
31
  Object.defineProperty(exports, "initWhatsappTriggerDispatcher", {
32
32
  enumerable: true,
33
- get: function () { return chunkTTOEY7AH_cjs.initWhatsappTriggerDispatcher; }
33
+ get: function () { return chunk2JV4EDY3_cjs.initWhatsappTriggerDispatcher; }
34
34
  });
35
35
  Object.defineProperty(exports, "resendOrderNotification", {
36
36
  enumerable: true,
37
- get: function () { return chunkTTOEY7AH_cjs.resendOrderNotification; }
37
+ get: function () { return chunk2JV4EDY3_cjs.resendOrderNotification; }
38
38
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@infuro/cms-core",
3
- "version": "1.0.72",
3
+ "version": "1.0.74",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -1,3 +0,0 @@
1
- export { generateLocalInvoicePdf } from './chunk-YHVA5NHI.js';
2
- import './chunk-K6RXCLD5.js';
3
- import './chunk-5BKT4CS5.js';