sfc-utils 1.4.67 → 1.4.68

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/package.json +2 -2
  2. package/settings.js +129 -106
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sfc-utils",
3
- "version": "1.4.67",
3
+ "version": "1.4.68",
4
4
  "author": "ewagstaff <evanjwagstaff@gmail.com>",
5
5
  "dependencies": {
6
6
  "archieml": "^0.4.2",
@@ -14,4 +14,4 @@
14
14
  "react-transition-group": "^4.4.5",
15
15
  "write": "^2.0.0"
16
16
  }
17
- }
17
+ }
package/settings.js CHANGED
@@ -1,120 +1,143 @@
1
-
2
1
  /* Handle the data/processing for the Hearst analytics and paywall configuration */
3
2
  let projectConfig;
4
3
  try {
5
- projectConfig = require("../../project-config.json")
6
- } catch (err){
7
- try {
8
- projectConfig = require("../../project.json")
9
- } catch(err){
10
- // It's ok
11
- }
4
+ projectConfig = require("../../project-config.json");
5
+ } catch (err) {
6
+ try {
7
+ projectConfig = require("../../project.json");
8
+ } catch (err) {
9
+ // It's ok
10
+ }
12
11
  }
13
12
 
14
13
  // Get settings off story_settings if it exists, otherwise fall back to projectConfig
