@mindful-web/marko-web-identity-x 1.89.2 → 1.90.2

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/CLAUDE.md CHANGED
@@ -132,7 +132,17 @@ slow-and-failing calls would be exactly the ones missing.
132
132
  ## Hooks (`hooks.js`)
133
133
 
134
134
  `onLoadActiveContext`, `onLoginLinkSent`, `onAuthenticationSuccess`, `onLogout`,
135
- `onChangeEmailLinkSent`, `onChangeEmailSuccess`, `onUserProfileUpdate`. Registered via
135
+ `onChangeEmailLinkSent`, `onChangeEmailSuccess`, `onUserProfileUpdate`. **Every route that fires a
136
+ hook passes a source**, and each hook names it differently: `onLoginLinkSent` gets `source`,
137
+ `onAuthenticationSuccess` gets `loginSource`, `onUserProfileUpdate` gets `actionSource`
138
+ (`profileUpdate` from `routes/profile.js`, `progressiveProfile` from
139
+ `routes/progressive-profile.js`; a client-supplied `additionalEventData.actionSource` wins over
140
+ either). `routes/profile.js` passed none until mindful-web#341, which is why that hook's Omeda
141
+ promo code was the tenant default on every save and its `actionSource` behavior attribute never
142
+ resolved. Adding it was safe because `build-behavior.js` **omits** an attribute whose
143
+ `valueIds.<source>` is missing rather than falling back to `valueIds.default` — no tenant maps
144
+ `profileUpdate`, so the emitted Omeda payload is byte-identical until one chooses to
145
+ (`marko-web-omeda-identity-x/test/build-behavior.spec.js` pins this). Registered via
136
146
  `config.addHook({ name, fn, shouldAwait })` and invoked with `utils/call-hooks-for`. This is the
137
147
  seam Omeda uses for rapid-identify + subscription sync. **Note:** `onLogout` currently fires only
