@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.
@@ -14423,26 +14423,51 @@ async function sendVendorOnboardEmails(input, deps) {
14423
14423
  __name(sendVendorOnboardEmails, "sendVendorOnboardEmails");
14424
14424
 
14425
14425
  // src/lib/seed-vendor-roles.ts
14426
- async function insertRolePermissions(exec, vendorRoleId, permissions) {
14426
+ function appendValuesRow(params, values, cols) {
14427
+ const start = params.length;
14428
+ values.push(`(${cols.map((_, i) => `$${start + i + 1}`).join(", ")})`);
14429
+ params.push(...cols);
14430
+ }
14431
+ __name(appendValuesRow, "appendValuesRow");
14432
+ async function insertRolePermissions(exec, rows) {
14433
+ if (rows.length === 0) return;
14434
+ const values = [];
14435
+ const params = [];
14436
+ for (const row of rows) {
14437
+ appendValuesRow(params, values, [
14438
+ row.vendorRoleId,
14439
+ row.entity,
14440
+ row.canCreate,
14441
+ row.canRead,
14442
+ row.canUpdate,
14443
+ row.canDelete
14444
+ ]);
14445
+ }
14446
+ await exec.query(`
14447
+ INSERT INTO "vendor_role_permissions"
14448
+ ("vendorRoleId", "entity", "canCreate", "canRead", "canUpdate", "canDelete")
14449
+ VALUES ${values.join(", ")}
14450
+ ON CONFLICT ("vendorRoleId", "entity") DO NOTHING
14451
+ `, params);
14452
+ }
14453
+ __name(insertRolePermissions, "insertRolePermissions");
14454
+ function permissionRowsForRole(vendorRoleId, permissions) {
14455
+ const rows = [];
14427
14456
  for (const entity of VENDOR_RBAC_ENTITIES) {
14428
14457
  const flags = permissions[entity];
14429
14458
  if (!flags) continue;
14430
- await exec.query(`
14431
- INSERT INTO "vendor_role_permissions"
14432
- ("vendorRoleId", "entity", "canCreate", "canRead", "canUpdate", "canDelete")
14433
- VALUES ($1, $2, $3, $4, $5, $6)
14434
- ON CONFLICT ("vendorRoleId", "entity") DO NOTHING
14435
- `, [
14459
+ rows.push({
14436
14460
  vendorRoleId,
14437
14461
  entity,
14438
- flags.canCreate,
14439
- flags.canRead,
14440
- flags.canUpdate,
14441
- flags.canDelete
14442
- ]);
14462
+ canCreate: flags.canCreate,
14463
+ canRead: flags.canRead,
14464
+ canUpdate: flags.canUpdate,
14465
+ canDelete: flags.canDelete
14466
+ });
14443
14467
  }
14468
+ return rows;
14444
14469
  }
14445
- __name(insertRolePermissions, "insertRolePermissions");
14470
+ __name(permissionRowsForRole, "permissionRowsForRole");
14446
14471
  async function seedVendorDefaultRoles(em, vendorId) {
14447
14472
  const exec = em;
14448
14473
  const existing = await exec.query(`SELECT id, name, "isOwnerRole" FROM "vendor_roles" WHERE "vendorId" = $1 AND "deleted" = false`, [
@@ -14463,29 +14488,40 @@ async function seedVendorDefaultRoles(em, vendorId) {
14463
14488
  viewerRoleId: viewerRoleId2
14464
14489
  };
14465
14490
  }
14466
- const roleIdsByName = {};
14467
- let ownerRoleId = 0;
14468
- let viewerRoleId = 0;
14491
+ const roleValues = [];
14492
+ const roleParams = [];
14469
14493
  for (const def of DEFAULT_VENDOR_ROLE_DEFS) {
14470
- const inserted = await exec.query(`
14471
- INSERT INTO "vendor_roles"
14472
- ("vendorId", "name", "description", "isSystem", "isOwnerRole")
14473
- VALUES ($1, $2, $3, $4, $5)
14474
- RETURNING id
14475
- `, [
14494
+ appendValuesRow(roleParams, roleValues, [
14476
14495
  vendorId,
14477
14496
  def.name,
14478
14497
  def.description,
14479
14498
  def.isSystem,
14480
14499
  def.isOwnerRole
14481
14500
  ]);
14482
- const roleId = Number(inserted[0]?.id);
14501
+ }
14502
+ const inserted = await exec.query(`
14503
+ INSERT INTO "vendor_roles"
14504
+ ("vendorId", "name", "description", "isSystem", "isOwnerRole")
14505
+ VALUES ${roleValues.join(", ")}
14506
+ RETURNING id, name, "isOwnerRole"
14507
+ `, roleParams);
14508
+ const roleIdsByName = {};
14509
+ let ownerRoleId = 0;
14510
+ let viewerRoleId = 0;
14511
+ for (const r of inserted) {
14512
+ const id = Number(r.id);
14513
+ if (!id) continue;
14514
+ roleIdsByName[r.name] = id;
14515
+ if (r.isOwnerRole) ownerRoleId = id;
14516
+ if (r.name === VENDOR_VIEWER_ROLE_NAME) viewerRoleId = id;
14517
+ }
14518
+ const permRows = [];
14519
+ for (const def of DEFAULT_VENDOR_ROLE_DEFS) {
14520
+ const roleId = roleIdsByName[def.name];
14483
14521
  if (!roleId) continue;
14484
- roleIdsByName[def.name] = roleId;
14485
- if (def.isOwnerRole) ownerRoleId = roleId;
14486
- if (def.name === VENDOR_VIEWER_ROLE_NAME) viewerRoleId = roleId;
14487
- await insertRolePermissions(exec, roleId, def.permissions);
14522
+ permRows.push(...permissionRowsForRole(roleId, def.permissions));
14488
14523
  }
14524
+ await insertRolePermissions(exec, permRows);
14489
14525
  return {
14490
14526
  roleIdsByName,
14491
14527
  ownerRoleId,
@@ -15345,25 +15381,25 @@ function createVendorOnboardHandlers(config) {
15345
15381
  vendorUserProfileId: personRow.id
15346
15382
  });
15347
15383
  }
15348
- if (entityMap.customer) {
15349
- try {
15350
- await ensureCustomerForUser(em, entityMap.customer, {
15351
- id: newUser.id,
15352
- name: userName,
15353
- email: userEmail,
15354
- phone: trimOrNull(body.vendor?.phone) ?? ownerPhone
15355
- }, {
15356
- phone: trimOrNull(body.vendor?.phone) ?? ownerPhone
15357
- });
15358
- } catch (customerErr) {
15359
- console.error("[vendor-onboard] ensureCustomerForUser skipped", customerErr);
15360
- }
15361
- }
15362
15384
  return {
15363
15385
  vendor,
15364
15386
  user: newUser
15365
15387
  };
15366
15388
  });
15389
+ if (entityMap.customer) {
15390
+ try {
15391
+ await ensureCustomerForUser(dataSource, entityMap.customer, {
15392
+ id: result.user.id,
15393
+ name: userName,
15394
+ email: userEmail,
15395
+ phone: trimOrNull(body.vendor?.phone) ?? ownerPhone
15396
+ }, {
15397
+ phone: trimOrNull(body.vendor?.phone) ?? ownerPhone
15398
+ });
15399
+ } catch (customerErr) {
15400
+ console.error("[vendor-onboard] ensureCustomerForUser skipped", customerErr);
15401
+ }
15402
+ }
15367
15403
  let inviteLink;
15368
15404
  const token = readVendorInviteToken(result.vendor.metadata);
15369
15405
  if (token) {
@@ -14433,26 +14433,51 @@ async function sendVendorOnboardEmails(input, deps) {
14433
14433
  chunkXHPRD45G_cjs.__name(sendVendorOnboardEmails, "sendVendorOnboardEmails");
14434
14434
 
14435
14435
  // src/lib/seed-vendor-roles.ts
14436
- async function insertRolePermissions(exec, vendorRoleId, permissions) {
14436
+ function appendValuesRow(params, values, cols) {
14437
+ const start = params.length;
14438
+ values.push(`(${cols.map((_, i) => `$${start + i + 1}`).join(", ")})`);
14439
+ params.push(...cols);
14440
+ }
14441
+ chunkXHPRD45G_cjs.__name(appendValuesRow, "appendValuesRow");
14442
+ async function insertRolePermissions(exec, rows) {
14443
+ if (rows.length === 0) return;
14444
+ const values = [];
14445
+ const params = [];
14446
+ for (const row of rows) {
14447
+ appendValuesRow(params, values, [
14448
+ row.vendorRoleId,
14449
+ row.entity,
14450
+ row.canCreate,
14451
+ row.canRead,
14452
+ row.canUpdate,
14453
+ row.canDelete
14454
+ ]);
14455
+ }
14456
+ await exec.query(`
14457
+ INSERT INTO "vendor_role_permissions"
14458
+ ("vendorRoleId", "entity", "canCreate", "canRead", "canUpdate", "canDelete")
14459
+ VALUES ${values.join(", ")}
14460
+ ON CONFLICT ("vendorRoleId", "entity") DO NOTHING
14461
+ `, params);
14462
+ }
14463
+ chunkXHPRD45G_cjs.__name(insertRolePermissions, "insertRolePermissions");
14464
+ function permissionRowsForRole(vendorRoleId, permissions) {
14465
+ const rows = [];
14437
14466
  for (const entity of chunkLCZZ3S4I_cjs.VENDOR_RBAC_ENTITIES) {
14438
14467
  const flags = permissions[entity];
14439
14468
  if (!flags) continue;
14440
- await exec.query(`
14441
- INSERT INTO "vendor_role_permissions"
14442
- ("vendorRoleId", "entity", "canCreate", "canRead", "canUpdate", "canDelete")
14443
- VALUES ($1, $2, $3, $4, $5, $6)
14444
- ON CONFLICT ("vendorRoleId", "entity") DO NOTHING
14445
- `, [
14469
+ rows.push({
14446
14470
  vendorRoleId,
14447
14471
  entity,
14448
- flags.canCreate,
14449
- flags.canRead,
14450
- flags.canUpdate,
14451
- flags.canDelete
14452
- ]);
14472
+ canCreate: flags.canCreate,
14473
+ canRead: flags.canRead,
14474
+ canUpdate: flags.canUpdate,
14475
+ canDelete: flags.canDelete
14476
+ });
14453
14477
  }
14478
+ return rows;
14454
14479
  }
14455
- chunkXHPRD45G_cjs.__name(insertRolePermissions, "insertRolePermissions");
14480
+ chunkXHPRD45G_cjs.__name(permissionRowsForRole, "permissionRowsForRole");
14456
14481
  async function seedVendorDefaultRoles(em, vendorId) {
14457
14482
  const exec = em;
14458
14483
  const existing = await exec.query(`SELECT id, name, "isOwnerRole" FROM "vendor_roles" WHERE "vendorId" = $1 AND "deleted" = false`, [
@@ -14473,29 +14498,40 @@ async function seedVendorDefaultRoles(em, vendorId) {
14473
14498
  viewerRoleId: viewerRoleId2
14474
14499
  };
14475
14500
  }
14476
- const roleIdsByName = {};
14477
- let ownerRoleId = 0;
14478
- let viewerRoleId = 0;
14501
+ const roleValues = [];
14502
+ const roleParams = [];
14479
14503
  for (const def of chunkLCZZ3S4I_cjs.DEFAULT_VENDOR_ROLE_DEFS) {
14480
- const inserted = await exec.query(`
14481
- INSERT INTO "vendor_roles"
14482
- ("vendorId", "name", "description", "isSystem", "isOwnerRole")
14483
- VALUES ($1, $2, $3, $4, $5)
14484
- RETURNING id
14485
- `, [
14504
+ appendValuesRow(roleParams, roleValues, [
14486
14505
  vendorId,
14487
14506
  def.name,
14488
14507
  def.description,
14489
14508
  def.isSystem,
14490
14509
  def.isOwnerRole
14491
14510
  ]);
14492
- const roleId = Number(inserted[0]?.id);
14511
+ }
14512
+ const inserted = await exec.query(`
14513
+ INSERT INTO "vendor_roles"
14514
+ ("vendorId", "name", "description", "isSystem", "isOwnerRole")
14515
+ VALUES ${roleValues.join(", ")}
14516
+ RETURNING id, name, "isOwnerRole"
14517
+ `, roleParams);
14518
+ const roleIdsByName = {};
14519
+ let ownerRoleId = 0;
14520
+ let viewerRoleId = 0;
14521
+ for (const r of inserted) {
14522
+ const id = Number(r.id);
14523
+ if (!id) continue;
14524
+ roleIdsByName[r.name] = id;
14525
+ if (r.isOwnerRole) ownerRoleId = id;
14526
+ if (r.name === chunkLCZZ3S4I_cjs.VENDOR_VIEWER_ROLE_NAME) viewerRoleId = id;
14527
+ }
14528
+ const permRows = [];
14529
+ for (const def of chunkLCZZ3S4I_cjs.DEFAULT_VENDOR_ROLE_DEFS) {
14530
+ const roleId = roleIdsByName[def.name];
14493
14531
  if (!roleId) continue;
14494
- roleIdsByName[def.name] = roleId;
14495
- if (def.isOwnerRole) ownerRoleId = roleId;
14496
- if (def.name === chunkLCZZ3S4I_cjs.VENDOR_VIEWER_ROLE_NAME) viewerRoleId = roleId;
14497
- await insertRolePermissions(exec, roleId, def.permissions);
14532
+ permRows.push(...permissionRowsForRole(roleId, def.permissions));
14498
14533
  }
14534
+ await insertRolePermissions(exec, permRows);
14499
14535
  return {
14500
14536
  roleIdsByName,
14501
14537
  ownerRoleId,
@@ -15355,25 +15391,25 @@ function createVendorOnboardHandlers(config) {
15355
15391
  vendorUserProfileId: personRow.id
15356
15392
  });
15357
15393
  }
15358
- if (entityMap.customer) {
15359
- try {
15360
- await chunkFNLF6G2N_cjs.ensureCustomerForUser(em, entityMap.customer, {
15361
- id: newUser.id,
15362
- name: userName,
15363
- email: userEmail,
15364
- phone: trimOrNull(body.vendor?.phone) ?? ownerPhone
15365
- }, {
15366
- phone: trimOrNull(body.vendor?.phone) ?? ownerPhone
15367
- });
15368
- } catch (customerErr) {
15369
- console.error("[vendor-onboard] ensureCustomerForUser skipped", customerErr);
15370
- }
15371
- }
15372
15394
  return {
15373
15395
  vendor,
15374
15396
  user: newUser
15375
15397
  };
15376
15398
  });
15399
+ if (entityMap.customer) {
15400
+ try {
15401
+ await chunkFNLF6G2N_cjs.ensureCustomerForUser(dataSource, entityMap.customer, {
15402
+ id: result.user.id,
15403
+ name: userName,
15404
+ email: userEmail,
15405
+ phone: trimOrNull(body.vendor?.phone) ?? ownerPhone
15406
+ }, {
15407
+ phone: trimOrNull(body.vendor?.phone) ?? ownerPhone
15408
+ });
15409
+ } catch (customerErr) {
15410
+ console.error("[vendor-onboard] ensureCustomerForUser skipped", customerErr);
15411
+ }
15412
+ }
15377
15413
  let inviteLink;
15378
15414
  const token = readVendorInviteToken(result.vendor.metadata);
15379
15415
  if (token) {