abmp-npm 2.0.77 → 2.0.79

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 (101) hide show
  1. package/package.json +8 -1
  2. package/pages/Profile.js +6 -1
  3. package/public/Utils/personalDetailsUtils.js +17 -6
  4. package/.claude/skills/wix-data-query/SKILL.md +0 -167
  5. package/.claude/skills/wix-data-query/references/backup-archive.md +0 -136
  6. package/.claude/skills/wix-data-query/references/members-data-latest.md +0 -125
  7. package/.claude/skills/wix-data-query/references/recipes.md +0 -264
  8. package/.claude/worktrees/fix-save-button-disable/.husky/pre-commit +0 -19
  9. package/.claude/worktrees/fix-save-button-disable/.prettierignore +0 -7
  10. package/.claude/worktrees/fix-save-button-disable/.prettierrc.json +0 -16
  11. package/.claude/worktrees/fix-save-button-disable/README.md +0 -1
  12. package/.claude/worktrees/fix-save-button-disable/backend/README-member-contact-flows.md +0 -136
  13. package/.claude/worktrees/fix-save-button-disable/backend/__tests__/daily-pull-execution-check.test.js +0 -124
  14. package/.claude/worktrees/fix-save-button-disable/backend/__tests__/ensure-unique-urls-in-batch.test.js +0 -129
  15. package/.claude/worktrees/fix-save-button-disable/backend/__tests__/login-email-sync.test.js +0 -49
  16. package/.claude/worktrees/fix-save-button-disable/backend/__tests__/transient-retry-and-bulk-lookup.test.js +0 -129
  17. package/.claude/worktrees/fix-save-button-disable/backend/__tests__/url-uniqueness.test.js +0 -194
  18. package/.claude/worktrees/fix-save-button-disable/backend/automations-methods.js +0 -13
  19. package/.claude/worktrees/fix-save-button-disable/backend/cms-data-methods.js +0 -251
  20. package/.claude/worktrees/fix-save-button-disable/backend/consts.js +0 -58
  21. package/.claude/worktrees/fix-save-button-disable/backend/contacts-methods.js +0 -67
  22. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/bulk-process-methods.js +0 -222
  23. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/consts.js +0 -39
  24. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/index.js +0 -5
  25. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/process-member-methods.js +0 -213
  26. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/schedule-methods.js +0 -41
  27. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/sync-to-cms-methods.js +0 -161
  28. package/.claude/worktrees/fix-save-button-disable/backend/daily-pull/utils.js +0 -151
  29. package/.claude/worktrees/fix-save-button-disable/backend/data-hooks.js +0 -29
  30. package/.claude/worktrees/fix-save-button-disable/backend/dev-only-methods.js +0 -58
  31. package/.claude/worktrees/fix-save-button-disable/backend/elevated-modules.js +0 -18
  32. package/.claude/worktrees/fix-save-button-disable/backend/forms-methods.js +0 -52
  33. package/.claude/worktrees/fix-save-button-disable/backend/http-functions/httpFunctions.js +0 -86
  34. package/.claude/worktrees/fix-save-button-disable/backend/http-functions/index.js +0 -3
  35. package/.claude/worktrees/fix-save-button-disable/backend/http-functions/interests.js +0 -35
  36. package/.claude/worktrees/fix-save-button-disable/backend/index.js +0 -19
  37. package/.claude/worktrees/fix-save-button-disable/backend/jobs.js +0 -158
  38. package/.claude/worktrees/fix-save-button-disable/backend/login/generate-member-session-token.js +0 -27
  39. package/.claude/worktrees/fix-save-button-disable/backend/login/index.js +0 -8
  40. package/.claude/worktrees/fix-save-button-disable/backend/login/qa-login-methods.js +0 -54
  41. package/.claude/worktrees/fix-save-button-disable/backend/login/sso-methods.js +0 -159
  42. package/.claude/worktrees/fix-save-button-disable/backend/member-contact-orchestration.js +0 -111
  43. package/.claude/worktrees/fix-save-button-disable/backend/members-area-methods.js +0 -88
  44. package/.claude/worktrees/fix-save-button-disable/backend/members-data-methods.js +0 -789
  45. package/.claude/worktrees/fix-save-button-disable/backend/pac-api-methods.js +0 -54
  46. package/.claude/worktrees/fix-save-button-disable/backend/routers/index.js +0 -3
  47. package/.claude/worktrees/fix-save-button-disable/backend/routers/methods.js +0 -191
  48. package/.claude/worktrees/fix-save-button-disable/backend/routers/utils.js +0 -128
  49. package/.claude/worktrees/fix-save-button-disable/backend/search-filters-methods.js +0 -124
  50. package/.claude/worktrees/fix-save-button-disable/backend/tasks/address-primary-methods.js +0 -256
  51. package/.claude/worktrees/fix-save-button-disable/backend/tasks/address-visibility-methods.js +0 -160
  52. package/.claude/worktrees/fix-save-button-disable/backend/tasks/consts.js +0 -34
  53. package/.claude/worktrees/fix-save-button-disable/backend/tasks/daily-pull-check-methods.js +0 -78
  54. package/.claude/worktrees/fix-save-button-disable/backend/tasks/email-normalize-methods.js +0 -134
  55. package/.claude/worktrees/fix-save-button-disable/backend/tasks/index.js +0 -10
  56. package/.claude/worktrees/fix-save-button-disable/backend/tasks/migration-methods.js +0 -46
  57. package/.claude/worktrees/fix-save-button-disable/backend/tasks/tasks-configs.js +0 -251
  58. package/.claude/worktrees/fix-save-button-disable/backend/tasks/tasks-helpers-methods.js +0 -433
  59. package/.claude/worktrees/fix-save-button-disable/backend/tasks/tasks-process-methods.js +0 -606
  60. package/.claude/worktrees/fix-save-button-disable/backend/tasks/url-migration-methods.js +0 -378
  61. package/.claude/worktrees/fix-save-button-disable/backend/tasks/url-space-fix-methods.js +0 -174
  62. package/.claude/worktrees/fix-save-button-disable/backend/utils.js +0 -277
  63. package/.claude/worktrees/fix-save-button-disable/dev-only-scripts/extract-duplicate-url-groups.js +0 -201
  64. package/.claude/worktrees/fix-save-button-disable/dev-only-scripts/find-duplicate-ids.js +0 -159
  65. package/.claude/worktrees/fix-save-button-disable/dev-only-scripts/find-duplicate-urls.js +0 -201
  66. package/.claude/worktrees/fix-save-button-disable/eslint.config.js +0 -120
  67. package/.claude/worktrees/fix-save-button-disable/index.js +0 -5
  68. package/.claude/worktrees/fix-save-button-disable/package-lock.json +0 -12160
  69. package/.claude/worktrees/fix-save-button-disable/package.json +0 -60
  70. package/.claude/worktrees/fix-save-button-disable/pages/ContactUs.js +0 -129
  71. package/.claude/worktrees/fix-save-button-disable/pages/Home.js +0 -779
  72. package/.claude/worktrees/fix-save-button-disable/pages/LearnMore.js +0 -27
  73. package/.claude/worktrees/fix-save-button-disable/pages/LoadingPage.js +0 -29
  74. package/.claude/worktrees/fix-save-button-disable/pages/Profile.js +0 -354
  75. package/.claude/worktrees/fix-save-button-disable/pages/QAPage.js +0 -39
  76. package/.claude/worktrees/fix-save-button-disable/pages/SaveAlerts.js +0 -13
  77. package/.claude/worktrees/fix-save-button-disable/pages/SelectBannerImages.js +0 -46
  78. package/.claude/worktrees/fix-save-button-disable/pages/deleteConfirm.js +0 -19
  79. package/.claude/worktrees/fix-save-button-disable/pages/index.js +0 -12
  80. package/.claude/worktrees/fix-save-button-disable/pages/personalDetails.js +0 -2486
  81. package/.claude/worktrees/fix-save-button-disable/public/Utils/homePage.js +0 -798
  82. package/.claude/worktrees/fix-save-button-disable/public/Utils/personalDetailsUtils.js +0 -25
  83. package/.claude/worktrees/fix-save-button-disable/public/Utils/sharedUtils.js +0 -235
  84. package/.claude/worktrees/fix-save-button-disable/public/consts.js +0 -113
  85. package/.claude/worktrees/fix-save-button-disable/public/index.js +0 -5
  86. package/.claude/worktrees/fix-save-button-disable/public/messages.js +0 -16
  87. package/.claude/worktrees/fix-save-button-disable/public/sso-auth-methods.js +0 -43
  88. package/.husky/pre-commit +0 -19
  89. package/.prettierignore +0 -7
  90. package/.prettierrc.json +0 -16
  91. package/backend/__tests__/daily-pull-execution-check.test.js +0 -124
  92. package/backend/__tests__/ensure-unique-urls-in-batch.test.js +0 -129
  93. package/backend/__tests__/login-email-sync.test.js +0 -49
  94. package/backend/__tests__/map-link.test.js +0 -115
  95. package/backend/__tests__/transient-retry-and-bulk-lookup.test.js +0 -129
  96. package/backend/__tests__/url-uniqueness.test.js +0 -194
  97. package/backend/__tests__/url-validation.test.js +0 -69
  98. package/dev-only-scripts/extract-duplicate-url-groups.js +0 -201
  99. package/dev-only-scripts/find-duplicate-ids.js +0 -159
  100. package/dev-only-scripts/find-duplicate-urls.js +0 -201
  101. package/eslint.config.js +0 -120