138
148
  in the tokenless logout branch — a "fire `onLogout` always" change would let the `g_state` clear
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.89.2/components/access.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.90.2/components/access.marko",
6
6
  marko_component = require("./access.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_objectPath_module = require("@mindful-web/object-path"),
@@ -53,7 +53,7 @@ marko_template._ = marko_renderer(render, {
53
53
  }, marko_component);
54
54
 
55
55
  marko_template.meta = {
56
- id: "/@mindful-web/marko-web-identity-x$1.89.2/components/access.marko",
56
+ id: "/@mindful-web/marko-web-identity-x$1.90.2/components/access.marko",
57
57
  component: "./access.marko",
58
58
  tags: [
59
59
  "@mindful-web/marko-core/components/resolve.marko"
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.89.2/components/comment-stream.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.90.2/components/comment-stream.marko",
6
6
  marko_component = require("./comment-stream.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_objectPath_module = require("@mindful-web/object-path"),
@@ -91,7 +91,7 @@ marko_template._ = marko_renderer(render, {
91
91
  }, marko_component);
92
92
 
93
93
  marko_template.meta = {
94
- id: "/@mindful-web/marko-web-identity-x$1.89.2/components/comment-stream.marko",
94
+ id: "/@mindful-web/marko-web-identity-x$1.90.2/components/comment-stream.marko",
95
95
  component: "./comment-stream.marko",
96
96
  tags: [
97
97
  "@mindful-web/marko-web/components/browser-component.marko",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.89.2/components/context.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.90.2/components/context.marko",
6
6
  marko_component = require("./context.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  marko_dynamicTag = require("marko/dist/runtime/helpers/dynamic-tag"),
@@ -49,7 +49,7 @@ marko_template._ = marko_renderer(render, {
49
49
  }, marko_component);
50
50
 
51
51
  marko_template.meta = {
52
- id: "/@mindful-web/marko-web-identity-x$1.89.2/components/context.marko",
52
+ id: "/@mindful-web/marko-web-identity-x$1.90.2/components/context.marko",
53
53
  component: "./context.marko",
54
54
  tags: [
55
55
  "@mindful-web/marko-core/components/resolve.marko"
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.89.2/components/form-access.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.90.2/components/form-access.marko",
6
6
  marko_component = require("./form-access.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_defaultValue = require("@mindful-web/marko-core/utils/default-value"),
@@ -179,7 +179,7 @@ marko_template._ = marko_renderer(render, {
179
179
  }, marko_component);
180
180
 
181
181
  marko_template.meta = {
182
- id: "/@mindful-web/marko-web-identity-x$1.89.2/components/form-access.marko",
182
+ id: "/@mindful-web/marko-web-identity-x$1.90.2/components/form-access.marko",
183
183
  component: "./form-access.marko",
184
184
  tags: [
185
185
  "@mindful-web/marko-web/components/browser-component.marko",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.89.2/components/form-authenticate.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.90.2/components/form-authenticate.marko",
6
6
  marko_component = require("./form-authenticate.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_objectPath_module = require("@mindful-web/object-path"),
@@ -81,7 +81,7 @@ marko_template._ = marko_renderer(render, {
81
81
  }, marko_component);
82
82
 
83
83
  marko_template.meta = {
84
- id: "/@mindful-web/marko-web-identity-x$1.89.2/components/form-authenticate.marko",
84
+ id: "/@mindful-web/marko-web-identity-x$1.90.2/components/form-authenticate.marko",
85
85
  component: "./form-authenticate.marko",
86
86
  tags: [
87
87
  "@mindful-web/marko-web/components/browser-component.marko",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.89.2/components/form-change-email.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.90.2/components/form-change-email.marko",
6
6
  marko_component = require("./form-change-email.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_objectPath_module = require("@mindful-web/object-path"),
@@ -59,7 +59,7 @@ marko_template._ = marko_renderer(render, {
59
59
  }, marko_component);
60
60
 
61
61
  marko_template.meta = {
62
- id: "/@mindful-web/marko-web-identity-x$1.89.2/components/form-change-email.marko",
62
+ id: "/@mindful-web/marko-web-identity-x$1.90.2/components/form-change-email.marko",
63
63
  component: "./form-change-email.marko",
64
64
  tags: [
65
65
  "@mindful-web/marko-web/components/browser-component.marko",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.89.2/components/form-login.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.90.2/components/form-login.marko",
6
6
  marko_component = require("./form-login.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_objectPath_module = require("@mindful-web/object-path"),
@@ -92,7 +92,7 @@ marko_template._ = marko_renderer(render, {
92
92
  }, marko_component);
93
93
 
94
94
  marko_template.meta = {
95
- id: "/@mindful-web/marko-web-identity-x$1.89.2/components/form-login.marko",
95
+ id: "/@mindful-web/marko-web-identity-x$1.90.2/components/form-login.marko",
96
96
  component: "./form-login.marko",
97
97
  tags: [
98
98
  "@mindful-web/marko-web/components/browser-component.marko",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.89.2/components/form-logout.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.90.2/components/form-logout.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  module_defaultValue = require("@mindful-web/marko-core/utils/default-value"),
8
8
  defaultValue = module_defaultValue.default || module_defaultValue,
@@ -29,7 +29,7 @@ marko_template._ = marko_renderer(render, {
29
29
  });
30
30
 
31
31
  marko_template.meta = {
32
- id: "/@mindful-web/marko-web-identity-x$1.89.2/components/form-logout.marko",
32
+ id: "/@mindful-web/marko-web-identity-x$1.90.2/components/form-logout.marko",
33
33
  tags: [
34
34
  "@mindful-web/marko-web/components/browser-component.marko"
35
35
  ]
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.89.2/components/form-profile.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.90.2/components/form-profile.marko",
6
6
  marko_component = require("./form-profile.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_objectPath_module = require("@mindful-web/object-path"),
@@ -84,7 +84,7 @@ marko_template._ = marko_renderer(render, {
84
84
  }, marko_component);
85
85
 
86
86
  marko_template.meta = {
87
- id: "/@mindful-web/marko-web-identity-x$1.89.2/components/form-profile.marko",
87
+ id: "/@mindful-web/marko-web-identity-x$1.90.2/components/form-profile.marko",
88
88
  component: "./form-profile.marko",
89
89
  tags: [
90
90
  "@mindful-web/marko-web/components/browser-component.marko",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.89.2/components/form-register.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.90.2/components/form-register.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  marko_assign = require("marko/dist/runtime/helpers/assign"),
8
8
  marko_web_identity_x_form_login_template = require("./form-login.marko"),
@@ -25,7 +25,7 @@ marko_template._ = marko_renderer(render, {
25
25
  });
26
26
 
27
27
  marko_template.meta = {
28
- id: "/@mindful-web/marko-web-identity-x$1.89.2/components/form-register.marko",
28
+ id: "/@mindful-web/marko-web-identity-x$1.90.2/components/form-register.marko",
29
29
  tags: [
30
30
  "./form-login.marko"
31
31
  ]
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.89.2/components/google-init.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.90.2/components/google-init.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  marko_attr = require("marko/dist/runtime/html/helpers/attr"),
8
8
  marko_str = require("marko/dist/runtime/helpers/to-string");
@@ -239,5 +239,5 @@ marko_template._ = marko_renderer(render, {
239
239
  });
240
240
 
241
241
  marko_template.meta = {
242
- id: "/@mindful-web/marko-web-identity-x$1.89.2/components/google-init.marko"
242
+ id: "/@mindful-web/marko-web-identity-x$1.90.2/components/google-init.marko"
243
243
  };
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.89.2/components/google-sign-in-button.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.90.2/components/google-sign-in-button.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  helpers_escape_xml = require("marko/dist/runtime/html/helpers/escape-xml"),
8
8
  marko_escapeXml = helpers_escape_xml.x,
@@ -40,5 +40,5 @@ marko_template._ = marko_renderer(render, {
40
40
  });
41
41
 
42
42
  marko_template.meta = {
43
- id: "/@mindful-web/marko-web-identity-x$1.89.2/components/google-sign-in-button.marko"
43
+ id: "/@mindful-web/marko-web-identity-x$1.90.2/components/google-sign-in-button.marko"
44
44
  };
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.89.2/components/identify.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.90.2/components/identify.marko",
6
6
  marko_component = require("./identify.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_objectPath_module = require("@mindful-web/object-path"),
@@ -50,7 +50,7 @@ marko_template._ = marko_renderer(render, {
50
50
  }, marko_component);
51
51
 
52
52
  marko_template.meta = {
53
- id: "/@mindful-web/marko-web-identity-x$1.89.2/components/identify.marko",
53
+ id: "/@mindful-web/marko-web-identity-x$1.90.2/components/identify.marko",
54
54
  component: "./identify.marko",
55
55
  tags: [
56
56
  "@mindful-web/marko-web-gtm/components/push.marko",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.89.2/components/non-auth-identify.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.90.2/components/non-auth-identify.marko",
6
6
  marko_component = require("./non-auth-identify.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  marko_dynamicTag = require("marko/dist/runtime/helpers/dynamic-tag"),
@@ -45,7 +45,7 @@ marko_template._ = marko_renderer(render, {
45
45
  }, marko_component);
46
46
 
47
47
  marko_template.meta = {
48
- id: "/@mindful-web/marko-web-identity-x$1.89.2/components/non-auth-identify.marko",
48
+ id: "/@mindful-web/marko-web-identity-x$1.90.2/components/non-auth-identify.marko",
49
49
  component: "./non-auth-identify.marko",
50
50
  tags: [
51
51
  "@mindful-web/marko-core/components/resolve.marko"
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.89.2/components/progressive-profile-form.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.90.2/components/progressive-profile-form.marko",
6
6
  marko_component = require("./progressive-profile-form.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_defaultValue = require("@mindful-web/marko-core/utils/default-value"),
@@ -137,7 +137,7 @@ marko_template._ = marko_renderer(render, {
137
137
  }, marko_component);
138
138
 
139
139
  marko_template.meta = {
140
- id: "/@mindful-web/marko-web-identity-x$1.89.2/components/progressive-profile-form.marko",
140
+ id: "/@mindful-web/marko-web-identity-x$1.90.2/components/progressive-profile-form.marko",
141
141
  component: "./progressive-profile-form.marko",
142
142
  tags: [
143
143
  "@mindful-web/marko-web/components/browser-component.marko",
@@ -2,7 +2,7 @@
2
2
  "use strict";
3
3
 
4
4
  var marko_template = module.exports = require("marko/dist/html").t(__filename),
5
- marko_componentType = "/@mindful-web/marko-web-identity-x$1.89.2/components/subscribe.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-identity-x$1.90.2/components/subscribe.marko",
6
6
  marko_component = require("./subscribe.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_objectPath_module = require("@mindful-web/object-path"),
@@ -73,7 +73,7 @@ marko_template._ = marko_renderer(render, {
73
73
  }, marko_component);
74
74
 
75
75
  marko_template.meta = {
76
- id: "/@mindful-web/marko-web-identity-x$1.89.2/components/subscribe.marko",
76
+ id: "/@mindful-web/marko-web-identity-x$1.90.2/components/subscribe.marko",
77
77
  component: "./subscribe.marko",
78
78
  tags: [
79
79
  "@mindful-web/marko-web/components/browser-component.marko",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindful-web/marko-web-identity-x",
3
- "version": "1.89.2",
3
+ "version": "1.90.2",
4
4
  "description": "Marko Wrapper for IdentityX",
5
5
  "repository": "https://github.com/parameter1/mindful-web/tree/main/packages/marko-web-identity-x",
6
6
  "author": "Josh Worden <josh@parameter1.com>",
@@ -43,5 +43,5 @@
43
43
  "chai": "^4.3.7",
44
44
  "mocha": "^6.2.3"
45
45
  },
46
- "gitHead": "a813aca477e54e14bc61e5bbb5c77fd7d870ea01"
46
+ "gitHead": "0e498d1c31b3c6a8856b9d75cd9233a121fa173b"
47
47
  }
package/routes/profile.js CHANGED
@@ -6,6 +6,28 @@ const callHooksFor = require('../utils/call-hooks-for');
6
6
  const buildBooleanAnswersInput = require('../utils/build-boolean-answers-input');
7
7
  const overlaySubmittedBooleanAnswers = require('../utils/overlay-submitted-boolean-answers');
8
8
 
9
+ // The login source this route reports to `onUserProfileUpdate`. Until now it passed none at all,
10
+ // so every consumer of that hook saw `actionSource: undefined`: the omeda hook's promo code fell
11
+ // through to the tenant default on every profile save, its Omeda behavior `actionSource` attribute
12
+ // was omitted entirely, and per-source opt-in overrides on the hook could never resolve. This is
13
+ // the sibling of `routes/progressive-profile.js`'s `ACTION_SOURCE = 'progressiveProfile'`, and the
14
+ // two are deliberately distinct values — a member editing their own profile and a link-follower
15
+ // answering an interstitial are different actions.
16
+ //
17
+ // Two things this deliberately does NOT change, both verified before choosing the value:
18
+ // - Promo codes. `getPromoCodeFor` has no case for it, so it still returns the tenant default and
19
+ // no site's Omeda promo attribution moves. A tenant that wants a distinct code now *can* add
20
+ // one; it is no longer forced.
21
+ // - Omeda behavior attributes. `utils/build-behavior.js` looks up
22
+ // `behaviorAttributes.actionSource.valueIds.<source>` and drops the attribute when it is
23
+ // missing (there is no `valueId` fallback on that attribute). No tenant maps `profileUpdate`,
24
+ // so the attribute stays omitted exactly as it is today — it does not start resolving to
25
+ // `valueIds.default`, and no unknown value id is ever sent to Omeda.
26
+ //
27
+ // A client-supplied `additionalEventData.actionSource` still wins, so a caller that already labels
28
+ // its own profile submits keeps its label.
29
+ const ACTION_SOURCE = 'profileUpdate';
30
+
9
31
  const mutation = gql`
10
32
  mutation UpdateUserProfile($input: UpdateOwnAppUserMutationInput!) {
11
33
  updateOwnAppUser(input: $input) {
@@ -189,9 +211,14 @@ module.exports = asyncRoute(async (req, res) => {
189
211
 
190
212
  const { data } = await identityX.client.mutate({ mutation, variables: { input } });
191
213
  const { updateOwnAppUser: user } = data;
214
+ // Built as a NEW object rather than mutating the body's: `additionalEventData` is echoed back in
215
+ // the response below and pushed to the dataLayer by `browser/profile.vue`, so stamping the
216
+ // source onto it would also change what GTM receives on every profile save. The source is for
217
+ // the server-side hooks.
218
+ const hookEventData = { actionSource: ACTION_SOURCE, ...(additionalEventData || {}) };
192
219
  await callHooksFor(identityX, 'onUserProfileUpdate', {
193
- additionalEventData,
194
- ...(additionalEventData || {}),
220
+ additionalEventData: hookEventData,
221
+ ...hookEventData,
195
222
  req,
196
223
  // The refreshed user can carry PRE-save channel checkbox answers (they resolve from the
197
224
  // member doc's embedded subscription copy, which materializes asynchronously) — so the