hdoc-tools 0.30.0 → 0.32.0

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.
@@ -26,6 +26,11 @@
26
26
  class: "bi bi-megaphone",
27
27
  title: "Important",
28
28
  };
29
+ case "info":
30
+ return {
31
+ class: "bi bi-info-circle",
32
+ title: "Information",
33
+ };
29
34
  case "caution":
30
35
  return {
31
36
  class: "bi bi-x-circle",
@@ -77,6 +82,7 @@
77
82
  setupContainer("note");
78
83
  setupContainer("tip");
79
84
  setupContainer("important");
85
+ setupContainer("info");
80
86
  setupContainer("caution");
81
87
  setupContainer("warning");
82
88
 
package/hdoc-build.js CHANGED
@@ -60,6 +60,7 @@
60
60
  let conversion_failed = 0;
61
61
  let doc_header_template = "";
62
62
  let doc_header_template_non_git = "";
63
+ let github_repo_details = {};
63
64
  let global_source_path = "";
64
65
  let pdf_created = 0;
65
66
  let pdf_enable = false;
@@ -306,7 +307,8 @@
306
307
  hdocbook_config.publicSource,
307
308
  file_path.relativePath,
308
309
  );
309
- const contributors = hdoc.get_github_contributors(
310
+
311
+ const contributors = await hdoc.get_github_contributors(
310
312
  github_paths.api_path,
311
313
  git_token,
312
314
  );
@@ -1184,6 +1186,18 @@
1184
1186
  prods_supported = prods.prods_supported;
1185
1187
  }
1186
1188
 
