mod-build 4.0.98-beta.4 → 4.0.99

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/CHANGELOG.md CHANGED
@@ -1,9 +1,13 @@
1
1
  # Changelog
2
2
 
3
- ## 4.0.98
3
+ ## 4.0.99
4
4
 
5
5
  - Added `grab-bbb-logo` task to fetch the updated BBB logo and replace existing `bbb.svg` and/or `<symbol id="bbb">` in the sprite. Also updates current `BBB Accredited Business` alt text in `.html` / `template.js`
6
6
 
7
+ ## 4.0.98
8
+
9
+ - Allow `fontsToDownload` entries to specify custom weights via `fontVariants` (e.g. `{ montserrat: { fontVariants: [{ medium: '500' }, { bold: '700' }] } }`); plain font names still default to regular + bold
10
+
7
11
  ## 4.0.97
8
12
 
9
13
  - Added `HomeStories` to the default steps configuration in `get-default-trade-questions.js`. Also added support for `checkbox-group` fields (to support our HomeBuddy flows).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mod-build",
3
- "version": "4.0.98-beta.4",
3
+ "version": "4.0.99",
4
4
  "description": "Share components for S3 sites.",
5
5
  "type": "module",
6
6
  "scripts": {
@@ -27,7 +27,7 @@ const directoryHasItems = (dirPath) => {
27
27
  return fs.readdirSync(dirPath).length > 0;
28
28
  };
29
29
 
30
- const getFontDownloadUrls = async (fontName) => {
30
+ const getFontDownloadUrls = async (fontName, weightMap = { regular: '400', bold: '700' }) => {
31
31
  try {
32
32
  const url = `https://gwfh.mranftl.com/api/fonts/${fontName}?subsets=latin`;
33
33
  const response = await fetchWithRetry(url);
@@ -38,11 +38,11 @@ const getFontDownloadUrls = async (fontName) => {
38
38
  }
39
39
 
40
40
  const downloadUrls = {};
41
- const targetWeights = ['400', '700'];
41
+ const targetWeights = Object.values(weightMap);
42
42
 
43
43
  fontData.variants.forEach(variant => {
44
44
  if (variant.fontStyle === 'normal' && targetWeights.includes(variant.fontWeight)) {
45
- const variantName = variant.fontWeight === '400' ? 'regular' : 'bold';
45
+ const variantName = Object.keys(weightMap).find(name => weightMap[name] === variant.fontWeight);
46
46
  downloadUrls[variantName] = downloadUrls[variantName] || {};
47
47
  if (variant.ttf) {
48
48
  downloadUrls[variantName].ttf = variant.ttf;
@@ -92,7 +92,23 @@ const downloadFontFile = async (fontName, variant, extension, downloadUrl) => {
92
92
  }
93
93
  };
94
94
 
95
- const downloadFont = async (fontName) => {
95
+ const downloadFont = async (fontEntry) => {
96
+ // Plain name uses defaults; object shape supports custom weights:
97
+ // { montserrat: { fontVariants: [{ medium: '500' }, { bold: '700' }] } }
98
+ let fontName = fontEntry;
99
+ let weightMap = { regular: '400', bold: '700' };
100
+ let variants = fontVariants;
101
+
102
+ if (typeof fontEntry === 'object') {
103
+ fontName = Object.keys(fontEntry)[0];
104
+ const customVariants = fontEntry[fontName]?.fontVariants;
105
+
106
+ if (Array.isArray(customVariants) && customVariants.length > 0) {
107
+ weightMap = Object.assign({}, ...customVariants);
108
+ variants = Object.keys(weightMap);
109
+ }
110
+ }
111
+
96
112
  const fontDir = getFontPath(fontName);
97
113
 
98
114
  if (directoryHasItems(fontDir)) {
@@ -102,14 +118,14 @@ const downloadFont = async (fontName) => {
102
118
 
103
119
  console.log(`Downloading font: ${fontName}`);
104
120
 
105
- const downloadUrls = await getFontDownloadUrls(fontName);
121
+ const downloadUrls = await getFontDownloadUrls(fontName, weightMap);
106
122
 
107
123
  if (!downloadUrls || Object.keys(downloadUrls).length === 0) {
108
124
  throw new Error(`Could not find download URLs for ${fontName}`);
109
125
  }
110
126
 
111
127
  await Promise.all(
112
- fontVariants.flatMap(variant =>
128
+ variants.flatMap(variant =>
113
129
  fontExtensions.map(ext => {
114
130
  const url = downloadUrls[variant]?.[ext];
115
131
  if (!url) {
@@ -122,8 +138,10 @@ const downloadFont = async (fontName) => {
122
138
  );
123
139
  };
124
140
 
141
+ const getFontName = (fontEntry) => typeof fontEntry === 'string' ? fontEntry : Object.keys(fontEntry)[0];
142
+
125
143
  const updateGitignore = async (fontNames) => {
126
- const fontEntries = fontNames.map(fontName => `${getFontPath(fontName)}/`);
144
+ const fontEntries = fontNames.map(fontEntry => `${getFontPath(getFontName(fontEntry))}/`);
127
145
  await addFilesToGitignore(fontEntries, 'Downloaded fonts');
128
146
  };
129
147