15
- let getSettings = function(){
16
- if (!projectConfig) {
17
- let settings = {PROJECT : {DATE: "January 1, 1900 9:00 AM", MOD_DATE: "January 1, 1901 9:00 AM"}} // Making this demo date SUPER wrong so we can catch it
18
- return (
19
- settings
20
- )
21
- }
22
- let projectSettings = projectConfig.PROJECT
23
- let settings = projectConfig
24
- // This needs to be set even if the "try" below fails
25
- settings.PROJECT['ANALYTICS_CREDIT'] = ''
26
- // Populate with storySettings if they exist
27
- let storySettings
28
- let fullAuthors = []
29
- try {
14
+ let getSettings = function () {
15
+ if (!projectConfig) {
16
+ let settings = {
17
+ PROJECT: {
18
+ DATE: "January 1, 1900 9:00 AM",
19
+ MOD_DATE: "January 1, 1901 9:00 AM",
20
+ },
21
+ }; // Making this demo date SUPER wrong so we can catch it
22
+ return settings;
23
+ }
24
+ let projectSettings = projectConfig.PROJECT;
25
+ let settings = projectConfig;
26
+ // This needs to be set even if the "try" below fails
27
+ settings.PROJECT["ANALYTICS_CREDIT"] = "";
28
+ settings.PROJECT["KEY_SUBJECTS"] = "";
29
+ // Populate with storySettings if they exist
30
+ let storySettings;
31
+ let fullAuthors = [];
32
+ try {
30
33
  try {
31
-
32
- [storySettings] = require("../../src/data/story_settings.sheet.json")
33
- // Uncomment line below and comment out line above if testing from example folder in utils
34
- // [storySettings] = require("./example/src/data/story_settings.sheet.json")
35
-
36
- // If we got story_settings, try structuring the AUTHORS object
37
- let authorNames = []
38
- let authorLinks = []
39
- try {
40
- if (storySettings.Byline) {
41
- authorNames = storySettings.Byline.split(',')
42
- }
43
- if (storySettings.Byline_Link) {
44
- authorLinks = storySettings.Byline_Link.split(',')
45
- }
46
- for (let i in authorNames){
47
- fullAuthors.push({
48
- AUTHOR_NAME: authorNames[i],
49
- AUTHOR_PAGE: authorLinks[i] || ""
50
- })
51
- }
52
- } catch(err){
53
- // It's ok, we'll fall back
54
- }
55
- } catch(err){
56
- try {
57
- // May be an Archie doc, try grabbing from there
58
- storySettings = require("../../data/project_data.json").story_settings
59
- } catch(err) {
60
- // hacking this to bypass??
61
- // Evan: This hack has my approval
62
- }
34
+ [storySettings] = require("../../src/data/story_settings.sheet.json");
35
+ // Uncomment line below and comment out line above if testing from example folder in utils
36
+ // [storySettings] = require("./example/src/data/story_settings.sheet.json")
37
+
38
+ // If we got story_settings, try structuring the AUTHORS object
39
+ let authorNames = [];
40
+ let authorLinks = [];
41
+ try {
42
+ if (storySettings.Byline) {
43
+ authorNames = storySettings.Byline.split(",");
44
+ }
45
+ if (storySettings.Byline_Link) {
46
+ authorLinks = storySettings.Byline_Link.split(",");
47
+ }
48
+ for (let i in authorNames) {
49
+ fullAuthors.push({
50
+ AUTHOR_NAME: authorNames[i],
51
+ AUTHOR_PAGE: authorLinks[i] || "",
52
+ });
53
+ }
54
+ } catch (err) {
55
+ // It's ok, we'll fall back
56
+ }
57
+ } catch (err) {
58
+ try {
59
+ // May be an Archie doc, try grabbing from there
60
+ storySettings = require("../../data/project_data.json").story_settings;
61
+ } catch (err) {
62
+ // hacking this to bypass??
63
+ // Evan: This hack has my approval
64
+ }
65
+ }
66
+ // Empty array is triggering truthy test, so let's nullify
67
+ if (fullAuthors.length === 0) {
68
+ fullAuthors = null;
63
69
  }
64
- // Empty array is triggering truthy test, so let's nullify
65
- if (fullAuthors.length === 0){
66
- fullAuthors = null
67
- }
68
70
  // Populate with sheet settings
69
71
  settings = {
70
- "PAYWALL_SETTING": storySettings.Paywall,
71
- "EMBEDDED": projectConfig.EMBEDDED,
72
- "GOOGLE_SHEETS": projectConfig.GOOGLE_SHEETS,
73
- "GOOGLE_DOCS": projectConfig.GOOGLE_DOCS,
74
- "MAIN_DOMAIN": projectConfig.MAIN_DOMAIN,
75
- "PROJECT": {
76
- "SUBFOLDER": storySettings.Year,
77
- "SLUG": storySettings.Slug,
78
- "TITLE": storySettings.SEO_Title,
79
- "DISPLAY_TITLE": storySettings.Title,
80
- "SOCIAL_TITLE": storySettings.Social_Title,
81
- "DECK": storySettings.Deck,
82
- "URL": "https://projects.sfchronicle.com",
83
- "IMAGE": "https://s.hdnux.com/photos/0/0/0/0/"+storySettings.Social_ImageID+"/1/rawImage.jpg",
84
- "DESCRIPTION": storySettings.SEO_Description,
85
- "TWITTER_TEXT": storySettings.Twitter_Text,
86
- "DATE": storySettings.Publish_Date,
87
- "MOD_DATE": storySettings.Mod_Date || storySettings.LastModDate_C2P,
88
- "AUTHORS": fullAuthors || projectSettings.AUTHORS,
89
- "ANALYTICS_CREDIT": storySettings.Analytics_Credit,
90
- "HEARST_CATEGORY": storySettings.Category || storySettings.Analytics_Section || "News",
91
- "KEY_SUBJECTS": storySettings.Key_Subjects || "",
92
- "MARKET_KEY": storySettings.Market_Key,
93
- // Surveys have slightly different naming, so catch that below for backwards compat
94
- "NEWSLETTER_ID": storySettings.NewsletterID || storySettings.Custom_Sailthru_ID || projectSettings.NEWSLETTER_ID,
95
- "NEWSLETTER_PROMO": storySettings.NewsletterPromo || storySettings.Custom_Signup_Text || projectSettings.NEWSLETTER_PROMO,
96
- "NEWSLETTER_LEGAL": storySettings.NewsletterLegal || storySettings.TOS_Text || projectSettings.NEWSLETTER_LEGAL,
97
- // Newer things
98
- "RELATED_LINKS_HED": storySettings.Related_Links_Hed,
99
- "SECTION": storySettings.Section || storySettings.Category || storySettings.Analytics_Section
100
- }
101
- }
102
- } catch (err){
103
- // It's ok, we'll use project data
104
- }
72
+ PAYWALL_SETTING: storySettings.Paywall,
73
+ EMBEDDED: projectConfig.EMBEDDED,
74
+ GOOGLE_SHEETS: projectConfig.GOOGLE_SHEETS,
75
+ GOOGLE_DOCS: projectConfig.GOOGLE_DOCS,
76
+ MAIN_DOMAIN: projectConfig.MAIN_DOMAIN,
77
+ PROJECT: {
78
+ SUBFOLDER: storySettings.Year,
79
+ SLUG: storySettings.Slug,
80
+ TITLE: storySettings.SEO_Title,
81
+ DISPLAY_TITLE: storySettings.Title,
82
+ SOCIAL_TITLE: storySettings.Social_Title,
83
+ DECK: storySettings.Deck,
84
+ URL: "https://projects.sfchronicle.com",
85
+ IMAGE:
86
+ "https://s.hdnux.com/photos/0/0/0/0/" +
87
+ storySettings.Social_ImageID +
88
+ "/1/rawImage.jpg",
89
+ DESCRIPTION: storySettings.SEO_Description,
90
+ TWITTER_TEXT: storySettings.Twitter_Text,
91
+ DATE: storySettings.Publish_Date,
92
+ MOD_DATE: storySettings.Mod_Date || storySettings.LastModDate_C2P,
93
+ AUTHORS: fullAuthors || projectSettings.AUTHORS,
94
+ ANALYTICS_CREDIT: storySettings.Analytics_Credit,
95
+ HEARST_CATEGORY:
96
+ storySettings.Category || storySettings.Analytics_Section || "News",
97
+ KEY_SUBJECTS: storySettings.Key_Subjects || "",
98
+ MARKET_KEY: storySettings.Market_Key,
99
+ // Surveys have slightly different naming, so catch that below for backwards compat
100
+ NEWSLETTER_ID:
101
+ storySettings.NewsletterID ||
102
+ storySettings.Custom_Sailthru_ID ||
103
+ projectSettings.NEWSLETTER_ID,
104
+ NEWSLETTER_PROMO:
105
+ storySettings.NewsletterPromo ||
106
+ storySettings.Custom_Signup_Text ||
107
+ projectSettings.NEWSLETTER_PROMO,
108
+ NEWSLETTER_LEGAL:
109
+ storySettings.NewsletterLegal ||
110
+ storySettings.TOS_Text ||
111
+ projectSettings.NEWSLETTER_LEGAL,
112
+ // Newer things
113
+ RELATED_LINKS_HED: storySettings.Related_Links_Hed,
114
+ SECTION:
115
+ storySettings.Section ||
116
+ storySettings.Category ||
117
+ storySettings.Analytics_Section,
118
+ },
119
+ };
120
+ } catch (err) {
121
+ // It's ok, we'll use project data
122
+ }
105
123
 
106
- // Check if we need a slash
124
+ // Check if we need a slash
107
125
  let slash = "";
108
- if (settings.PROJECT.SUBFOLDER){
109
- slash = "/"
126
+ if (settings.PROJECT.SUBFOLDER) {
127
+ slash = "/";
110
128
  }
111
- settings.PROJECT['OPT_SLASH'] = slash
112
- // Set the canonical (either from the sheet override or constructed)
113
- settings.PROJECT['CANONICAL_URL'] = projectConfig.MAIN_DOMAIN + "/" + settings.PROJECT.SUBFOLDER + slash + settings.PROJECT.SLUG
114
- if (typeof storySettings !== "undefined" && storySettings.Canonical_URL){
115
- settings.PROJECT['CANONICAL_URL'] = storySettings.Canonical_URL
116
- }
117
- return settings
118
- }
129
+ settings.PROJECT["OPT_SLASH"] = slash;
130
+ // Set the canonical (either from the sheet override or constructed)
131
+ settings.PROJECT["CANONICAL_URL"] =
132
+ projectConfig.MAIN_DOMAIN +
133
+ "/" +
134
+ settings.PROJECT.SUBFOLDER +
135
+ slash +
136
+ settings.PROJECT.SLUG;
137
+ if (typeof storySettings !== "undefined" && storySettings.Canonical_URL) {
138
+ settings.PROJECT["CANONICAL_URL"] = storySettings.Canonical_URL;
139
+ }
140
+ return settings;
141
+ };
119
142
 
120
- module.exports = { getSettings }
143
+ module.exports = { getSettings };