@@ -1,111 +0,0 @@
1
- /**
2
- * Orchestrates syncing between Wix Members and CRM Contacts.
3
- * Returns member data to save; caller does a single updateMember to avoid double-write.
4
- */
5
- const { emailsMatch } = require('../public/Utils/sharedUtils');
6
-
7
- const { createSiteContact, updateContactInfo, deleteSiteContact } = require('./contacts-methods');
8
-
9
- /**
10
- * Updates contact email in CRM. Returns member patch { wixContactId } when member record
11
- * must change; otherwise null. Caller merges and saves once.
12
- */
13
- async function updateContactEmail(newContactEmail, existingMemberData) {
14
- if (!newContactEmail) {
15
- throw new Error('New email is required');
16
- }
17
- if (!existingMemberData || existingMemberData.wixContactId == null) {
18
- throw new Error('Existing member data with wixContactId is required');
19
- }
20
-
21
- const { wixContactId, wixMemberId, email: loginEmail } = existingMemberData;
22
- const isSingleEntity = wixContactId === wixMemberId;
23
- // Compare case-insensitively: Wix CRM enforces email uniqueness without regard to case,
24
- // so a contact email that equals the login email (e.g. different casing) must collapse to
25
- // a single entity rather than attempt a duplicate contact write.
26
- const contactEmailDiffersFromLogin = !emailsMatch(loginEmail, newContactEmail);
27
-
28
- if (!contactEmailDiffersFromLogin) {
29
- if (isSingleEntity) {
30
- return null;
31
- }
32
- await deleteSiteContact(wixContactId);
33
- return { wixContactId: wixMemberId };
34
- }
35
-
36
- if (isSingleEntity) {
37
- const newWixContactId = await createSiteContact({
38
- firstName: existingMemberData.firstName,
39
- lastName: existingMemberData.lastName,
40
- contactFormEmail: newContactEmail,
41
- });
42
- return { wixContactId: newWixContactId };
43
- }
44
-
45
- await updateContactInfo(
46
- wixContactId,
47
- currentInfo => ({
48
- ...currentInfo,
49
- emails: {
50
- items: [{ email: newContactEmail, primary: true }],
51
- },
52
- }),
53
- 'update contact email'
54
- );
55
- return null;
56
- }
57
-
58
- async function updateContactNames({ wixContactId, firstName, lastName }) {
59
- if (!firstName && !lastName) {
60
- throw new Error('First name or last name is required');
61
- }
62
- const createNameUpdate = currentInfo => ({
63
- ...currentInfo,
64
- name: {
65
- first: firstName || currentInfo?.name?.first || '',
66
- last: lastName || currentInfo?.name?.last || '',
67
- },
68
- });
69
- return await updateContactInfo(wixContactId, createNameUpdate, 'update contact names');
70
- }
71
-
72
- /**
73
- * Syncs contact with member (email, names). Contact CRUD only; returns member data to save.
74
- * Caller must call updateMember once with the result.
75
- */
76
- async function updateMemberContactInfo(data, existingMemberData) {
77
- const { wixContactId } = existingMemberData;
78
- if (!wixContactId) {
79
- throw new Error('Wix Contact ID is required');
80
- }
81
- const updateConfig = [
82
- {
83
- fields: ['contactFormEmail'],
84
- updater: updateContactEmail,
85
- args: ([email]) => [email, existingMemberData],
86
- returnsMemberPatch: true,
87
- },
88
- {
89
- fields: ['firstName', 'lastName'],
90
- updater: updateContactNames,
91
- args: ([firstName, lastName]) => [{ firstName, lastName, wixContactId }],
92
- returnsMemberPatch: false,
93
- },
94
- ];
95
-
96
- const results = await Promise.all(
97
- updateConfig.map(async ({ fields, updater, args, returnsMemberPatch }) => {
98
- const existingValues = fields.map(field => existingMemberData[field]);
99
- const newValues = fields.map(field => data[field]);
100
- const hasChanged = existingValues.some((val, idx) => val !== newValues[idx]);
101
- if (!hasChanged) return null;
102
- const result = await updater(...args(newValues));
103
- return returnsMemberPatch ? result : null;
104
- })
105
- );
106
-
107
- const memberPatch = results.reduce((acc, patch) => (patch ? { ...acc, ...patch } : acc), {});
108
- return { ...data, ...memberPatch };
109
- }
110
-
111
- module.exports = { updateMemberContactInfo };
@@ -1,88 +0,0 @@
1
- const { auth } = require('@wix/essentials');
2
- const { members, authentication } = require('@wix/members');
3
-
4
- const { LOGIN_EMAIL_SYNC_STATUS } = require('./consts');
5
-
6
- const elevatedCreateMember = auth.elevate(members.createMember);
7
- const elevatedChangeLoginEmail = auth.elevate(authentication.changeLoginEmail);
8
-
9
- const LOG = '[loginEmailSync]';
10
-
11
- function prepareMemberData(partner) {
12
- const options = {
13
- member: {
14
- loginEmail: partner.email,
15
- contact: {
16
- firstName: partner.firstName,
17
- lastName: partner.lastName,
18
- },
19
- },
20
- };
21
- return options;
22
- }
23
- async function createMemberFunction(member) {
24
- const newMember = await elevatedCreateMember(member);
25
- console.log('[createMemberFunction]newMember', JSON.stringify(newMember, null, 2));
26
- return newMember._id;
27
- }
28
- const createSiteMember = async memberDetails => {
29
- console.log('createSiteMember memberDetails', memberDetails);
30
- try {
31
- const options = prepareMemberData(memberDetails);
32
- return await createMemberFunction(options);
33
- } catch (error) {
34
- console.error(`Error in createSiteMember ${error.message}`);
35
- throw error;
36
- }
37
- };
38
-
39
- const getCurrentMember = async () => {
40
- const member = await members.getCurrentMember();
41
- return member.member;
42
- };
43
-
44
- /**
45
- * Attempts to change a Wix member's login email to `member.email` and reports a structured
46
- * outcome instead of swallowing failures. Never throws.
47
- *
48
- * Outcomes:
49
- * - SKIPPED: member has no wixMemberId, nothing to change.
50
- * - UPDATED: Wix login email changed successfully.
51
- * - FAILED: change failed. The caller keeps the CMS login email unchanged (so it stays
52
- * consistent with Wix) and reports the member in the task result for manual handling.
53
- *
54
- * @param {Object} member - Member with { memberId, wixMemberId, email }
55
- * @returns {Promise<Object>} outcome
56
- */
57
- async function updateWixMemberLoginEmail(member) {
58
- const desiredEmail = member.email;
59
- const base = { memberId: member.memberId, wixMemberId: member.wixMemberId, desiredEmail };
60
-
61
- if (!member.wixMemberId) {
62
- console.log(`${LOG} member ${member.memberId} has no wixMemberId - skipping`);
63
- return { ...base, status: LOGIN_EMAIL_SYNC_STATUS.SKIPPED };
64
- }
65
-
66
- console.log(
67
- `${LOG} attempting login-email change for member ${member.memberId} (wixMemberId: ${member.wixMemberId}) -> ${desiredEmail}`
68
- );
69
-
70
- try {
71
- const updatedWixMember = await elevatedChangeLoginEmail(member.wixMemberId, desiredEmail);
72
- console.log(
73
- `${LOG} ✅ updated member ${member.memberId} (wixMemberId: ${member.wixMemberId}) -> ${updatedWixMember.loginEmail}`
74
- );
75
- return { ...base, status: LOGIN_EMAIL_SYNC_STATUS.UPDATED };
76
- } catch (error) {
77
- console.error(
78
- `${LOG} ❌ login-email change failed for member ${member.memberId} (wixMemberId: ${member.wixMemberId}) -> ${desiredEmail}: ${error.message}`
79
- );
80
- return { ...base, status: LOGIN_EMAIL_SYNC_STATUS.FAILED, error: error.message };
81
- }
82
- }
83
-
84
- module.exports = {
85
- createSiteMember,
86
- getCurrentMember,
87
- updateWixMemberLoginEmail,
88
- };