@adobe/aem-cli 16.15.1 → 16.15.3

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,18 @@
1
+ ## [16.15.3](https://github.com/adobe/helix-cli/compare/v16.15.2...v16.15.3) (2025-09-24)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * **deps:** update external fixes ([f850d11](https://github.com/adobe/helix-cli/commit/f850d11fe8b2c4f3b35f515a2f7ce1abbc79f951))
7
+ * update package-lock.json to sync with package.json dependencies ([e8b5276](https://github.com/adobe/helix-cli/commit/e8b52767954d016fe9527222b3ca9a36724a6af1))
8
+
9
+ ## [16.15.2](https://github.com/adobe/helix-cli/compare/v16.15.1...v16.15.2) (2025-09-24)
10
+
11
+
12
+ ### Bug Fixes
13
+
14
+ * hlx proxy now respects .hlxignore and warns for ignored files ([#2086](https://github.com/adobe/helix-cli/issues/2086)) ([a413938](https://github.com/adobe/helix-cli/commit/a413938bdcbdc8987306c82f90242d110979ea51))
15
+
1
16
  ## [16.15.1](https://github.com/adobe/helix-cli/compare/v16.15.0...v16.15.1) (2025-09-22)
2
17
 
3
18
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@adobe/aem-cli",
3
- "version": "16.15.1",
3
+ "version": "16.15.3",
4
4
  "description": "AEM CLI",
5
5
  "main": "index.js",
6
6
  "type": "module",
@@ -49,7 +49,7 @@
49
49
  "@adobe/helix-shared-git": "3.0.20",
50
50
  "@adobe/helix-shared-indexer": "2.2.5",
51
51
  "camelcase": "8.0.0",
52
- "chalk-template": "1.1.0",
52
+ "chalk-template": "1.1.2",
53
53
  "chokidar": "4.0.3",
54
54
  "compression": "1.8.1",
55
55
  "cookie": "1.0.2",
@@ -65,7 +65,7 @@
65
65
  "https-proxy-agent": "7.0.6",
66
66
  "ignore": "7.0.5",
67
67
  "ini": "5.0.0",
68
- "isomorphic-git": "1.32.2",
68
+ "isomorphic-git": "1.33.1",
69
69
  "jose": "6.1.0",
70
70
  "livereload-js": "4.0.2",
71
71
  "node-fetch": "3.3.2",
@@ -13,7 +13,7 @@
13
13
  },
14
14
  "devDependencies": {
15
15
  "@adobe/eslint-config-helix": "^3.0.9",
16
- "@eslint/config-helpers": "0.3.0",
16
+ "@eslint/config-helpers": "0.3.1",
17
17
  "@esm-bundle/chai": "4.3.4-fix.0",
18
18
  "@web/test-runner": "0.20.2",
19
19
  "@web/test-runner-junit-reporter": "0.8.0",
@@ -39,16 +39,6 @@
39
39
  "eslint": "^9.0.0"
40
40
  }
41
41
  },
42
- "node_modules/@adobe/eslint-config-helix/node_modules/@eslint/config-helpers": {
43
- "version": "0.3.1",
44
- "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz",
45
- "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==",
46
- "dev": true,
47
- "license": "Apache-2.0",
48
- "engines": {
49
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
50
- }
51
- },
52
42
  "node_modules/@babel/code-frame": {
53
43
  "version": "7.27.1",
54
44
  "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz",
@@ -136,9 +126,9 @@
136
126
  }
137
127
  },
138
128
  "node_modules/@eslint/config-helpers": {
139
- "version": "0.3.0",
140
- "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz",
141
- "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==",
129
+ "version": "0.3.1",
130
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz",
131
+ "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==",
142
132
  "dev": true,
143
133
  "license": "Apache-2.0",
144
134
  "engines": {
@@ -2977,17 +2967,6 @@
2977
2967
  "url": "https://opencollective.com/eslint"
2978
2968
  }
2979
2969
  },
2980
- "node_modules/eslint/node_modules/@eslint/config-helpers": {
2981
- "version": "0.3.1",
2982
- "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.1.tgz",
2983
- "integrity": "sha512-xR93k9WhrDYpXHORXpxVL5oHj3Era7wo6k/Wd8/IsQNnZUTzkGS29lyn3nAT05v6ltUuTFVCCYDEGfy2Or/sPA==",
2984
- "dev": true,
2985
- "license": "Apache-2.0",
2986
- "peer": true,
2987
- "engines": {
2988
- "node": "^18.18.0 || ^20.9.0 || >=21.1.0"
2989
- }
2990
- },
2991
2970
  "node_modules/eslint/node_modules/glob-parent": {
2992
2971
  "version": "6.0.2",
2993
2972
  "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
@@ -13,7 +13,7 @@
13
13
  },
14
14
  "devDependencies": {
15
15
  "@adobe/eslint-config-helix": "^3.0.9",
16
- "@eslint/config-helpers": "0.3.0",
16
+ "@eslint/config-helpers": "0.3.1",
17
17
  "@esm-bundle/chai": "4.3.4-fix.0",
18
18
  "@web/test-runner": "0.20.2",
19
19
  "@web/test-runner-playwright": "0.11.1",
@@ -11,6 +11,7 @@
11
11
  */
12
12
  import path, { resolve } from 'path';
13
13
  import { lstat } from 'fs/promises';
14
+ import { IgnoreConfig } from '@adobe/helix-shared-config';
14
15
  import { HelixServer } from './HelixServer.js';
15
16
  import { BaseProject } from './BaseProject.js';
16
17
  import HeadHtmlSupport from './HeadHtmlSupport.js';
@@ -25,6 +26,7 @@ export class HelixProject extends BaseProject {
25
26
  this._printIndex = false;
26
27
  this._allowInsecure = false;
27
28
  this._file404html = null;
29
+ this._hlxIgnore = null;
28
30
  }
29
31
 
30
32
  withLiveReload(value) {
@@ -135,12 +137,28 @@ export class HelixProject extends BaseProject {
135
137
  return this._htmlFolder;
136
138
  }
137
139
 
140
+ get hlxIgnore() {
141
+ return this._hlxIgnore;
142
+ }
143
+
138
144
  async init() {
139
145
  await super.init();
140
146
  this._indexer = new Indexer()
141
147
  .withLogger(this._logger)
142
148
  .withCwd(this._cwd)
143
149
  .withPrintIndex(this._printIndex);
150
+
151
+ // Initialize IgnoreConfig for .hlxignore support
152
+ this._hlxIgnore = new IgnoreConfig()
153
+ .withDirectory(this._cwd);
154
+
155
+ try {
156
+ await this._hlxIgnore.init();
157
+ } catch (e) {
158
+ // .hlxignore file doesn't exist or couldn't be loaded, which is fine
159
+ this._hlxIgnore = null;
160
+ }
161
+
144
162
  return this;
145
163
  }
146
164
 
@@ -196,12 +214,40 @@ export class HelixProject extends BaseProject {
196
214
  }
197
215
  }
198
216
 
217
+ async initHlxIgnore() {
218
+ if (this._hlxIgnore && this.liveReload) {
219
+ const hlxIgnorePath = resolve(this.directory, '.hlxignore');
220
+ try {
221
+ await lstat(hlxIgnorePath);
222
+ this.log.debug('detected .hlxignore file');
223
+ if (this.liveReload) {
224
+ this.liveReload.registerFiles([hlxIgnorePath], '/');
225
+ this.liveReload.on('modified', async (modified) => {
226
+ if (modified.includes('.hlxignore')) {
227
+ this.log.debug('Reloading .hlxignore file');
228
+ // Re-initialize the IgnoreConfig to reload the file
229
+ try {
230
+ await this._hlxIgnore.init();
231
+ } catch (e) {
232
+ // If reload fails, just continue without ignore support
233
+ this._hlxIgnore = null;
234
+ }
235
+ }
236
+ });
237
+ }
238
+ } catch (e) {
239
+ // .hlxignore doesn't exist, which is fine
240
+ }
241
+ }
242
+ }
243
+
199
244
  async start() {
200
245
  this.log.debug('Launching AEM dev server...');
201
246
  await super.start();
202
247
  await this.initHeadHtml();
203
248
  await this.init404Html();
204
249
  await this.initHtmlFolder();
250
+ await this.initHlxIgnore();
205
251
  if (this._indexer) {
206
252
  await this._indexer.init();
207
253
  }
@@ -253,6 +253,16 @@ export class HelixServer extends BaseServer {
253
253
  return;
254
254
  }
255
255
 
256
+ // Check if the file is ignored by .hlxignore
257
+ if (this._project.hlxIgnore) {
258
+ // IgnoreConfig expects relative paths from project root
259
+ const relativePath = path.relative(this._project.directory, filePath);
260
+ const isIgnored = this._project.hlxIgnore.ignores(relativePath);
261
+ if (isIgnored) {
262
+ log.warn(`Warning: Proxying ignored file: ${ctx.path} (matched by .hlxignore)`);
263
+ }
264
+ }
265
+
256
266
  const liveReload = this._liveReload;
257
267
  if (liveReload) {
258
268
  liveReload.startRequest(ctx.requestId, ctx.path);