1189
+ const clean_repo = hdocbook_config.publicSource.endsWith("/") ? hdocbook_config.publicSource.slice(0, -1) : hdocbook_config.publicSource;
1190
+ const api_path = clean_repo.replace(
1191
+ "https://github.com/",
1192
+ "https://api.github.com/repos/",
1193
+ );
1194
+
1195
+ // Get github repo details
1196
+ github_repo_details = await hdoc.get_github_repo_details( api_path, git_token );
1197
+ if (github_repo_details.success) {
1198
+ console.warn(`Unable to retrieve GitHub Repository details: ${github_repo_details.error}`);
1199
+ }
1200
+
1187
1201
  if (!validate) {
1188
1202
  console.log("Caching CSS for PDF generation...");
1189
1203
  const css_files = [
@@ -1394,6 +1408,7 @@
1394
1408
  gen_exclude,
1395
1409
  redirects,
1396
1410
  draft_links,
1411
+ github_repo_details.data.private,
1397
1412
  );
1398
1413
  if (!validation_success) {
1399
1414
  const end_time = Date.now();
package/hdoc-module.js CHANGED
@@ -434,6 +434,60 @@
434
434
  return github_paths;
435
435
  };
436
436
 
437
+ exports.get_github_repo_details = async (
438
+ github_url,
439
+ github_api_token,
440
+ ) => {
441
+ const response = {
442
+ success: false,
443
+ error: "",
444
+ data: {},
445
+ private: false
446
+ };
447
+ const request_options = {
448
+ headers: {
449
+ "User-Agent": "HornbillDocsBuild",
450
+ "Cache-Control": "no-cache",
451
+ Host: "api.github.com",
452
+ Accept: "application/json",
453
+ },
454
+ timeout: 5000,
455
+ };
456
+ if (github_api_token !== "") {
457
+ request_options.headers.authorization = `Bearer ${github_api_token}`;
458
+ }
459
+
460
+ let github_response;
461
+ try {
462
+ github_response = await axios.get(github_url, request_options);
463
+ if (retried) {
464
+ retried = false;
465
+ console.log("API call retry success!");
466
+ }
467
+ } catch (err) {
468
+ if (err.response) {
469
+ if (err.response.status !== 403 && err.response.status !== 401) {
470
+ response.error = err;
471
+ return response;
472
+ }
473
+ github_response = err.response;
474
+ } else {
475
+ response.error = `Unexpected response from GitHub for [${github_url}:\n${JSON.stringify(
476
+ err,
477
+ )}]`;
478
+ }
479
+ }
480
+ if (github_response.status === 200) {
481
+ response.success = true;
482
+ response.data = github_response.data;
483
+ response.private = github_response.data.private;
484
+ } else {
485
+ // Is it a 404 or 403?
486
+ response.error = `${github_response.status} : ${data.message}`;
487
+ }
488
+ return response;
489
+ };
490
+
437
491
  exports.get_github_contributors = async (
438
492
  github_url,
439
493
  github_api_token,
package/hdoc-validate.js CHANGED
@@ -28,6 +28,7 @@ const e = require("express");
28
28
  const md_to_validate = [];
29
29
  const exclude_links = {};
30
30
  const exclude_spellcheck = {};
31
+ let private_repo = false;
31
32
  let redirects = {};
32
33
  const exclude_h1_count = {};
33
34
  const exclude_spellcheck_output = [];
@@ -545,6 +546,17 @@ const e = require("express");
545
546
  continue;
546
547
  }
547
548
 
549
+ if (
550
+ links[i].toLowerCase().includes("docs-internal.hornbill.com") &&
551
+ markdown_paths.relativePath.includes('/_inline/') &&
552
+ !private_repo
553
+ ) {
554
+ // Is the parent book in a public repo? If so, flag this as an error.
555
+ const error_message = processErrorMessage(`Hornbill docs-internal links should not be used in public book inline content: ${links[i]}`, markdown_paths.relativePath, markdown_content, links[i]);
556
+ errors[htmlFile.relativePath].push( error_message );
557
+ continue;
558
+ }
559
+
548
560
  try {
549
561
  await axios({
550
562
  url: links[i],
@@ -810,9 +822,11 @@ const e = require("express");
810
822
  gen_exclude,
811
823
  gen_redirects,
812
824
  draft_links,
825
+ is_private,
813
826
  ) => {
814
827
  console.log("Performing Validation and Building SEO Link List...");
815
828
  redirects = gen_redirects;
829
+ private_repo = is_private;
816
830
 
817
831
  // Get a list of HTML files in source_path
818
832
  dree.scan(source_path, dreeOptions, fileContentCallback);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hdoc-tools",
3
- "version": "0.30.0",
3
+ "version": "0.32.0",
4
4
  "description": "Hornbill HDocBook Development Support Tool",
5
5
  "main": "hdoc.js",
6
6
  "bin": {
@@ -212,13 +212,22 @@ video {
212
212
  }
213
213
 
214
214
  .hdoc-alert.alert-icon-important {
215
+ border-color: var(--htl-custom-block-important-border);
216
+ color: var(--htl-custom-block-important-text);
217
+ background-color: var(--htl-custom-block-important-bg);
218
+ }
219
+
220
+ .hdoc-alert.alert-icon-important code {
221
+ background-color: var(--htl-custom-block-important-code-bg);
222
+ }
223
+
224
+ .hdoc-alert.alert-icon-info {
215
225
  border-color: var(--htl-custom-block-info-border);
216
226
  color: var(--htl-custom-block-info-text);
217
227
  background-color: var(--htl-custom-block-info-bg);
218
-
219
228
  }
220
229
 
221
- .hdoc-alert.alert-icon-important code {
230
+ .hdoc-alert.alert-icon-info code {
222
231
  background-color: var(--htl-custom-block-info-code-bg);
223
232
  }
224
233
 
@@ -310,14 +310,18 @@
310
310
  * Component: Custom Block
311
311
  * -------------------------------------------------------------------------- */
312
312
 
313
- :root {
313
+ :root {
314
314
  --htl-custom-block-code-font-size: var(--htl-default-font-size);
315
315
 
316
- --htl-custom-block-info-border: rgba(23, 23, 23, 0.5);
317
- --htl-custom-block-info-text: #171717;
318
- --htl-custom-block-info-bg: #d7eaf8;
319
- --htl-custom-block-info-code-bg: var(--htl-c-gray-light-4);
316
+ --htl-custom-block-important-border: var(--htl-c-indigo-dark);
317
+ --htl-custom-block-important-text: var(--htl-c-indigo-dark);
318
+ --htl-custom-block-important-bg: var(--htl-c-indigo-lighter);
319
+ --htl-custom-block-important-code-bg: var(--htl-custom-block-important-bg);
320
320
 
321
+ --htl-custom-block-info-border: var(--htl-c-blue-dimm-1);
322
+ --htl-custom-block-info-text: var(--htl-c-blue-darker);
323
+ --htl-custom-block-info-bg: var(--htl-c-blue-dimm-3);
324
+ --htl-custom-block-info-code-bg: var(--htl-custom-block-info-bg);
321
325
 
322
326
  --htl-custom-block-tip-border: var(--htl-c-green-dimm-1);
323
327
  --htl-custom-block-tip-text: var(--htl-c-green-darker);
@@ -346,6 +350,13 @@
346
350
  --htl-custom-block-details-bg: var(--htl-c-black-mute);
347
351
  --htl-custom-block-details-code-bg: var(--htl-c-gray-dark-4);
348
352
 
353
+ --htl-custom-block-important-border: var(--htl-c-indigo-lighter);
354
+ --htl-custom-block-important-bg: var(--htl-c-indigo-dark);
355
+ --htl-custom-block-important-text: var(--htl-c-indigo-lighter);
356
+
357
+ --htl-custom-block-info-text: var(--htl-c-blue);
358
+ --htl-custom-block-info-bg: var(--htl-c-blue-dimm-3);
359
+
349
360
  --htl-custom-block-tip-border: var(--htl-c-green-dimm-2);
350
361
  --htl-custom-block-tip-text: var(--htl-c-green-light);
351
362
 
@@ -796,13 +796,22 @@
796
796
  }
797
797
 
798
798
  .HTL-doc .hdoc-alert.alert-icon-important {
799
+ border-color: var(--htl-custom-block-important-border);
800
+ color: var(--htl-custom-block-important-text);
801
+ background-color: var(--htl-custom-block-important-bg);
802
+ }
803
+
804
+ .HTL-doc .hdoc-alert.alert-icon-important code {
805
+ background-color: var(--htl-custom-block-important-code-bg);
806
+ }
807
+
808
+ .HTL-doc .hdoc-alert.alert-icon-info {
799
809
  border-color: var(--htl-custom-block-info-border);
800
810
  color: var(--htl-custom-block-info-text);
801
811
  background-color: var(--htl-custom-block-info-bg);
802
-
803
812
  }
804
813
 
805
- .HTL-doc .hdoc-alert.alert-icon-important code {
814
+ .HTL-doc .hdoc-alert.alert-icon-info code {
806
815
  background-color: var(--htl-custom-block-info-code-bg);
807
816
  }
808
817
 
@@ -313,10 +313,15 @@
313
313
  :root {
314
314
  --htl-custom-block-code-font-size: var(--htl-default-font-size);
315
315
 
316
- --htl-custom-block-info-border: rgba(23, 23, 23, 0.5);
317
- --htl-custom-block-info-text: #171717;
318
- --htl-custom-block-info-bg: #d7eaf8;
319
- --htl-custom-block-info-code-bg: var(--htl-c-gray-light-4);
316
+ --htl-custom-block-important-border: var(--htl-c-indigo-dark);
317
+ --htl-custom-block-important-text: var(--htl-c-indigo-dark);
318
+ --htl-custom-block-important-bg: var(--htl-c-indigo-lighter);
319
+ --htl-custom-block-important-code-bg: var(--htl-custom-block-important-bg);
320
+
321
+ --htl-custom-block-info-border: var(--htl-c-blue-dimm-1);
322
+ --htl-custom-block-info-text: var(--htl-c-blue-darker);
323
+ --htl-custom-block-info-bg: var(--htl-c-blue-dimm-3);
324
+ --htl-custom-block-info-code-bg: var(--htl-custom-block-info-bg);
320
325
 
321
326
  --htl-custom-block-tip-border: var(--htl-c-green-dimm-1);
322
327
  --htl-custom-block-tip-text: var(--htl-c-green-darker);
@@ -345,6 +350,13 @@
345
350
  --htl-custom-block-details-bg: var(--htl-c-black-mute);
346
351
  --htl-custom-block-details-code-bg: var(--htl-c-gray-dark-4);
347
352
 
353
+ --htl-custom-block-important-border: var(--htl-c-indigo-lighter);
354
+ --htl-custom-block-important-bg: var(--htl-c-indigo-dark);
355
+ --htl-custom-block-important-text: var(--htl-c-indigo-lighter);
356
+
357
+ --htl-custom-block-info-text: var(--htl-c-blue);
358
+ --htl-custom-block-info-bg: var(--htl-c-blue-dimm-3);
359
+
348
360
  --htl-custom-block-tip-border: var(--htl-c-green-dimm-2);
349
361
  --htl-custom-block-tip-text: var(--htl-c-green-light);
350
362