@mindful-web/marko-web-native-x 1.86.0 → 1.92.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/README.md CHANGED
@@ -44,6 +44,12 @@ The render component requires the following properties:
44
44
  - `when`: A boolean. When truthy, the content node will be replaced by the ad (if available)
45
45
  - `sectionName`: Used by the conversion utilities. Because ads do not have website context, indicate the name of the primary section of the "content" (the ad, once replaced)
46
46
 
47
+ #### Visitor location headers
48
+
49
+ Placement requests are made server-to-server during the SSR render, so the ad delivery API cannot determine the visitor's location on its own. To support geographically targeted native line items, the Cloudflare visitor location headers on the inbound request (`cf-ipcountry`, `cf-region-code`, etc.) are automatically forwarded to the delivery API as `x-` prefixed headers (`x-country-code`, `x-region-code`, etc.) by [create-headers.js](utils/create-headers.js), using the shared `getVisitorLocationHeaders` helper from `@mindful-web/utils`. This is the same helper and header contract used for website banner ads by `@mindful-web/marko-web-mindful-ads`.
50
+
51
+ No action is needed in consuming apps, but the site's Cloudflare zone must have the ["Add visitor location headers" managed transform](https://developers.cloudflare.com/rules/transform/managed-transforms/reference/#add-visitor-location-headers) enabled. When the headers are absent, geo-targeted line items will not serve; line items without geo targeting are unaffected.
52
+
47
53
  #### Aliases
48
54
 
49
55
  When registering an placement, you must specify an alias. If you are not using any alias-aware placements, you should use the value `default` for the alias field. This is the most common!
