@parameter1/base-cms-marko-web 4.3.6 → 4.4.1

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 (116) hide show
  1. package/components/browser-component.marko.js +2 -2
  2. package/components/document/components/body-wrapper.marko.js +2 -2
  3. package/components/document/components/error.marko.js +2 -2
  4. package/components/document/components/live-reload.marko.js +2 -2
  5. package/components/document/components/polyfill.marko.js +2 -2
  6. package/components/document/container.marko.js +2 -2
  7. package/components/document/index.marko.js +2 -2
  8. package/components/element/array.marko.js +2 -2
  9. package/components/element/audio.marko.js +2 -2
  10. package/components/element/block.marko.js +2 -2
  11. package/components/element/clear.marko.js +2 -2
  12. package/components/element/components/image.marko.js +2 -2
  13. package/components/element/components/text.marko.js +2 -2
  14. package/components/element/content/address1.marko.js +2 -2
  15. package/components/element/content/address2.marko.js +2 -2
  16. package/components/element/content/audio.marko.js +2 -2
  17. package/components/element/content/authors.marko.js +2 -2
  18. package/components/element/content/body.marko.js +2 -2
  19. package/components/element/content/byline.marko.js +2 -2
  20. package/components/element/content/city-state-zip.marko.js +2 -2
  21. package/components/element/content/contributors.marko.js +2 -2
  22. package/components/element/content/country.marko.js +2 -2
  23. package/components/element/content/embed-code.marko.js +2 -2
  24. package/components/element/content/end-date.marko.js +2 -2
  25. package/components/element/content/ends.marko.js +2 -2
  26. package/components/element/content/fax.marko.js +2 -2
  27. package/components/element/content/images.marko.js +2 -2
  28. package/components/element/content/mobile.marko.js +2 -2
  29. package/components/element/content/name.marko.js +2 -2
  30. package/components/element/content/phone.marko.js +2 -2
  31. package/components/element/content/photographers.marko.js +2 -2
  32. package/components/element/content/public-email.marko.js +2 -2
  33. package/components/element/content/published.marko.js +2 -2
  34. package/components/element/content/short-name.marko.js +2 -2
  35. package/components/element/content/sidebar-stubs.marko.js +2 -2
  36. package/components/element/content/sidebars.marko.js +2 -2
  37. package/components/element/content/source.marko.js +2 -2
  38. package/components/element/content/sponsors.marko.js +2 -2
  39. package/components/element/content/start-date.marko.js +2 -2
  40. package/components/element/content/starts.marko.js +2 -2
  41. package/components/element/content/teaser.marko.js +2 -2
  42. package/components/element/content/title.marko.js +2 -2
  43. package/components/element/content/tollfree.marko.js +2 -2
  44. package/components/element/content/transcript.marko.js +2 -2
  45. package/components/element/content/website.marko.js +2 -2
  46. package/components/element/date.marko.js +2 -2
  47. package/components/element/image/caption.marko.js +2 -2
  48. package/components/element/image/credit.marko.js +2 -2
  49. package/components/element/image/display-name.marko.js +2 -2
  50. package/components/element/image/slider.marko.js +2 -2
  51. package/components/element/img.marko.js +2 -2
  52. package/components/element/index.marko.js +2 -2
  53. package/components/element/link.marko.js +2 -2
  54. package/components/element/magazine-issue/description.marko.js +2 -2
  55. package/components/element/magazine-issue/digital-edition-url.marko.js +2 -2
  56. package/components/element/magazine-issue/name.marko.js +2 -2
  57. package/components/element/magazine-issue/pdf-url.marko.js +2 -2
  58. package/components/element/magazine-publication/cancel-url.marko.js +2 -2
  59. package/components/element/magazine-publication/change-address-url.marko.js +2 -2
  60. package/components/element/magazine-publication/description.marko.js +2 -2
  61. package/components/element/magazine-publication/einquiry-url.marko.js +2 -2
  62. package/components/element/magazine-publication/name.marko.js +2 -2
  63. package/components/element/magazine-publication/renewal-url.marko.js +2 -2
  64. package/components/element/magazine-publication/reprints-url.marko.js +2 -2
  65. package/components/element/magazine-publication/subscribe-url.marko.js +2 -2
  66. package/components/element/obj-array.marko.js +2 -2
  67. package/components/element/obj-audio.marko.js +2 -2
  68. package/components/element/obj-date.marko.js +2 -2
  69. package/components/element/obj-nodes.marko.js +2 -2
  70. package/components/element/obj-text.marko.js +2 -2
  71. package/components/element/obj.marko.js +2 -2
  72. package/components/element/picture.marko.js +2 -2
  73. package/components/element/text.marko.js +2 -2
  74. package/components/element/website-section/description.marko.js +2 -2
  75. package/components/element/website-section/hierarchy.marko.js +2 -2
  76. package/components/element/website-section/name.marko.js +2 -2
  77. package/components/load-more/index.marko.js +2 -2
  78. package/components/load-more/trigger.marko.js +2 -2
  79. package/components/node/body.marko.js +2 -2
  80. package/components/node/element.marko.js +2 -2
  81. package/components/node/footer.marko.js +2 -2
  82. package/components/node/header.marko.js +2 -2
  83. package/components/node/image-inner-wrapper.marko.js +2 -2
  84. package/components/node/image-wrapper.marko.js +2 -2
  85. package/components/node/image.marko.js +2 -2
  86. package/components/node/index.marko.js +2 -2
  87. package/components/node-list/body.marko.js +2 -2
  88. package/components/node-list/element.marko.js +2 -2
  89. package/components/node-list/footer.marko.js +2 -2
  90. package/components/node-list/header.marko.js +2 -2
  91. package/components/node-list/index.marko.js +2 -2
  92. package/components/node-list/node.marko.js +2 -2
  93. package/components/node-list/nodes.marko.js +2 -2
  94. package/components/page/container.marko.js +2 -2
  95. package/components/page/description.marko.js +2 -2
  96. package/components/page/image.marko.js +2 -2
  97. package/components/page/layouts/content.marko.js +2 -2
  98. package/components/page/layouts/default.marko.js +2 -2
  99. package/components/page/layouts/dynamic-page.marko.js +2 -2
  100. package/components/page/layouts/magazine-issue.marko.js +2 -2
  101. package/components/page/layouts/magazine-publication.marko.js +2 -2
  102. package/components/page/layouts/website-section.marko.js +2 -2
  103. package/components/page/metadata/components/common.marko.js +2 -2
  104. package/components/page/metadata/content.marko.js +2 -2
  105. package/components/page/metadata/default.marko.js +2 -2
  106. package/components/page/metadata/dynamic-page.marko.js +2 -2
  107. package/components/page/metadata/magazine-issue.marko.js +2 -2
  108. package/components/page/metadata/magazine-publication.marko.js +2 -2
  109. package/components/page/metadata/website-section.marko.js +2 -2
  110. package/components/page/rel-canonical.marko.js +2 -2
  111. package/components/page/title.marko.js +2 -2
  112. package/components/page/wrapper.marko.js +2 -2
  113. package/components/resolve/page.marko.js +2 -2
  114. package/components/rss/website-section.marko.js +2 -2
  115. package/integration/test-website-boot.js +129 -30
  116. package/package.json +3 -2
