sfc-utils 1.4.60 → 1.4.62

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 (2) hide show
  1. package/index.js +244 -210
  2. package/package.json +1 -1
package/index.js CHANGED
@@ -1,243 +1,277 @@
1
- const { appCheck } = require('./appcheck.js')
1
+ const { appCheck } = require("./appcheck.js");
2
2
 
3
3
  // Blend the HDN var with whatever is already present on the page
4
4
  // Returns a string for injection into the head of the page
5
- let blendHDN = function(meta){
6
-
7
- if (!meta.PROJECT){
8
- // If we don't have a properly formatted meta var coming in, this is a legacy template and needs settings pulled
9
- let url_add = meta.url_add || ""
10
- meta = getSettings()
11
- meta.URL_ADD = url_add
12
- }
13
- let sailthru = ""
14
- if (meta.SAIL_CUST){
15
- sailthru = meta.SAIL_CUST
16
- }
17
-
18
- // Set vars with the new object
19
- let {
20
- PAYWALL_SETTING,
21
- URL_ADD,
22
- MAIN_DOMAIN,
23
- PROJECT: {
24
- AUTHORS,
25
- ANALYTICS_CREDIT,
26
- TITLE,
27
- HEARST_CATEGORY,
28
- KEY_SUBJECTS,
29
- SUBFOLDER,
30
- OPT_SLASH,
31
- SLUG,
32
- MARKET_KEY,
33
- ISO_PUBDATE,
34
- ISO_MODDATE,
35
- CANONICAL_URL
36
- },
37
- } = meta
38
- BASE_DOMAIN = MAIN_DOMAIN
39
- if (MARKET_KEY === "CT"){
40
- BASE_DOMAIN = "ctinsider.com"
5
+ let blendHDN = function (meta) {
6
+ if (!meta.PROJECT) {
7
+ // If we don't have a properly formatted meta var coming in, this is a legacy template and needs settings pulled
8
+ let url_add = meta.url_add || "";
9
+ meta = getSettings();
10
+ meta.URL_ADD = url_add;
41
11
  }
42
- let siteDomain
43
- if(CANONICAL_URL){
44
- siteDomain = CANONICAL_URL.match('^(.+?).com')[0]
12
+ let sailthru = "";
13
+ if (meta.SAIL_CUST) {
14
+ sailthru = meta.SAIL_CUST;
45
15
  }
46
- else{
47
- siteDomain = MAIN_DOMAIN
16
+
17
+ // Set vars with the new object
18
+ let {
19
+ PAYWALL_SETTING,
20
+ URL_ADD,
21
+ MAIN_DOMAIN,
22
+ PROJECT: {
23
+ AUTHORS,
24
+ ANALYTICS_CREDIT,
25
+ TITLE,
26
+ HEARST_CATEGORY,
27
+ KEY_SUBJECTS,
28
+ SUBFOLDER,
29
+ OPT_SLASH,
30
+ SLUG,
31
+ MARKET_KEY,
32
+ ISO_PUBDATE,
33
+ ISO_MODDATE,
34
+ CANONICAL_URL,
35
+ },
36
+ } = meta;
37
+ BASE_DOMAIN = MAIN_DOMAIN;
38
+ if (MARKET_KEY === "CT") {
39
+ BASE_DOMAIN = "ctinsider.com";
40
+ }
41
+ let siteDomain;
42
+ if (CANONICAL_URL) {
43
+ siteDomain = CANONICAL_URL.match("^(.+?).com")[0];
44
+ } else {
45
+ siteDomain = MAIN_DOMAIN;
48
46
  }
49
47
  // Check if we need a slash
50
- let slash = OPT_SLASH
48
+ let slash = OPT_SLASH;
51
49
 
52
50
  // Add the canonical here unless it's sent in
53
- if (!CANONICAL_URL){
54
- CANONICAL_URL = `${BASE_DOMAIN}/${SUBFOLDER}${slash}${SLUG}`
51
+ if (!CANONICAL_URL) {
52
+ CANONICAL_URL = `${BASE_DOMAIN}/${SUBFOLDER}${slash}${SLUG}`;
55
53
  }
56
54
 
57
55
  // If canonical has a slash at the end, remove it
58
- if (CANONICAL_URL.slice(-1) === "/"){
59
- CANONICAL_URL = CANONICAL_URL.slice(0, -1)
56
+ if (CANONICAL_URL.slice(-1) === "/") {
57
+ CANONICAL_URL = CANONICAL_URL.slice(0, -1);
60
58
  }
61
59
 
62
60
  // Add the url add here unless it's sent in
63
- if (!URL_ADD){
64
- URL_ADD = ""
61
+ if (!URL_ADD) {
62
+ URL_ADD = "";
65
63
  }
66
64
 
67
65
  // If url add does not end with a /, add it
68
- if (URL_ADD && URL_ADD.slice(-1) !== "/"){
69
- URL_ADD += "/"
66
+ if (URL_ADD && URL_ADD.slice(-1) !== "/") {
67
+ URL_ADD += "/";
68
+ }
69
+
70
+ // Get dates from env
71
+ let pubdate = "";
72
+ let pubTime = "";
73
+ if (ISO_PUBDATE) {
74
+ pubdate = ISO_PUBDATE.toString().split("T")[0]; // + " 00:00:00";
75
+ const pubdateTime = pubdate + "T" + "00:00:00";
76
+ pubTime = new Date(pubdateTime).getTime();
77
+ }
78
+ let moddate = "";
79
+ let modTime = "";
80
+ if (ISO_MODDATE) {
81
+ moddate = ISO_MODDATE.toString().split("T")[0]; // + " 00:00:00";
82
+ const moddateTime = moddate + "T" + "00:00:00";
83
+ modTime = new Date(moddateTime).getTime();
70
84
  }
71
85
 
72
- // Get dates from env
73
- let pubdate = ""
74
- if (ISO_PUBDATE){
75
- pubdate = ISO_PUBDATE.toString().split('T')[0] + " 00:00:00"
76
- }
77
- let moddate = ""
78
- if (ISO_MODDATE){
79
- moddate = ISO_MODDATE.toString().split('T')[0] + " 00:00:00"
80
- }
81
-
82
- // Setting up vars
83
- let HDN = {}
84
- HDN.dataLayer = {}
85
- HDN.dataLayer.content = {}
86
- HDN.dataLayer.href = {}
87
- HDN.dataLayer.source = {}
88
- HDN.dataLayer.sharing = {}
89
- HDN.dataLayer.presentation = {}
90
- HDN.dataLayer.paywall = {}
91
-
92
- // HDN.dataLayer object for content and href data
93
- HDN.dataLayer.content.title = TITLE
94
- HDN.dataLayer.content.subtitle = ''
95
- HDN.dataLayer.content.objectId = `${SUBFOLDER}${slash}${SLUG}/${URL_ADD}`
96
- HDN.dataLayer.content.objectType = 'project'
97
-
98
- // Check if we have more than one HEARST_CATEGORY, split on commas
99
- var categories = HEARST_CATEGORY.split(',').map(item=>item.trim())
100
- HDN.dataLayer.content.sectionPath = categories
101
-
102
- var key_subjects = KEY_SUBJECTS ? KEY_SUBJECTS.split(',').map(item=>item.trim()) : []
103
- HDN.dataLayer.content.keySubjects = key_subjects
104
- HDN.dataLayer.content.pubDate = pubdate
105
- HDN.dataLayer.content.lastModifiedDate = moddate
106
- HDN.dataLayer.content.wordCount = ''
107
- HDN.dataLayer.content.keywords = []
108
- HDN.dataLayer.content.keyPersons = []
109
- HDN.dataLayer.content.keyOrganizations = []
110
- HDN.dataLayer.content.keyConcepts = []
111
- HDN.dataLayer.content.keyCategories = []
112
- HDN.dataLayer.content.keyPlaces = []
113
- HDN.dataLayer.content.keyNlpPerson = []
114
- HDN.dataLayer.content.keyNlpLocation = []
115
- HDN.dataLayer.content.keyNlpOrganization = []
116
- HDN.dataLayer.content.keyNlpEvent = []
117
- HDN.dataLayer.content.keyNlpWorkOfArt = []
118
- HDN.dataLayer.content.keyNlpConsumerGood = []
119
- HDN.dataLayer.content.keyNlpOther = []
120
- HDN.dataLayer.content.keyNlpUnknown = []
121
-
122
- // Signal to Blueconic that we are ready for gift button
123
- HDN.dataLayer.content.giftEnabled = meta.GIFT_ENABLED;
124
-
125
- // HDN.dataLayer object for source information
126
- HDN.dataLayer.source.authorName = ''
127
-
128
- HDN.dataLayer.source.authorTitle = '';
129
- HDN.dataLayer.source.originalSourceSite = '';
130
- HDN.dataLayer.source.publishingSite = '';
131
- HDN.dataLayer.source.sourceSite = '';
132
- switch(MARKET_KEY){
133
- case "SFC":
134
- HDN.dataLayer.source.authorTitle = 'San Francisco Chronicle Staff';
135
- HDN.dataLayer.source.originalSourceSite = 'SF';
136
- HDN.dataLayer.source.publishingSite = 'premiumsfgate';
137
- HDN.dataLayer.source.sourceSite = 'sfgate';
138
- break;
139
- case "Houston":
140
- HDN.dataLayer.source.authorTitle = 'Houston Chronicle Staff';
141
- HDN.dataLayer.source.originalSourceSite = 'HC';
142
- break;
143
- case "SanAntonio":
144
- HDN.dataLayer.source.authorTitle = 'Express News Staff';
145
- HDN.dataLayer.source.originalSourceSite = 'EN';
146
- break;
147
- case "Albany":
148
- HDN.dataLayer.source.authorTitle = 'Times Union Staff';
149
- HDN.dataLayer.source.originalSourceSite = 'TU';
150
- break;
151
- case "CT":
152
- HDN.dataLayer.source.authorTitle = 'Connecticut Digital Staff';
153
- HDN.dataLayer.source.originalSourceSite = 'CT';
154
- break;
86
+ // Setting up vars
87
+ let HDN = {};
88
+ HDN.dataLayer = {};
89
+ HDN.dataLayer.content = {};
90
+ HDN.dataLayer.href = {};
91
+ HDN.dataLayer.source = {};
92
+ HDN.dataLayer.sharing = {};
93
+ HDN.dataLayer.presentation = {};
94
+ HDN.dataLayer.paywall = {};
95
+
96
+ // HDN.dataLayer object for content and href data
97
+ HDN.dataLayer.content.title = TITLE;
98
+ HDN.dataLayer.content.subtitle = "";
99
+ HDN.dataLayer.content.objectId = `${SUBFOLDER}${slash}${SLUG}/${URL_ADD}`;
100
+ HDN.dataLayer.content.objectType = "project";
101
+
102
+ // Check if we have more than one HEARST_CATEGORY, split on commas
103
+ var categories = HEARST_CATEGORY.split(",").map((item) => item.trim());
104
+ HDN.dataLayer.content.sectionPath = categories;
105
+
106
+ var key_subjects = KEY_SUBJECTS
107
+ ? KEY_SUBJECTS.split(",").map((item) => item.trim())
108
+ : [];
109
+ HDN.dataLayer.content.keySubjects = key_subjects;
110
+ HDN.dataLayer.content.pubDate = pubdate;
111
+ HDN.dataLayer.content.pubDateTimestamp = pubTime;
112
+ HDN.dataLayer.content.lastModifiedDate = moddate;
113
+ HDN.dataLayer.content.lastModifiedDateTimestamp = modTime;
114
+ HDN.dataLayer.content.wordCount = "";
115
+ HDN.dataLayer.content.keywords = key_subjects;
116
+ HDN.dataLayer.content.keyPersons = [];
117
+ HDN.dataLayer.content.keyOrganizations = [];
118
+ HDN.dataLayer.content.keyConcepts = [];
119
+ HDN.dataLayer.content.keyCategories = [];
120
+ HDN.dataLayer.content.keyPlaces = [];
121
+ HDN.dataLayer.content.keyNlpPerson = [];
122
+ HDN.dataLayer.content.keyNlpLocation = [];
123
+ HDN.dataLayer.content.keyNlpOrganization = [];
124
+ HDN.dataLayer.content.keyNlpEvent = [];
125
+ HDN.dataLayer.content.keyNlpWorkOfArt = [];
126
+ HDN.dataLayer.content.keyNlpConsumerGood = [];
127
+ HDN.dataLayer.content.keyNlpOther = [];
128
+ HDN.dataLayer.content.keyNlpUnknown = [];
129
+ HDN.dataLayer.content.designTemplate = "devhub-sandbox";
130
+
131
+ // Signal to Blueconic that we are ready for gift button
132
+ HDN.dataLayer.content.giftEnabled = meta.GIFT_ENABLED;
133
+
134
+ // HDN.dataLayer object for source information
135
+ HDN.dataLayer.source.authorName = ""; // Set below
136
+ HDN.dataLayer.source.authorTitle = "";
137
+ HDN.dataLayer.source.originalSourceSite = "";
138
+ HDN.dataLayer.source.publishingSite = "";
139
+ HDN.dataLayer.source.sourceSite = "";
140
+ switch (MARKET_KEY) {
141
+ case "SFC":
142
+ HDN.dataLayer.source.authorTitle = "San Francisco Chronicle Staff";
143
+ HDN.dataLayer.source.originalSourceSite = "SF";
144
+ HDN.dataLayer.source.publishingSite = "premiumsfgate";
145
+ HDN.dataLayer.source.sourceSite = "sfgate";
146
+ break;
147
+ case "Houston":
148
+ HDN.dataLayer.source.authorTitle = "Houston Chronicle Staff";
149
+ HDN.dataLayer.source.originalSourceSite = "HC";
150
+ break;
151
+ case "SanAntonio":
152
+ HDN.dataLayer.source.authorTitle = "Express News Staff";
153
+ HDN.dataLayer.source.originalSourceSite = "EN";
154
+ break;
155
+ case "Albany":
156
+ HDN.dataLayer.source.authorTitle = "Times Union Staff";
157
+ HDN.dataLayer.source.originalSourceSite = "TU";
158
+ break;
159
+ case "CT":
160
+ HDN.dataLayer.source.authorTitle = "Connecticut Digital Staff";
161
+ HDN.dataLayer.source.originalSourceSite = "CT";
162
+ break;
155
163
  }
156
164
 
157
- // HDN.dataLayer object for sharing information
158
- HDN.dataLayer.sharing.openGraphUrl =`${siteDomain}/${SUBFOLDER}${slash}${SLUG}/${URL_ADD}`
159
- HDN.dataLayer.sharing.openGraphType = 'article'
160
-
161
- // More page settings
162
- HDN.dataLayer.href.pageUrl = `${siteDomain}/${SUBFOLDER}${slash}${SLUG}/${URL_ADD}`
163
- HDN.dataLayer.href.canonicalUrl = `${CANONICAL_URL}/${URL_ADD}`
164
-
165
- // HDN.dataLayer object for presentation information
166
- HDN.dataLayer.presentation.hasSlideshow = ''
167
- HDN.dataLayer.presentation.hasSlideshowListView = ''
168
- HDN.dataLayer.presentation.hasVideo = ''
169
- HDN.dataLayer.presentation.hasInteractive = ''
170
-
171
- // HDN.dataLayer object for paywall information
172
- HDN.dataLayer.paywall.premiumStatus = 'isPremium'
173
- HDN.dataLayer.paywall.premiumEndDate = ''
174
- HDN.dataLayer.paywall.policy = PAYWALL_SETTING
175
-
176
- // Special site var
177
- HDN.dataLayer.site = {
178
- domain: siteDomain.replace("https://www.",""),
179
- domainRoot: siteDomain.replace("https://www.","").replace(".com",""),
180
- subDomain: 'www',
181
- name: HDN.dataLayer.source.publishingSite,
182
- property: HDN.dataLayer.source.originalSourceSite,
183
- siteId: '35',
184
- siteUrl: siteDomain,
185
- timeZone: 'Pacific',
186
- sailthruId: sailthru
187
- }
188
-
189
- // Create author for analytics here
190
- let authorString = ""
191
- if (ANALYTICS_CREDIT !== ''){
192
- authorString = ANALYTICS_CREDIT
193
- } else if (AUTHORS){
194
- // If one wasn't specified, use the one in the config
195
- AUTHORS.forEach((author, index) => {
196
- // Add author to string
197
- authorString += author.AUTHOR_NAME
165
+ // HDN.dataLayer object for sharing information
166
+ HDN.dataLayer.sharing.openGraphUrl = `${siteDomain}/${SUBFOLDER}${slash}${SLUG}/${URL_ADD}`;
167
+ HDN.dataLayer.sharing.openGraphType = "article";
168
+
169
+ // More page settings
170
+ HDN.dataLayer.href.pageUrl = `${siteDomain}/${SUBFOLDER}${slash}${SLUG}/${URL_ADD}`;
171
+ HDN.dataLayer.href.canonicalUrl = `${CANONICAL_URL}/${URL_ADD}`;
172
+
173
+ // HDN.dataLayer object for presentation information
174
+ HDN.dataLayer.presentation.hasSlideshow = "";
175
+ HDN.dataLayer.presentation.hasSlideshowListView = "";
176
+ HDN.dataLayer.presentation.hasVideo = "";
177
+ HDN.dataLayer.presentation.hasInteractive = "";
178
+
179
+ // HDN.dataLayer object for paywall information
180
+ HDN.dataLayer.paywall.premiumStatus = "isPremium";
181
+ HDN.dataLayer.paywall.premiumEndDate = "";
182
+ HDN.dataLayer.paywall.policy = PAYWALL_SETTING;
183
+
184
+ // Special site var
185
+ HDN.dataLayer.site = {
186
+ domain: siteDomain.replace("https://www.", ""),
187
+ domainRoot: siteDomain.replace("https://www.", "").replace(".com", ""),
188
+ subDomain: "www",
189
+ name: HDN.dataLayer.source.publishingSite,
190
+ property: HDN.dataLayer.source.originalSourceSite,
191
+ siteId: "35",
192
+ siteUrl: siteDomain,
193
+ timeZone: "Pacific",
194
+ sailthruId: sailthru,
195
+ platform: "devhub",
196
+ };
197
+
198
+ // Create author for analytics here
199
+ let authorString = "";
200
+ if (ANALYTICS_CREDIT !== "") {
201
+ authorString = ANALYTICS_CREDIT;
202
+ } else if (AUTHORS) {
203
+ // If one wasn't specified, use the one in the config
204
+ AUTHORS.forEach((author, index) => {
205
+ // Add author to string
206
+ authorString += author.AUTHOR_NAME;
198
207
  // Add comma if we're not done
199
- if (index < (AUTHORS.length - 1)){
200
- authorString += ", "
208
+ if (index < AUTHORS.length - 1) {
209
+ authorString += ", ";
201
210
  }
202
- })
211
+ });
203
212
  }
204
213
  // If we didn't get any author, sub in default
205
- if (authorString === ""){
206
- authorString = HDN.dataLayer.source.authorTitle
214
+ if (authorString === "") {
215
+ authorString = HDN.dataLayer.source.authorTitle;
207
216
  }
208
- HDN.dataLayer.source.authorName = authorString
217
+ HDN.dataLayer.source.authorName = authorString;
209
218
 
210
- let appVer = appCheck()
211
- if (appVer){
212
- HDN.dataLayer.paywall.mode = "edbDisabled"
213
- }
219
+ let appVer = appCheck();
220
+ if (appVer) {
221
+ HDN.dataLayer.paywall.mode = "edbDisabled";
222
+ }
214
223
 
215
- let stringHDN = `
224
+ let stringHDN = `
216
225
  var HDN = HDN || {};
217
226
  HDN.dataLayer = HDN.dataLayer || {};
218
- HDN.dataLayer.content = Object.assign(HDN.dataLayer.content || {}, ${JSON.stringify(HDN.dataLayer.content)});
219
- HDN.dataLayer.source = Object.assign(HDN.dataLayer.source || {}, ${JSON.stringify(HDN.dataLayer.source)});
220
- HDN.dataLayer.sharing = Object.assign(HDN.dataLayer.sharing || {}, ${JSON.stringify(HDN.dataLayer.sharing)});
221
- HDN.dataLayer.href = Object.assign(HDN.dataLayer.href || {}, ${JSON.stringify(HDN.dataLayer.href)});
222
- HDN.dataLayer.paywall = Object.assign(HDN.dataLayer.paywall || {}, ${JSON.stringify(HDN.dataLayer.paywall)});
223
- HDN.dataLayer.site = Object.assign(HDN.dataLayer.site || {}, ${JSON.stringify(HDN.dataLayer.site)});
224
- `
225
-
226
- return {
227
- stringHDN: stringHDN
228
- }
229
- }
227
+ HDN.dataLayer.content = Object.assign(HDN.dataLayer.content || {}, ${JSON.stringify(
228
+ HDN.dataLayer.content
229
+ )});
230
+ HDN.dataLayer.source = Object.assign(HDN.dataLayer.source || {}, ${JSON.stringify(
231
+ HDN.dataLayer.source
232
+ )});
233
+ HDN.dataLayer.sharing = Object.assign(HDN.dataLayer.sharing || {}, ${JSON.stringify(
234
+ HDN.dataLayer.sharing
235
+ )});
236
+ HDN.dataLayer.href = Object.assign(HDN.dataLayer.href || {}, ${JSON.stringify(
237
+ HDN.dataLayer.href
238
+ )});
239
+ HDN.dataLayer.paywall = Object.assign(HDN.dataLayer.paywall || {}, ${JSON.stringify(
240
+ HDN.dataLayer.paywall
241
+ )});
242
+ HDN.dataLayer.site = Object.assign(HDN.dataLayer.site || {}, ${JSON.stringify(
243
+ HDN.dataLayer.site
244
+ )});
245
+ `;
246
+
247
+ return {
248
+ stringHDN: stringHDN,
249
+ };
250
+ };
230
251
 
231
252
  // Grab neighbor files
232
- let { getBrands } = require('./brands')
233
- let { getBrands2 } = require('./brands2')
234
- let { getSettings } = require('./settings')
235
- let { getNav } = require('./nav')
236
- let { getNav2 } = require('./nav2')
237
- let { getSpecialNav } = require('./specialnav')
238
- let { getFooter } = require('./footer')
239
- let { getTopper } = require('./topper')
240
- let { getBlueconic } = require('./blueconic')
241
- let { pollForAccount } = require('./accountswap')
242
-
243
- module.exports = { appCheck, blendHDN, getSettings, getBrands, getBrands2, getNav, getNav2, getSpecialNav, getFooter, getTopper, getBlueconic, pollForAccount }
253
+ let { getBrands } = require("./brands");
254
+ let { getBrands2 } = require("./brands2");
255
+ let { getSettings } = require("./settings");
256
+ let { getNav } = require("./nav");
257
+ let { getNav2 } = require("./nav2");
258
+ let { getSpecialNav } = require("./specialnav");
259
+ let { getFooter } = require("./footer");
260
+ let { getTopper } = require("./topper");
261
+ let { getBlueconic } = require("./blueconic");
262
+ let { pollForAccount } = require("./accountswap");
263
+
264
+ module.exports = {
265
+ appCheck,
266
+ blendHDN,
267
+ getSettings,
268
+ getBrands,
269
+ getBrands2,
270
+ getNav,
271
+ getNav2,
272
+ getSpecialNav,
273
+ getFooter,
274
+ getTopper,
275
+ getBlueconic,
276
+ pollForAccount,
277
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sfc-utils",
3
- "version": "1.4.60",
3
+ "version": "1.4.62",
4
4
  "author": "ewagstaff <evanjwagstaff@gmail.com>",
5
5
  "dependencies": {
6
6
  "archieml": "^0.4.2",