@@ -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-native-x$1.86.0/components/fetch-elements.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-native-x$1.92.2/components/fetch-elements.marko",
6
6
  marko_component = require("./fetch-elements.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_utils_module = require("@mindful-web/utils"),
@@ -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-native-x$1.86.0/components/fetch-elements.marko",
53
+ id: "/@mindful-web/marko-web-native-x$1.92.2/components/fetch-elements.marko",
54
54
  component: "./fetch-elements.marko",
55
55
  tags: [
56
56
  "@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-native-x$1.86.0/components/gtm-init.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-native-x$1.92.2/components/gtm-init.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,
@@ -52,7 +52,7 @@ marko_template._ = marko_renderer(render, {
52
52
  });
53
53
 
54
54
  marko_template.meta = {
55
- id: "/@mindful-web/marko-web-native-x$1.86.0/components/gtm-init.marko",
55
+ id: "/@mindful-web/marko-web-native-x$1.92.2/components/gtm-init.marko",
56
56
  tags: [
57
57
  "@mindful-web/marko-web-gtm/components/init.marko",
58
58
  "@mindful-web/marko-web-gtm/components/noscript.marko"
@@ -1,10 +1,26 @@
1
+ import isV2Site from "@mindful-web/marko-web-p1-events/utils/is-v2-site";
1
2
  import { warn } from "@mindful-web/utils";
2
3
 
3
4
  $ const { uri, enabled, on } = input;
4
5
  $ const src = "https://cdn.parameter1.com/native-x/v1.2.0/lib.min.js";
5
6
 
7
+ // ⛔ SUPPRESSED ON v2 SITES. The v2 p1-events library tracks native ads itself (its
8
+ // `mindfulNativeAds` plugin reads the same server-rendered `data-mindful-fields` markup
9
+ // fortnight-js does), and BOTH emit `Native Website Creative` / `Native Website Ad Unit` -- so
10
+ // loading both DOUBLE-COUNTS every native ad event.
11
+ //
12
+ // The gate is read here rather than passed in by each site's `document.marko` so that setting
13
+ // `p1events.v2` flips the config swap, this, and the banner ads together. A per-document
14
+ // `enabled=… && !v2` would let the three drift apart, and a partial migration miscounts in a
15
+ // specific direction: this still loading on v2 double-counts, while removing it before the v2
16
+ // config lands loses native ads entirely.
17
+ //
18
+ // ⚠️ NOT COVERED: `pmmi-prosource` calls `fortnight('init', …)` directly from `app/app.html`,
19
+ // bypassing this component. That site must be edited by hand when it migrates.
20
+ $ const v2 = isV2Site(out.global.site);
21
+
6
22
  <if(uri)>
7
- <if(enabled)>
23
+ <if(enabled && !v2)>
8
24
  <if(on)>
9
25
  <marko-web-deferred-script-loader-register
10
26
  name="fortnight"
@@ -2,8 +2,10 @@
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-native-x$1.86.0/components/init.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-native-x$1.92.2/components/init.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
+ module_isV2Site = require("@mindful-web/marko-web-p1-events/utils/is-v2-site"),
8
+ isV2Site = module_isV2Site.default || module_isV2Site,
7
9
  module_utils_module = require("@mindful-web/utils"),
8
10
  utils_module = module_utils_module.default || module_utils_module,
9
11
  warn = module_utils_module.warn,
@@ -22,8 +24,10 @@ function render(input, out, __component, component, state) {
22
24
 
23
25
  const src = "https://cdn.parameter1.com/native-x/v1.2.0/lib.min.js";
24
26
 
27
+ const v2 = isV2Site(out.global.site);
28
+
25
29
  if (uri) {
26
- if (enabled) {
30
+ if (enabled && (!v2)) {
27
31
  if (on) {
28
32
  marko_web_deferred_script_loader_register_tag({
29
33
  name: "fortnight",
@@ -56,7 +60,7 @@ marko_template._ = marko_renderer(render, {
56
60
  });
57
61
 
58
62
  marko_template.meta = {
59
- id: "/@mindful-web/marko-web-native-x$1.86.0/components/init.marko",
63
+ id: "/@mindful-web/marko-web-native-x$1.92.2/components/init.marko",
60
64
  tags: [
61
65
  "@mindful-web/marko-web-deferred-script-loader/components/register.marko"
62
66
  ]
@@ -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-native-x$1.86.0/components/publisher-stories.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-native-x$1.92.2/components/publisher-stories.marko",
6
6
  marko_component = require("./publisher-stories.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_defaultFragment = require("../apollo/graphql/fragments/publisher-stories"),
@@ -88,7 +88,7 @@ marko_template._ = marko_renderer(render, {
88
88
  }, marko_component);
89
89
 
90
90
  marko_template.meta = {
91
- id: "/@mindful-web/marko-web-native-x$1.86.0/components/publisher-stories.marko",
91
+ id: "/@mindful-web/marko-web-native-x$1.92.2/components/publisher-stories.marko",
92
92
  component: "./publisher-stories.marko",
93
93
  tags: [
94
94
  "@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-native-x$1.86.0/components/render.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-native-x$1.92.2/components/render.marko",
6
6
  marko_component = require("./render.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  marko_dynamicTag = require("marko/dist/runtime/helpers/dynamic-tag"),
@@ -67,7 +67,7 @@ marko_template._ = marko_renderer(render, {
67
67
  }, marko_component);
68
68
 
69
69
  marko_template.meta = {
70
- id: "/@mindful-web/marko-web-native-x$1.86.0/components/render.marko",
70
+ id: "/@mindful-web/marko-web-native-x$1.92.2/components/render.marko",
71
71
  component: "./render.marko",
72
72
  tags: [
73
73
  "./retrieve.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-native-x$1.86.0/components/retrieve.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-native-x$1.92.2/components/retrieve.marko",
6
6
  marko_component = require("./retrieve.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_utils_module = require("@mindful-web/marko-web/utils"),
@@ -86,7 +86,7 @@ marko_template._ = marko_renderer(render, {
86
86
  }, marko_component);
87
87
 
88
88
  marko_template.meta = {
89
- id: "/@mindful-web/marko-web-native-x$1.86.0/components/retrieve.marko",
89
+ id: "/@mindful-web/marko-web-native-x$1.92.2/components/retrieve.marko",
90
90
  component: "./retrieve.marko",
91
91
  tags: [
92
92
  "./fetch-elements.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-native-x$1.86.0/components/story/advertiser-related-stories.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-native-x$1.92.2/components/story/advertiser-related-stories.marko",
6
6
  marko_component = require("./advertiser-related-stories.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_defaultFragment = require("../../apollo/graphql/fragments/related-stories"),
@@ -76,7 +76,7 @@ marko_template._ = marko_renderer(render, {
76
76
  }, marko_component);
77
77
 
78
78
  marko_template.meta = {
79
- id: "/@mindful-web/marko-web-native-x$1.86.0/components/story/advertiser-related-stories.marko",
79
+ id: "/@mindful-web/marko-web-native-x$1.92.2/components/story/advertiser-related-stories.marko",
80
80
  component: "./advertiser-related-stories.marko",
81
81
  tags: [
82
82
  "@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-native-x$1.86.0/components/story/track-end-of-content.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-native-x$1.92.2/components/story/track-end-of-content.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  marko_web_browser_component_template = require("@mindful-web/marko-web/components/browser-component.marko"),
8
8
  marko_loadTag = require("marko/dist/runtime/helpers/load-tag"),
@@ -23,7 +23,7 @@ marko_template._ = marko_renderer(render, {
23
23
  });
24
24
 
25
25
  marko_template.meta = {
26
- id: "/@mindful-web/marko-web-native-x$1.86.0/components/story/track-end-of-content.marko",
26
+ id: "/@mindful-web/marko-web-native-x$1.92.2/components/story/track-end-of-content.marko",
27
27
  tags: [
28
28
  "@mindful-web/marko-web/components/browser-component.marko"
29
29
  ]
@@ -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-native-x$1.86.0/components/story/track-init.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-native-x$1.92.2/components/story/track-init.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  module_objectPath_module = require("@mindful-web/object-path"),
8
8
  objectPath_module = module_objectPath_module.default || module_objectPath_module,
@@ -38,7 +38,7 @@ marko_template._ = marko_renderer(render, {
38
38
  });
39
39
 
40
40
  marko_template.meta = {
41
- id: "/@mindful-web/marko-web-native-x$1.86.0/components/story/track-init.marko",
41
+ id: "/@mindful-web/marko-web-native-x$1.92.2/components/story/track-init.marko",
42
42
  tags: [
43
43
  "@mindful-web/marko-web-gtm/components/push.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-native-x$1.86.0/components/story/track-outbound-links.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-native-x$1.92.2/components/story/track-outbound-links.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  marko_web_browser_component_template = require("@mindful-web/marko-web/components/browser-component.marko"),
8
8
  marko_loadTag = require("marko/dist/runtime/helpers/load-tag"),
@@ -25,7 +25,7 @@ marko_template._ = marko_renderer(render, {
25
25
  });
26
26
 
27
27
  marko_template.meta = {
28
- id: "/@mindful-web/marko-web-native-x$1.86.0/components/story/track-outbound-links.marko",
28
+ id: "/@mindful-web/marko-web-native-x$1.92.2/components/story/track-outbound-links.marko",
29
29
  tags: [
30
30
  "@mindful-web/marko-web/components/browser-component.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-native-x$1.86.0/components/story/track-page-view.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-native-x$1.92.2/components/story/track-page-view.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  marko_web_gtm_push_template = require("@mindful-web/marko-web-gtm/components/push.marko"),
8
8
  marko_loadTag = require("marko/dist/runtime/helpers/load-tag"),
@@ -25,7 +25,7 @@ marko_template._ = marko_renderer(render, {
25
25
  });
26
26
 
27
27
  marko_template.meta = {
28
- id: "/@mindful-web/marko-web-native-x$1.86.0/components/story/track-page-view.marko",
28
+ id: "/@mindful-web/marko-web-native-x$1.92.2/components/story/track-page-view.marko",
29
29
  tags: [
30
30
  "@mindful-web/marko-web-gtm/components/push.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-native-x$1.86.0/components/story/track-social-share.marko",
5
+ marko_componentType = "/@mindful-web/marko-web-native-x$1.92.2/components/story/track-social-share.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  marko_web_browser_component_template = require("@mindful-web/marko-web/components/browser-component.marko"),
8
8
  marko_loadTag = require("marko/dist/runtime/helpers/load-tag"),
@@ -23,7 +23,7 @@ marko_template._ = marko_renderer(render, {
23
23
  });
24
24
 
25
25
  marko_template.meta = {
26
- id: "/@mindful-web/marko-web-native-x$1.86.0/components/story/track-social-share.marko",
26
+ id: "/@mindful-web/marko-web-native-x$1.92.2/components/story/track-social-share.marko",
27
27
  tags: [
28
28
  "@mindful-web/marko-web/components/browser-component.marko"
29
29
  ]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mindful-web/marko-web-native-x",
3
- "version": "1.86.0",
3
+ "version": "1.92.2",
4
4
  "description": "NativeX Marko components for Mindful Web websites",
5
5
  "author": "Jacob Bare <jacob@parameter1.com>",
6
6
  "license": "MIT",
@@ -13,11 +13,12 @@
13
13
  "test": "yarn compile --no-clean && yarn lint"
14
14
  },
15
15
  "dependencies": {
16
- "@mindful-web/marko-web-deferred-script-loader": "^1.83.1",
17
- "@mindful-web/marko-web-gtm": "^1.83.1",
18
- "@mindful-web/object-path": "^1.83.1",
19
- "@mindful-web/utils": "^1.83.1",
20
- "@mindful-web/web-common": "^1.86.0",
16
+ "@mindful-web/marko-web-deferred-script-loader": "^1.92.0",
17
+ "@mindful-web/marko-web-gtm": "^1.92.0",
18
+ "@mindful-web/marko-web-p1-events": "^1.92.2",
19
+ "@mindful-web/object-path": "^1.92.0",
20
+ "@mindful-web/utils": "^1.92.0",
21
+ "@mindful-web/web-common": "^1.92.0",
21
22
  "graphql-tag": "^2.12.6",
22
23
  "node-fetch": "^2.6.9"
23
24
  },
@@ -28,5 +29,5 @@
28
29
  "publishConfig": {
29
30
  "access": "public"
30
31
  },
31
- "gitHead": "48d984cb5612956c13516f44f4c880ca7116b1ad"
32
+ "gitHead": "df62dca04be704ae15f4135f6952a5799a0c3866"
32
33
  }
@@ -1,7 +1,18 @@
1
+ const { getVisitorLocationHeaders } = require('@mindful-web/utils');
2
+
3
+ /**
4
+ * Builds the headers sent with server-to-server NativeX/Mindful delivery requests. The
5
+ * forwarded Cloudflare visitor location headers allow the delivery API to apply geographic
6
+ * targeting; they use the same contract as website banner ads.
7
+ *
8
+ * @param {{ req?: import('express').Request }} args
9
+ * @returns {Record<string, string>}
10
+ */
1
11
  module.exports = ({ req }) => {
2
12
  if (!req) return {};
3
13
  return {
4
14
  'x-forwarded-for': req.ip,
5
15
  'user-agent': req.get('user-agent'),
16
+ ...getVisitorLocationHeaders(req),
6
17
  };
7
18
  };