@infuro/cms-core 1.0.70 → 1.0.72
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/dist/admin.cjs +20 -28
- package/dist/admin.d.cts +1 -0
- package/dist/admin.d.ts +1 -0
- package/dist/admin.js +20 -28
- package/dist/api.cjs +33 -33
- package/dist/api.js +1 -1
- package/dist/{chunk-7NQMGB2S.js → chunk-43UVXBEH.js} +77 -41
- package/dist/{chunk-OP624LWU.cjs → chunk-SRGDHASW.cjs} +77 -41
- package/dist/index.cjs +206 -206
- package/dist/index.js +2 -2
- package/dist/migrations/helpers/vendor-role-seed.ts +65 -27
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { emitOrderNotificationTrigger, fireOrderNotificationTrigger } from './chunk-HZZTDM5J.js';
|
|
2
|
-
import { checkMultiVendorEnabled, loadUserVendorContext, getPublicSettingsGroup, BlogGeneratorService } from './chunk-
|
|
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-
|
|
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
4
|
import { parseEmailRecipientsFromConfig } from './chunk-3LF4RYAJ.js';
|
|
5
5
|
export { buildEventOrderTemplateVariables, emailPlugin, initWhatsappTriggerDispatcher, joinRecipientsForSend, parseEmailRecipientsFromConfig, resendOrderNotification, serializeEmailRecipients } from './chunk-3LF4RYAJ.js';
|
|
6
6
|
export { countRecentOtpSends, createOtpChallenge, generateNumericOtp, hashOtpCode, normalizePhoneE164, verifyAndConsumeOtpChallenge, verifyOtpCodeHash } from './chunk-ECUGNV2I.js';
|
|
@@ -159,24 +159,38 @@ const DEFAULT_ROLES: RoleDef[] = [
|
|
|
159
159
|
},
|
|
160
160
|
];
|
|
161
161
|
|
|
162
|
+
function appendValuesRow(params: unknown[], values: string[], cols: unknown[]): void {
|
|
163
|
+
const start = params.length;
|
|
164
|
+
values.push(`(${cols.map((_, i) => `$${start + i + 1}`).join(', ')})`);
|
|
165
|
+
params.push(...cols);
|
|
166
|
+
}
|
|
167
|
+
|
|
162
168
|
async function insertRolePermissions(
|
|
163
169
|
queryRunner: QueryRunner,
|
|
164
|
-
vendorRoleId: number
|
|
165
|
-
permissions: Record<string, Perm>
|
|
170
|
+
rows: Array<{ vendorRoleId: number; entity: string; p: Perm }>
|
|
166
171
|
): Promise<void> {
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
);
|
|
172
|
+
if (rows.length === 0) return;
|
|
173
|
+
const values: string[] = [];
|
|
174
|
+
const params: unknown[] = [];
|
|
175
|
+
for (const row of rows) {
|
|
176
|
+
appendValuesRow(params, values, [
|
|
177
|
+
row.vendorRoleId,
|
|
178
|
+
row.entity,
|
|
179
|
+
row.p.c,
|
|
180
|
+
row.p.r,
|
|
181
|
+
row.p.u,
|
|
182
|
+
row.p.d,
|
|
183
|
+
]);
|
|
179
184
|
}
|
|
185
|
+
await queryRunner.query(
|
|
186
|
+
`
|
|
187
|
+
INSERT INTO "vendor_role_permissions"
|
|
188
|
+
("vendorRoleId", "entity", "canCreate", "canRead", "canUpdate", "canDelete")
|
|
189
|
+
VALUES ${values.join(', ')}
|
|
190
|
+
ON CONFLICT ("vendorRoleId", "entity") DO NOTHING
|
|
191
|
+
`,
|
|
192
|
+
params
|
|
193
|
+
);
|
|
180
194
|
}
|
|
181
195
|
|
|
182
196
|
/** Seed default vendor roles + backfill vendor_users.vendorRoleId (migration-safe). */
|
|
@@ -198,22 +212,46 @@ export async function seedVendorRolesForMigration(
|
|
|
198
212
|
if (r.name === 'Viewer') viewerRoleId = r.id;
|
|
199
213
|
}
|
|
200
214
|
} else {
|
|
215
|
+
const roleValues: string[] = [];
|
|
216
|
+
const roleParams: unknown[] = [];
|
|
217
|
+
for (const def of DEFAULT_ROLES) {
|
|
218
|
+
appendValuesRow(roleParams, roleValues, [
|
|
219
|
+
vendorId,
|
|
220
|
+
def.name,
|
|
221
|
+
def.description,
|
|
222
|
+
def.isSystem,
|
|
223
|
+
def.isOwnerRole,
|
|
224
|
+
]);
|
|
225
|
+
}
|
|
226
|
+
const inserted = (await queryRunner.query(
|
|
227
|
+
`
|
|
228
|
+
INSERT INTO "vendor_roles"
|
|
229
|
+
("vendorId", "name", "description", "isSystem", "isOwnerRole")
|
|
230
|
+
VALUES ${roleValues.join(', ')}
|
|
231
|
+
RETURNING id, name, "isOwnerRole"
|
|
232
|
+
`,
|
|
233
|
+
roleParams
|
|
234
|
+
)) as Array<{ id: number; name: string; isOwnerRole: boolean }>;
|
|
235
|
+
|
|
236
|
+
const roleIdsByName: Record<string, number> = {};
|
|
237
|
+
const permRows: Array<{ vendorRoleId: number; entity: string; p: Perm }> = [];
|
|
238
|
+
for (const r of inserted) {
|
|
239
|
+
const roleId = Number(r.id);
|
|
240
|
+
if (!roleId) continue;
|
|
241
|
+
roleIdsByName[r.name] = roleId;
|
|
242
|
+
if (r.isOwnerRole) ownerRoleId = roleId;
|
|
243
|
+
if (r.name === 'Viewer') viewerRoleId = roleId;
|
|
244
|
+
}
|
|
201
245
|
for (const def of DEFAULT_ROLES) {
|
|
202
|
-
const
|
|
203
|
-
`
|
|
204
|
-
INSERT INTO "vendor_roles"
|
|
205
|
-
("vendorId", "name", "description", "isSystem", "isOwnerRole")
|
|
206
|
-
VALUES ($1, $2, $3, $4, $5)
|
|
207
|
-
RETURNING id
|
|
208
|
-
`,
|
|
209
|
-
[vendorId, def.name, def.description, def.isSystem, def.isOwnerRole]
|
|
210
|
-
)) as Array<{ id: number }>;
|
|
211
|
-
const roleId = inserted[0]?.id;
|
|
246
|
+
const roleId = roleIdsByName[def.name];
|
|
212
247
|
if (!roleId) continue;
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
248
|
+
for (const entity of RBAC_ENTITIES) {
|
|
249
|
+
const p = def.permissions[entity];
|
|
250
|
+
if (!p) continue;
|
|
251
|
+
permRows.push({ vendorRoleId: roleId, entity, p });
|
|
252
|
+
}
|
|
216
253
|
}
|
|
254
|
+
await insertRolePermissions(queryRunner, permRows);
|
|
217
255
|
}
|
|
218
256
|
|
|
219
257
|
if (ownerRoleId) {
|