@adobe/helix-config 5.11.0 → 5.12.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.
package/CHANGELOG.md CHANGED
@@ -1,3 +1,10 @@
1
+ # [5.12.0](https://github.com/adobe/helix-config/compare/v5.11.0...v5.12.0) (2026-08-13)
2
+
3
+
4
+ ### Features
5
+
6
+ * return sitemap index list for pipeline scope ([#399](https://github.com/adobe/helix-config/issues/399)) ([e775165](https://github.com/adobe/helix-config/commit/e77516540a941deea93cf63242f823cad2963930))
7
+
1
8
  # [5.11.0](https://github.com/adobe/helix-config/compare/v5.10.3...v5.11.0) (2026-06-09)
2
9
 
3
10
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adobe/helix-config",
3
- "version": "5.11.0",
3
+ "version": "5.12.0",
4
4
  "description": "Helix Config",
5
5
  "main": "src/index.js",
6
6
  "types": "src/index.d.ts",
@@ -35,26 +35,27 @@
35
35
  "reporter-options": "configFile=.mocha-multi.json"
36
36
  },
37
37
  "devDependencies": {
38
- "@adobe/eslint-config-helix": "3.0.28",
39
- "@eslint/config-helpers": "0.6.0",
40
- "@semantic-release/changelog": "6.0.3",
41
- "@semantic-release/git": "10.0.1",
38
+ "@adobe/eslint-config-helix": "3.0.30",
39
+ "@eslint/config-helpers": "0.7.0",
40
+ "@semantic-release/changelog": "7.0.0",
41
+ "@semantic-release/git": "11.0.1",
42
42
  "@semantic-release/npm": "13.1.5",
43
- "c8": "11.0.0",
43
+ "c8": "12.0.0",
44
44
  "eslint": "9.4.0",
45
45
  "husky": "9.1.7",
46
46
  "junit-report-builder": "5.1.2",
47
- "lint-staged": "17.0.5",
47
+ "lint-staged": "17.2.0",
48
48
  "mocha": "11.7.6",
49
49
  "mocha-multi-reporters": "1.5.1",
50
50
  "mocha-suppress-logs": "0.6.0",
51
- "semantic-release": "25.0.3"
51
+ "semantic-release": "25.0.8"
52
52
  },
53
53
  "lint-staged": {
54
54
  "*.js": "eslint",
55
55
  "*.cjs": "eslint"
56
56
  },
57
57
  "dependencies": {
58
+ "@adobe/helix-shared-config": "11.2.0",
58
59
  "@adobe/helix-shared-server-timing": "1.0.0",
59
60
  "@adobe/helix-shared-utils": "3.0.2"
60
61
  }
@@ -9,6 +9,7 @@
9
9
  * OF ANY KIND, either express or implied. See the License for the specific language
10
10
  * governing permissions and limitations under the License.
11
11
  */
12
+ import { SitemapConfig } from '@adobe/helix-shared-config';
12
13
  import { computeSurrogateKey } from '@adobe/helix-shared-utils';
13
14
  // eslint-disable-next-line import/no-unresolved
14
15
  import { PipelineResponse } from './PipelineResponse.js';
@@ -210,6 +211,31 @@ async function fetchRobotsTxt(ctx, owner, repo) {
210
211
  return robots;
211
212
  }
212
213
 
214
+ /**
215
+ * Retrieves the sitemap index from the `sitemap.yaml` on the content-bus.
216
+ *
217
+ * @param {ConfigContext} ctx the context
218
+ * @param {object} rso RSO (ref, site, org)
219
+ * @param {object} config the config
220
+ * @returns {Promise<string[]|null>} the sitemap index list, or `null` if not configured
221
+ */
222
+ async function fetchSitemapIndex(ctx, rso, config) {
223
+ const key = `${config.content.contentBusId}/preview/.helix/sitemap.yaml`;
224
+ const res = await ctx.loader.getObject(HELIX_CONTENT_BUS, key);
225
+
226
+ const sitemap = new ConfigObject();
227
+ if (res.body) {
228
+ try {
229
+ const sitemapConfig = await new SitemapConfig().withSource(res.body).init();
230
+ sitemap.index = sitemapConfig.index;
231
+ sitemap.updateLastModified(res.headers);
232
+ } catch (e) {
233
+ ctx.log.warn(`[${rso.org}/${rso.site}] Unable to process ${key}: ${e.message}`);
234
+ }
235
+ }
236
+ return sitemap;
237
+ }
238
+
213
239
  /**
214
240
  * Load metadata from the given path
215
241
  * @param ctx the context
@@ -367,6 +393,11 @@ async function resolveConfig(ctx, rso, scope) {
367
393
  config.robots = robots;
368
394
  }
369
395
  }
396
+ ctx.timer?.update('sitemap-index');
397
+ const sitemap = await fetchSitemapIndex(ctx, rso, config);
398
+ if (sitemap.index) {
399
+ config.sitemap = sitemap;
400
+ }
370
401
  }
371
402
  if (scope === SCOPE_PIPELINE || scope === SCOPE_RAW || scope === SCOPE_DELIVERY) {
372
403
  // although not used in raw, or delivery, load in order to set correct last-modified
@@ -685,6 +716,7 @@ export async function getConfigResponse(ctx, opts) {
685
716
  siteConfig.updateLastModified(config.head);
686
717
  siteConfig.updateLastModified(siteConfig.sidekick);
687
718
  siteConfig.updateLastModified(config.robots);
719
+ siteConfig.updateLastModified(config.sitemap);
688
720
  siteConfig.updateLastModified(config.metadata?.preview);
689
721
  siteConfig.updateLastModified(config.metadata?.live);
690
722
 
@@ -769,6 +801,7 @@ export async function getConfigResponse(ctx, opts) {
769
801
  folders: config.folders,
770
802
  public: config.public,
771
803
  robots: config.robots,
804
+ sitemap: config.sitemap,
772
805
  access: config.access,
773
806
  lastModified: siteConfig.lastModified,
774
807
  created: config.created,