@@ -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 = "/@parameter1/base-cms-marko-web$4.3.6/components/page/layouts/magazine-issue.marko",
5
+ marko_componentType = "/@parameter1/base-cms-marko-web$4.4.1/components/page/layouts/magazine-issue.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  marko_web_magazine_issue_page_metadata_template = require("../metadata/magazine-issue.marko"),
8
8
  marko_loadTag = require("marko/dist/runtime/helpers/load-tag"),
@@ -52,7 +52,7 @@ marko_template._ = marko_renderer(render, {
52
52
  });
53
53
 
54
54
  marko_template.meta = {
55
- id: "/@parameter1/base-cms-marko-web$4.3.6/components/page/layouts/magazine-issue.marko",
55
+ id: "/@parameter1/base-cms-marko-web$4.4.1/components/page/layouts/magazine-issue.marko",
56
56
  tags: [
57
57
  "../metadata/magazine-issue.marko"
58
58
  ]
@@ -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 = "/@parameter1/base-cms-marko-web$4.3.6/components/page/layouts/magazine-publication.marko",
5
+ marko_componentType = "/@parameter1/base-cms-marko-web$4.4.1/components/page/layouts/magazine-publication.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  marko_web_magazine_publication_page_metadata_template = require("../metadata/magazine-publication.marko"),
8
8
  marko_loadTag = require("marko/dist/runtime/helpers/load-tag"),
@@ -52,7 +52,7 @@ marko_template._ = marko_renderer(render, {
52
52
  });
53
53
 
54
54
  marko_template.meta = {
55
- id: "/@parameter1/base-cms-marko-web$4.3.6/components/page/layouts/magazine-publication.marko",
55
+ id: "/@parameter1/base-cms-marko-web$4.4.1/components/page/layouts/magazine-publication.marko",
56
56
  tags: [
57
57
  "../metadata/magazine-publication.marko"
58
58
  ]
@@ -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 = "/@parameter1/base-cms-marko-web$4.3.6/components/page/layouts/website-section.marko",
5
+ marko_componentType = "/@parameter1/base-cms-marko-web$4.4.1/components/page/layouts/website-section.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  module_baseCmsObjectPath_module = require("@parameter1/base-cms-object-path"),
8
8
  baseCmsObjectPath_module = module_baseCmsObjectPath_module.default || module_baseCmsObjectPath_module,
@@ -70,7 +70,7 @@ marko_template._ = marko_renderer(render, {
70
70
  });
71
71
 
72
72
  marko_template.meta = {
73
- id: "/@parameter1/base-cms-marko-web$4.3.6/components/page/layouts/website-section.marko",
73
+ id: "/@parameter1/base-cms-marko-web$4.4.1/components/page/layouts/website-section.marko",
74
74
  tags: [
75
75
  "../metadata/website-section.marko",
76
76
  "../../rss/website-section.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 = "/@parameter1/base-cms-marko-web$4.3.6/components/page/metadata/components/common.marko",
5
+ marko_componentType = "/@parameter1/base-cms-marko-web$4.4.1/components/page/metadata/components/common.marko",
6
6
  marko_component = require("./common.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  marko_web_page_title_template = require("../../title.marko"),
@@ -98,7 +98,7 @@ marko_template._ = marko_renderer(render, {
98
98
  }, marko_component);
99
99
 
100
100
  marko_template.meta = {
101
- id: "/@parameter1/base-cms-marko-web$4.3.6/components/page/metadata/components/common.marko",
101
+ id: "/@parameter1/base-cms-marko-web$4.4.1/components/page/metadata/components/common.marko",
102
102
  component: "./common.marko",
103
103
  tags: [
104
104
  "../../title.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 = "/@parameter1/base-cms-marko-web$4.3.6/components/page/metadata/content.marko",
5
+ marko_componentType = "/@parameter1/base-cms-marko-web$4.4.1/components/page/metadata/content.marko",
6
6
  marko_component = require("./content.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_gql = require("graphql-tag"),
@@ -197,7 +197,7 @@ marko_template._ = marko_renderer(render, {
197
197
  }, marko_component);
198
198
 
199
199
  marko_template.meta = {
200
- id: "/@parameter1/base-cms-marko-web$4.3.6/components/page/metadata/content.marko",
200
+ id: "/@parameter1/base-cms-marko-web$4.4.1/components/page/metadata/content.marko",
201
201
  component: "./content.marko",
202
202
  tags: [
203
203
  "./components/common.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 = "/@parameter1/base-cms-marko-web$4.3.6/components/page/metadata/default.marko",
5
+ marko_componentType = "/@parameter1/base-cms-marko-web$4.4.1/components/page/metadata/default.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  common_template = require("./components/common.marko"),
8
8
  marko_loadTag = require("marko/dist/runtime/helpers/load-tag"),
@@ -22,7 +22,7 @@ marko_template._ = marko_renderer(render, {
22
22
  });
23
23
 
24
24
  marko_template.meta = {
25
- id: "/@parameter1/base-cms-marko-web$4.3.6/components/page/metadata/default.marko",
25
+ id: "/@parameter1/base-cms-marko-web$4.4.1/components/page/metadata/default.marko",
26
26
  tags: [
27
27
  "./components/common.marko"
28
28
  ]
@@ -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 = "/@parameter1/base-cms-marko-web$4.3.6/components/page/metadata/dynamic-page.marko",
5
+ marko_componentType = "/@parameter1/base-cms-marko-web$4.4.1/components/page/metadata/dynamic-page.marko",
6
6
  marko_component = require("./dynamic-page.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_gql = require("graphql-tag"),
@@ -75,7 +75,7 @@ marko_template._ = marko_renderer(render, {
75
75
  }, marko_component);
76
76
 
77
77
  marko_template.meta = {
78
- id: "/@parameter1/base-cms-marko-web$4.3.6/components/page/metadata/dynamic-page.marko",
78
+ id: "/@parameter1/base-cms-marko-web$4.4.1/components/page/metadata/dynamic-page.marko",
79
79
  component: "./dynamic-page.marko",
80
80
  tags: [
81
81
  "./components/common.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 = "/@parameter1/base-cms-marko-web$4.3.6/components/page/metadata/magazine-issue.marko",
5
+ marko_componentType = "/@parameter1/base-cms-marko-web$4.4.1/components/page/metadata/magazine-issue.marko",
6
6
  marko_component = require("./magazine-issue.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_gql = require("graphql-tag"),
@@ -74,7 +74,7 @@ marko_template._ = marko_renderer(render, {
74
74
  }, marko_component);
75
75
 
76
76
  marko_template.meta = {
77
- id: "/@parameter1/base-cms-marko-web$4.3.6/components/page/metadata/magazine-issue.marko",
77
+ id: "/@parameter1/base-cms-marko-web$4.4.1/components/page/metadata/magazine-issue.marko",
78
78
  component: "./magazine-issue.marko",
79
79
  tags: [
80
80
  "./components/common.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 = "/@parameter1/base-cms-marko-web$4.3.6/components/page/metadata/magazine-publication.marko",
5
+ marko_componentType = "/@parameter1/base-cms-marko-web$4.4.1/components/page/metadata/magazine-publication.marko",
6
6
  marko_component = require("./magazine-publication.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_gql = require("graphql-tag"),
@@ -70,7 +70,7 @@ marko_template._ = marko_renderer(render, {
70
70
  }, marko_component);
71
71
 
72
72
  marko_template.meta = {
73
- id: "/@parameter1/base-cms-marko-web$4.3.6/components/page/metadata/magazine-publication.marko",
73
+ id: "/@parameter1/base-cms-marko-web$4.4.1/components/page/metadata/magazine-publication.marko",
74
74
  component: "./magazine-publication.marko",
75
75
  tags: [
76
76
  "./components/common.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 = "/@parameter1/base-cms-marko-web$4.3.6/components/page/metadata/website-section.marko",
5
+ marko_componentType = "/@parameter1/base-cms-marko-web$4.4.1/components/page/metadata/website-section.marko",
6
6
  marko_component = require("./website-section.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_gql = require("graphql-tag"),
@@ -70,7 +70,7 @@ marko_template._ = marko_renderer(render, {
70
70
  }, marko_component);
71
71
 
72
72
  marko_template.meta = {
73
- id: "/@parameter1/base-cms-marko-web$4.3.6/components/page/metadata/website-section.marko",
73
+ id: "/@parameter1/base-cms-marko-web$4.4.1/components/page/metadata/website-section.marko",
74
74
  component: "./website-section.marko",
75
75
  tags: [
76
76
  "./components/common.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 = "/@parameter1/base-cms-marko-web$4.3.6/components/page/rel-canonical.marko",
5
+ marko_componentType = "/@parameter1/base-cms-marko-web$4.4.1/components/page/rel-canonical.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  module_baseCmsUtils_module = require("@parameter1/base-cms-utils"),
8
8
  baseCmsUtils_module = module_baseCmsUtils_module.default || module_baseCmsUtils_module,
@@ -38,5 +38,5 @@ marko_template._ = marko_renderer(render, {
38
38
  });
39
39
 
40
40
  marko_template.meta = {
41
- id: "/@parameter1/base-cms-marko-web$4.3.6/components/page/rel-canonical.marko"
41
+ id: "/@parameter1/base-cms-marko-web$4.4.1/components/page/rel-canonical.marko"
42
42
  };
@@ -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 = "/@parameter1/base-cms-marko-web$4.3.6/components/page/title.marko",
5
+ marko_componentType = "/@parameter1/base-cms-marko-web$4.4.1/components/page/title.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  module_baseCmsUtils_module = require("@parameter1/base-cms-utils"),
8
8
  baseCmsUtils_module = module_baseCmsUtils_module.default || module_baseCmsUtils_module,
@@ -42,5 +42,5 @@ marko_template._ = marko_renderer(render, {
42
42
  });
43
43
 
44
44
  marko_template.meta = {
45
- id: "/@parameter1/base-cms-marko-web$4.3.6/components/page/title.marko"
45
+ id: "/@parameter1/base-cms-marko-web$4.4.1/components/page/title.marko"
46
46
  };
@@ -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 = "/@parameter1/base-cms-marko-web$4.3.6/components/page/wrapper.marko",
5
+ marko_componentType = "/@parameter1/base-cms-marko-web$4.4.1/components/page/wrapper.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  module_baseCmsObjectPath_module = require("@parameter1/base-cms-object-path"),
8
8
  baseCmsObjectPath_module = module_baseCmsObjectPath_module.default || module_baseCmsObjectPath_module,
@@ -56,7 +56,7 @@ marko_template._ = marko_renderer(render, {
56
56
  });
57
57
 
58
58
  marko_template.meta = {
59
- id: "/@parameter1/base-cms-marko-web$4.3.6/components/page/wrapper.marko",
59
+ id: "/@parameter1/base-cms-marko-web$4.4.1/components/page/wrapper.marko",
60
60
  tags: [
61
61
  "../element/index.marko"
62
62
  ]
@@ -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 = "/@parameter1/base-cms-marko-web$4.3.6/components/resolve/page.marko",
5
+ marko_componentType = "/@parameter1/base-cms-marko-web$4.4.1/components/resolve/page.marko",
6
6
  marko_component = require("./page.marko"),
7
7
  marko_renderer = require("marko/dist/runtime/components/renderer"),
8
8
  module_baseCmsUtils_module = require("@parameter1/base-cms-utils"),
@@ -41,7 +41,7 @@ marko_template._ = marko_renderer(render, {
41
41
  }, marko_component);
42
42
 
43
43
  marko_template.meta = {
44
- id: "/@parameter1/base-cms-marko-web$4.3.6/components/resolve/page.marko",
44
+ id: "/@parameter1/base-cms-marko-web$4.4.1/components/resolve/page.marko",
45
45
  component: "./page.marko",
46
46
  tags: [
47
47
  "@parameter1/base-cms-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 = "/@parameter1/base-cms-marko-web$4.3.6/components/rss/website-section.marko",
5
+ marko_componentType = "/@parameter1/base-cms-marko-web$4.4.1/components/rss/website-section.marko",
6
6
  marko_renderer = require("marko/dist/runtime/components/renderer"),
7
7
  module_url_module = require("url"),
8
8
  url_module = module_url_module.default || module_url_module,
@@ -42,5 +42,5 @@ marko_template._ = marko_renderer(render, {
42
42
  });
43
43
 
44
44
  marko_template.meta = {
45
- id: "/@parameter1/base-cms-marko-web$4.3.6/components/rss/website-section.marko"
45
+ id: "/@parameter1/base-cms-marko-web$4.4.1/components/rss/website-section.marko"
46
46
  };
@@ -1,40 +1,139 @@
1
- const fetch = require('node-fetch');
2
1
  const { htmlEntities } = require('@parameter1/base-cms-html');
2
+ const { sleep: wait, cleanPath } = require('@parameter1/base-cms-utils');
3
+ const whilst = require('async/whilst');
4
+ const fetch = require('node-fetch');
5
+ const cheerio = require('cheerio');
3
6
 
4
- const { error, log } = console;
7
+ const { log } = console;
5
8
 
6
- const url = process.env.MARKO_WEB_INTEGRATION_TEST_URL || 'http://localhost:80';
9
+ const origin = process.env.MARKO_WEB_INTEGRATION_TEST_URL || 'http://localhost:80';
7
10
 
8
- setInterval(async () => {
11
+ const fetchResponse = async ({
12
+ path = '/',
13
+ catchErrors = false,
14
+ returnNullWhenNotOk = false,
15
+ } = {}) => {
16
+ const url = `${cleanPath(origin)}/${cleanPath(path)}`;
17
+ log(`fetching ${url}`);
18
+ const opts = { method: 'get' };
19
+ if (!catchErrors) return fetch(url, opts);
9
20
  try {
10
- const res = await fetch(url, { method: 'get' });
21
+ const res = await fetch(url, opts);
22
+ if (returnNullWhenNotOk && !res.ok) return null;
23
+ return res;
24
+ } catch (e) {
25
+ return null;
26
+ }
27
+ };
28
+
29
+ const checkReadiness = async ({
30
+ path = '/_health',
31
+ startAfter = 5000,
32
+ checkInterval = 2000,
33
+ unhealthyAfter = 5,
34
+ } = {}) => {
35
+ log('checking readiness...');
36
+ log(`initially waiting for ${startAfter}ms before checking...`);
37
+ await wait(startAfter);
38
+
39
+ let timesChecked = 0;
40
+ let booted = false;
41
+ await whilst(async () => !booted, async () => {
42
+ timesChecked += 1;
43
+ if (timesChecked > unhealthyAfter) {
44
+ throw new Error('The readiness probe has reached its maximum check limit.');
45
+ }
46
+ log(`pinging health check, attempt number ${timesChecked}...`);
47
+ const res = await fetchResponse({ path, catchErrors: true });
48
+ // if response is null, a connection error occrred
49
+ if (res == null || (res && !res.ok)) {
50
+ if (res == null) log('did not receive a response - assuming not ready.');
51
+ if (res && !res.ok) log(`received a non-ok response from health check - ${res.status} ${res.statusText}`);
52
+ log(`waiting another ${checkInterval}ms before retrying.`);
53
+ await wait(checkInterval);
54
+ return;
55
+ }
56
+ booted = true;
57
+ });
58
+ log('container is ready.');
59
+ };
60
+
61
+ const testPage = async ({ path, retryAttempts = 3, allowNotFound = false } = {}) => {
62
+ log(`testing page path ${path}`);
63
+
64
+ let timesChecked = 0;
65
+ let passed = false;
66
+ let html;
67
+ await whilst(async () => !passed, async () => {
68
+ timesChecked += 1;
69
+ if (timesChecked > retryAttempts) {
70
+ throw new Error(`The test runner for page path ${path} has reached its maximum check limit.`);
71
+ }
72
+ const res = await fetchResponse({ path });
11
73
  if (!res.ok) {
12
- error('Response not ok!', res.status, res.statusText);
13
- process.exit(1);
14
- } else {
15
- const html = await res.text();
16
- // check for in-body body errors
17
- const matches = [...html.matchAll(/data-marko-error="(.*?)"/g)];
18
- const errors = [];
19
- matches.forEach((values) => {
20
- const value = values[1];
21
- errors.push(htmlEntities.decode(value));
22
- });
23
- if (errors.length) {
24
- error('In-page, server-side Marko error(s) were encountered!', errors);
25
- process.exit(1);
74
+ if (allowNotFound && res.status === 404) {
75
+ log(`received a 404 not found from path ${path} but was set as allowed for this test. treating as passing.`);
76
+ passed = true;
77
+ return;
26
78
  }
79
+ throw new Error(`Received a non-ok response from path page ${path}`, res.status, res.statusText);
80
+ }
81
+ html = await res.text();
82
+
83
+ // first ensure the entire page rendered. if it didn't a fatal backened error occurred
84
+ // that prevented rendering.
85
+ const found = /.*<\/head>.*<\/body>.*<\/html>.*/is.test(html);
86
+ if (!found) throw new Error(`The page at path ${path} did not completely render.`);
27
87
 
28
- // if not in-body errors, ensure page rendered.
29
- const found = /.*<\/head>.*<\/body>.*<\/html>.*/is.test(html);
30
- if (!found) {
31
- error('Unable to find closing HTML tags!');
32
- process.exit(1);
88
+ // then check for in-body errors. this means an async internal block failed
89
+ // but the page could fully render.
90
+ const matches = [...html.matchAll(/data-marko-error="(.*?)"/g)];
91
+ const errors = [];
92
+ matches.forEach((values) => {
93
+ const value = values[1];
94
+ errors.push(htmlEntities.decode(value));
95
+ });
96
+ if (errors.length) {
97
+ // if all the errors were timeout errors, let's try again.
98
+ if (errors.every((msg) => msg === 'Timed out after 10000ms')) {
99
+ log(`all errors for page path ${path} were timeout errors. retrying...`);
100
+ return;
33
101
  }
34
- log('Integration tests passed!');
35
- process.exit(0);
102
+ // otherwise error.
103
+ log({ path, errors });
104
+ throw new Error(`Encountered server-side Marko error(s) at page path ${path}`);
36
105
  }
37
- } catch (e) {
38
- // noop
39
- }
40
- }, 100);
106
+ passed = true;
107
+ });
108
+ log(`page path ${path} passed tests.`);
109
+ return html;
110
+ };
111
+
112
+ const run = async () => {
113
+ await checkReadiness();
114
+
115
+ // test homepage first, and get html.
116
+ const html = await testPage({ path: '/' });
117
+
118
+ const toTest = new Map([
119
+ ['/search', { allowNotFound: true }],
120
+ ]);
121
+
122
+ const $ = cheerio.load(html);
123
+ const $a = $('a[href^="/"]');
124
+
125
+ $a.each(function getHref() {
126
+ const href = $(this).attr('href');
127
+ if (toTest.has(href) || href === '/') return;
128
+ if (toTest.size === 10) return;
129
+ toTest.set(href, { allowNotFound: true });
130
+ });
131
+
132
+ // now test all extracted pages.
133
+ await Promise.all([...toTest].map(async ([path, opts]) => testPage({
134
+ ...opts,
135
+ path,
136
+ })));
137
+ };
138
+
139
+ run().catch((e) => setImmediate(() => { throw e; }));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@parameter1/base-cms-marko-web",
3
- "version": "4.3.6",
3
+ "version": "4.4.1",
4
4
  "description": "Core Marko+Express components for BaseCMS websites",
5
5
  "author": "Jacob Bare <jacob@parameter1.com>",
6
6
  "main": "index.js",
@@ -38,6 +38,7 @@
38
38
  "@parameter1/base-cms-tenant-context": "^4.0.2",
39
39
  "@parameter1/base-cms-utils": "^4.0.2",
40
40
  "@parameter1/base-cms-web-common": "^4.0.2",
41
+ "async": "^3.2.4",
41
42
  "cheerio": "^1.0.0-rc.12",
42
43
  "cookie-parser": "^1.4.6",
43
44
  "express": "^4.18.2",
@@ -58,5 +59,5 @@
58
59
  "publishConfig": {
59
60
  "access": "public"
60
61
  },
61
- "gitHead": "f30cdb66dc0f3f12266970436964fee225709d44"
62
+ "gitHead": "b353557101703cb63d3f71c55c2383cc993a13fc"
62
63
  }