htl-to-js 0.8.0 → 1.0.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/README.md CHANGED
@@ -227,34 +227,80 @@ module.exports = { createDefault };
227
227
 
228
228
  ```js
229
229
  // Generated
230
- ${_inc(_includes?.['header'])}
231
- ${_inc(_includes?.[model?.path])}
230
+ ${_incSlot(_includes, 'header')}
231
+ ${_incSlot(_includes, model?.path)}
232
232
  ```
233
233
 
234
- Pass content via `_includes` in your story args. Both plain strings and functions are accepted:
234
+ Pass content via `_includes` in your story args. Strings, functions, and arrays are all accepted:
235
235
 
236
236
  ```js
237
237
  export const Default = {
238
238
  args: {
239
239
  _includes: {
240
- header: '<nav>Navigation</nav>', // plain string
241
- sidebar: () => '<aside>Sidebar</aside>', // or a function
240
+ header: '<nav>Navigation</nav>', // plain string
241
+ sidebar: () => '<aside>Sidebar</aside>', // function
242
+ tags: ['<li>One</li>', '<li>Two</li>'], // array — joined automatically
243
+ items: () => ['<li>A</li>', '<li>B</li>'], // function returning array
242
244
  }
243
245
  }
244
246
  }
245
247
  ```
246
248
 
249
+ #### Indexed slots (`par_N`)
250
+
251
+ When a template repeats a slot name with an index suffix (e.g. `par_0`, `par_1`), you can supply a single array under the base key and each index is resolved automatically:
252
+
253
+ ```js
254
+ args: {
255
+ _includes: {
256
+ // Instead of:
257
+ // par_0: '<div>First</div>',
258
+ // par_1: '<div>Second</div>',
259
+ // You can write:
260
+ par: ['<div>First</div>', '<div>Second</div>'],
261
+ // or with a factory:
262
+ par: () => ['<div>First</div>', '<div>Second</div>'],
263
+ // 2D arrays are flattened:
264
+ par: () => [['<span>a</span>', '<span>b</span>'], ['<span>c</span>']],
265
+ }
266
+ }
267
+ ```
268
+
269
+ An exact match for `par_0` always takes priority over the array fallback.
270
+
247
271
  ### `__slots__`
248
272
 
249
- When a template uses static `data-sly-resource` keys (string literals), the generated module also exports a `__slots__` array listing those keys. This allows parent components to discover which slots a child expects without importing and running the template:
273
+ When a template uses static `data-sly-resource` keys (string literals), the generated module exports a `__slots__` array listing those keys. It is also attached directly to every exported `create*` function, so you can inspect it at the call site without a separate import:
250
274
 
251
275
  ```js
252
- import { __slots__ } from '../header/header.template.js';
253
- // e.g. ['hero', 'footer']
276
+ import { createHeader, __slots__ } from '../header/header.template.js';
277
+ // __slots__ === ['hero', 'footer']
278
+
279
+ // Also available on the function itself:
280
+ createHeader.__slots__; // ['hero', 'footer']
254
281
  ```
255
282
 
256
283
  Dynamic keys (expressions like `${model.path}`) are not included — only compile-time string literals appear in `__slots__`.
257
284
 
285
+ ### TypeScript declarations (`.d.ts`)
286
+
287
+ Use `generateDts` (or the `--dts` CLI flag) to emit a declaration file alongside the generated JS. When `__slots__` is present, `_includes` is typed with the known slot keys:
288
+
289
+ ```ts
290
+ // header.template.d.ts
291
+ export declare function createHeader(args?: {
292
+ model?: any;
293
+ _includes?: {
294
+ 'hero'?: string | (() => string);
295
+ 'footer'?: string | (() => string);
296
+ [key: string]: string | (() => string) | undefined;
297
+ };
298
+ }): string;
299
+ export declare const __slots__: ['hero', 'footer'];
300
+ ```
301
+
302
+ When no static slots are present, `_includes` falls back to `Record<string, string | (() => string) | undefined>`.
303
+
258
304
  ---
259
305
 
260
306
  ## `data-sly-call`
@@ -314,10 +360,10 @@ Generated:
314
360
 
315
361
  ```js
316
362
  // Literal path
317
- ${_inc(_includes?.['./header.html'])}
363
+ ${_incSlot(_includes, './header.html')}
318
364
 
319
365
  // Dynamic path
320
- ${_inc(_includes?.[model?.templatePath])}
366
+ ${_incSlot(_includes, model?.templatePath)}
321
367
  ```
322
368
 
323
369
  In the story, pass either a function (component factory) or a plain string:
package/dist/cli.js CHANGED
@@ -15,32 +15,44 @@ if (!args.length || args.includes('--help') || args.includes('-h')) {
15
15
  htl-gen — transpile HTL templates to JS template string functions
16
16
 
17
17
  Usage:
18
- htl-gen <glob> Transpile matching files once
19
- htl-gen --watch <glob> Watch and re-transpile on changes
20
- htl-gen --i18n <dict.xml> <glob> Pre-load i18n dictionary from AEM XML
18
+ htl-gen <glob> Transpile matching files once
19
+ htl-gen --watch <glob> Watch and re-transpile on changes
20
+ htl-gen --i18n <dict.xml> <glob> Pre-load i18n dictionary from AEM XML
21
+ htl-gen --i18n <primary.xml> --i18n <fallback.xml> <glob>
22
+ Multiple locales: first = primary, rest = fallbacks
21
23
 
22
24
  Examples:
23
25
  htl-gen "components/**/*.html"
24
26
  htl-gen accordion.html
25
27
  htl-gen --watch "src/**/*.html"
26
28
  htl-gen --i18n i18n/en.xml "src/**/*.html"
29
+ htl-gen --i18n i18n/es_MX.xml --i18n i18n/es.xml --i18n i18n/en.xml "src/**/*.html"
27
30
  `);
28
31
  process.exit(0);
29
32
  }
30
33
  const watchMode = args.includes('--watch') || args.includes('-w');
31
- const i18nFlagIdx = args.indexOf('--i18n');
32
- const i18nXmlPath = i18nFlagIdx === -1 ? undefined : args[i18nFlagIdx + 1];
33
- const patternArg = args.find((a) => !a.startsWith('-') && a !== i18nXmlPath);
34
+ // Collect all --i18n paths in order. First = primary locale, rest = fallbacks.
35
+ const i18nPaths = [];
36
+ for (let i = 0; i < args.length; i++) {
37
+ if (args[i] === '--i18n' && args[i + 1] && !args[i + 1].startsWith('-')) {
38
+ i18nPaths.push(args[i + 1]);
39
+ i++;
40
+ }
41
+ }
42
+ const patternArg = args.find((a) => !a.startsWith('-') && !i18nPaths.includes(a));
34
43
  if (!patternArg) {
35
44
  console.error('Error: no glob pattern provided.');
36
45
  process.exit(1);
37
46
  }
38
47
  let i18nDict;
39
- if (i18nXmlPath) {
48
+ if (i18nPaths.length) {
40
49
  try {
41
- const xmlContent = node_fs_1.default.readFileSync(i18nXmlPath, 'utf8');
42
- i18nDict = (0, parseI18nXml_1.parseI18nXml)(xmlContent);
43
- console.log(`i18n: loaded ${Object.keys(i18nDict).length} keys from ${node_path_1.default.relative(process.cwd(), i18nXmlPath)}`);
50
+ const allDicts = i18nPaths.map((p) => (0, parseI18nXml_1.parseI18nXml)(node_fs_1.default.readFileSync(p, 'utf8')));
51
+ // Primary (first) wins; merge fallbacks in ascending priority order so primary overrides all.
52
+ i18nDict = allDicts.length > 1 ? (0, parseI18nXml_1.mergeI18nDicts)(...allDicts.slice(1).reverse(), allDicts[0]) : allDicts[0];
53
+ const totalKeys = Object.keys(i18nDict).length;
54
+ const paths = i18nPaths.map((p) => node_path_1.default.relative(process.cwd(), p)).join(', ');
55
+ console.log(`i18n: loaded ${totalKeys} keys from [${paths}]`);
44
56
  }
45
57
  catch (err) {
46
58
  console.error(`Error loading i18n file: ${err.message}`);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
package/dist/loader.js CHANGED
@@ -24,7 +24,7 @@ const node_fs_1 = __importDefault(require("node:fs"));
24
24
  */
25
25
  function htlLoader(source) {
26
26
  this.cacheable(true);
27
- const { i18nPath, ...transpileOptions } = this.getOptions ? this.getOptions() : {};
27
+ const { i18nPath, i18nFallbackPaths, ...transpileOptions } = this.getOptions ? this.getOptions() : {};
28
28
  let i18nDict;
29
29
  if (i18nPath) {
30
30
  this.addDependency(i18nPath);
@@ -36,8 +36,24 @@ function htlLoader(source) {
36
36
  this.emitWarning(new Error(`[htl-to-js] Could not load i18n file ${i18nPath}: ${err.message}`));
37
37
  }
38
38
  }
39
+ let i18nFallbackDicts;
40
+ if (Array.isArray(i18nFallbackPaths) && i18nFallbackPaths.length) {
41
+ i18nFallbackDicts = [];
42
+ for (const fbPath of i18nFallbackPaths) {
43
+ this.addDependency(fbPath);
44
+ try {
45
+ const xmlContent = node_fs_1.default.readFileSync(fbPath, 'utf8');
46
+ i18nFallbackDicts.push((0, parseI18nXml_1.parseI18nXml)(xmlContent));
47
+ }
48
+ catch (err) {
49
+ this.emitWarning(new Error(`[htl-to-js] Could not load i18n fallback file ${fbPath}: ${err.message}`));
50
+ }
51
+ }
52
+ if (!i18nFallbackDicts.length)
53
+ i18nFallbackDicts = undefined;
54
+ }
39
55
  try {
40
- return (0, index_1.transpile)(source, { filename: this.resourcePath, ...transpileOptions, i18nDict });
56
+ return (0, index_1.transpile)(source, { filename: this.resourcePath, ...transpileOptions, i18nDict, i18nFallbackDicts });
41
57
  }
42
58
  catch (err) {
43
59
  this.emitError(new Error(`[htl-to-js] ${this.resourcePath}: ${err.message}`));
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":";;;;AAAA,8CAA+C;AAC/C,iDAA8C;AAC9C,sDAAyB;AAEzB;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,SAAS,CAAY,MAAc;IAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAErB,MAAM,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAS,CAAC;IAE1F,IAAI,QAA4C,CAAC;IACjD,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,iBAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACrD,QAAQ,GAAG,IAAA,2BAAY,EAAC,UAAU,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,wCAAwC,QAAQ,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAA,iBAAS,EAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC3F,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,CACZ,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,YAAY,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAC9D,CAAC;QACF,OAAO,sBAAsB,CAAC;IAChC,CAAC;AACH,CAAC;AAED,iBAAS,SAAS,CAAC"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":";;;;AAAA,8CAA+C;AAC/C,iDAA8C;AAC9C,sDAAyB;AAEzB;;;;;;;;;;;;;;;;GAgBG;AACH,SAAS,SAAS,CAAY,MAAc;IAC1C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAErB,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,GAAG,gBAAgB,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAS,CAAC;IAE7G,IAAI,QAA4C,CAAC;IACjD,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,iBAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YACrD,QAAQ,GAAG,IAAA,2BAAY,EAAC,UAAU,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,wCAAwC,QAAQ,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;QAClG,CAAC;IACH,CAAC;IAED,IAAI,iBAAuD,CAAC;IAC5D,IAAI,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,CAAC,MAAM,EAAE,CAAC;QACjE,iBAAiB,GAAG,EAAE,CAAC;QACvB,KAAK,MAAM,MAAM,IAAI,iBAAiB,EAAE,CAAC;YACvC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,iBAAE,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACnD,iBAAiB,CAAC,IAAI,CAAC,IAAA,2BAAY,EAAC,UAAU,CAAC,CAAC,CAAC;YACnD,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,IAAI,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,iDAAiD,MAAM,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACzG,CAAC;QACH,CAAC;QACD,IAAI,CAAC,iBAAiB,CAAC,MAAM;YAAE,iBAAiB,GAAG,SAAS,CAAC;IAC/D,CAAC;IAED,IAAI,CAAC;QACH,OAAO,IAAA,iBAAS,EAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,GAAG,gBAAgB,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC9G,CAAC;IAAC,OAAO,GAAQ,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,CACZ,IAAI,KAAK,CAAC,eAAe,IAAI,CAAC,YAAY,KAAK,GAAG,CAAC,OAAO,EAAE,CAAC,CAC9D,CAAC;QACF,OAAO,sBAAsB,CAAC;IAChC,CAAC;AACH,CAAC;AAED,iBAAS,SAAS,CAAC"}
@@ -11,3 +11,20 @@
11
11
  * The optional {Type} prefix on sling:message values (e.g. "{String}Hello") is stripped.
12
12
  */
13
13
  export declare function parseI18nXml(xmlContent: string): Record<string, string>;
14
+ /**
15
+ * Merges multiple i18n dictionaries. Arguments are in ascending priority order —
16
+ * later arguments override earlier ones. Pass fallback dicts first, primary last.
17
+ *
18
+ * mergeI18nDicts(enDict, esDict, esMxDict)
19
+ * // → es_MX keys win, es fills missing, en fills the rest
20
+ */
21
+ export declare function mergeI18nDicts(...dicts: Record<string, string>[]): Record<string, string>;
22
+ /**
23
+ * Resolves a locale code into an ascending-priority chain for use with mergeI18nDicts.
24
+ * 'en' is always the base. The primary locale is last (highest priority).
25
+ *
26
+ * resolveLocaleChain('es_MX') → ['en', 'es', 'es_MX']
27
+ * resolveLocaleChain('de') → ['en', 'de']
28
+ * resolveLocaleChain('en') → ['en']
29
+ */
30
+ export declare function resolveLocaleChain(locale: string): string[];
@@ -1,6 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parseI18nXml = parseI18nXml;
4
+ exports.mergeI18nDicts = mergeI18nDicts;
5
+ exports.resolveLocaleChain = resolveLocaleChain;
4
6
  /**
5
7
  * Parses an AEM JCR i18n XML file into a plain string dictionary.
6
8
  *
@@ -41,4 +43,32 @@ function decodeXmlEntities(s) {
41
43
  .replaceAll('&quot;', '"')
42
44
  .replaceAll('&apos;', "'");
43
45
  }
46
+ /**
47
+ * Merges multiple i18n dictionaries. Arguments are in ascending priority order —
48
+ * later arguments override earlier ones. Pass fallback dicts first, primary last.
49
+ *
50
+ * mergeI18nDicts(enDict, esDict, esMxDict)
51
+ * // → es_MX keys win, es fills missing, en fills the rest
52
+ */
53
+ function mergeI18nDicts(...dicts) {
54
+ return Object.assign({}, ...dicts);
55
+ }
56
+ /**
57
+ * Resolves a locale code into an ascending-priority chain for use with mergeI18nDicts.
58
+ * 'en' is always the base. The primary locale is last (highest priority).
59
+ *
60
+ * resolveLocaleChain('es_MX') → ['en', 'es', 'es_MX']
61
+ * resolveLocaleChain('de') → ['en', 'de']
62
+ * resolveLocaleChain('en') → ['en']
63
+ */
64
+ function resolveLocaleChain(locale) {
65
+ const normalised = locale.replace('-', '_');
66
+ const parts = normalised.split('_');
67
+ const chain = ['en'];
68
+ if (parts[0] !== 'en')
69
+ chain.push(parts[0]);
70
+ if (parts.length > 1)
71
+ chain.push(normalised);
72
+ return [...new Set(chain)];
73
+ }
44
74
  //# sourceMappingURL=parseI18nXml.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parseI18nXml.js","sourceRoot":"","sources":["../src/parseI18nXml.ts"],"names":[],"mappings":";;AAYA,oCAsBC;AAlCD;;;;;;;;;;;GAWG;AACH,SAAgB,YAAY,CAAC,UAAkB;IAC7C,MAAM,IAAI,GAA2B,EAAE,CAAC;IAExC,gDAAgD;IAChD,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB;YAC9E,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,mFAAmF;IACnF,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,6CAA6C,CAAC,EAAE,CAAC;YACnF,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAS;IAClC,OAAO,CAAC;SACL,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC;SACxB,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;SACvB,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;SACvB,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC;SACzB,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC"}
1
+ {"version":3,"file":"parseI18nXml.js","sourceRoot":"","sources":["../src/parseI18nXml.ts"],"names":[],"mappings":";;AAYA,oCAsBC;AAkBD,wCAEC;AAUD,gDAOC;AAvED;;;;;;;;;;;GAWG;AACH,SAAgB,YAAY,CAAC,UAAkB;IAC7C,MAAM,IAAI,GAA2B,EAAE,CAAC;IAExC,gDAAgD;IAChD,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC/D,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzD,IAAI,QAAQ,IAAI,QAAQ,EAAE,CAAC;YACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,CAAC,wBAAwB;YAC9E,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,mFAAmF;IACnF,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,KAAK,MAAM,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,6CAA6C,CAAC,EAAE,CAAC;YACnF,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,CAAS;IAClC,OAAO,CAAC;SACL,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC;SACxB,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;SACvB,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC;SACvB,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC;SACzB,UAAU,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,cAAc,CAAC,GAAG,KAA+B;IAC/D,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,KAAK,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,kBAAkB,CAAC,MAAc;IAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACpC,MAAM,KAAK,GAAa,CAAC,IAAI,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC7C,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC"}
@@ -11,6 +11,7 @@ export interface Directives {
11
11
  use: Record<string, string>;
12
12
  useDefaults: Record<string, string>;
13
13
  fileUse: Record<string, string>;
14
+ jsFileUse: Record<string, string>;
14
15
  test: string | null;
15
16
  repeat: {
16
17
  varName: string;
@@ -21,6 +22,7 @@ export interface Directives {
21
22
  unwrap: string | null;
22
23
  sets: SetDecl[];
23
24
  text: string | null;
25
+ textContext: string | null;
24
26
  resource: string | null;
25
27
  resourceType: string | null;
26
28
  template: {
@@ -7,6 +7,47 @@ exports.parseDirectives = parseDirectives;
7
7
  const node_fs_1 = __importDefault(require("node:fs"));
8
8
  const node_path_1 = __importDefault(require("node:path"));
9
9
  const expr_1 = require("./expr");
10
+ /**
11
+ * Resolves a JS or JSON data-sly-use path to a require()-ready relative path.
12
+ * Walks up the directory tree (up to 4 levels) to find the file.
13
+ * Returns a './relative/path.js' or './relative/path.json' string, or null.
14
+ */
15
+ function resolveJsUsePath(val, sourceDir) {
16
+ if (!sourceDir)
17
+ return null;
18
+ if (val.includes('${'))
19
+ return null;
20
+ const isJs = val.endsWith('.js');
21
+ const isJson = val.endsWith('.json');
22
+ if (!isJs && !isJson)
23
+ return null;
24
+ if (val.startsWith('/')) {
25
+ let dir = sourceDir;
26
+ for (let i = 0; i < 10; i++) {
27
+ const jcrRoot = node_path_1.default.join(dir, 'jcr_root');
28
+ if (node_fs_1.default.existsSync(jcrRoot)) {
29
+ const candidate = node_path_1.default.join(jcrRoot, val);
30
+ if (node_fs_1.default.existsSync(candidate)) {
31
+ const rel = node_path_1.default.relative(sourceDir, candidate).replaceAll('\\', '/');
32
+ return rel.startsWith('.') ? rel : `./${rel}`;
33
+ }
34
+ return null;
35
+ }
36
+ dir = node_path_1.default.dirname(dir);
37
+ }
38
+ return null;
39
+ }
40
+ let dir = sourceDir;
41
+ for (let i = 0; i < 4; i++) {
42
+ const candidate = node_path_1.default.join(dir, val);
43
+ if (node_fs_1.default.existsSync(candidate)) {
44
+ const rel = node_path_1.default.relative(sourceDir, candidate).replaceAll('\\', '/');
45
+ return rel.startsWith('.') ? rel : `./${rel}`;
46
+ }
47
+ dir = node_path_1.default.dirname(dir);
48
+ }
49
+ return null;
50
+ }
10
51
  /**
11
52
  * Resolves an HTL data-sly-use file path to a require()-ready relative path.
12
53
  * AEM resolves paths relative to the component root, not the current file,
@@ -61,12 +102,14 @@ function parseDirectives(attrs, sourceDir = '') {
61
102
  use: {},
62
103
  useDefaults: {},
63
104
  fileUse: {},
105
+ jsFileUse: {},
64
106
  test: null,
65
107
  repeat: null,
66
108
  element: null,
67
109
  unwrap: null,
68
110
  sets: [],
69
111
  text: null,
112
+ textContext: null,
70
113
  resource: null,
71
114
  resourceType: null,
72
115
  template: null,
@@ -80,9 +123,13 @@ function parseDirectives(attrs, sourceDir = '') {
80
123
  const name = useMatch[1];
81
124
  const trimmed = val.trim();
82
125
  const requirePath = sourceDir ? resolveHtlPath(trimmed, sourceDir) : null;
126
+ const jsRequirePath = requirePath ? null : (sourceDir ? resolveJsUsePath(trimmed, sourceDir) : null);
83
127
  if (requirePath) {
84
128
  directives.fileUse[name] = requirePath;
85
129
  }
130
+ else if (jsRequirePath) {
131
+ directives.jsFileUse[name] = jsRequirePath;
132
+ }
86
133
  else {
87
134
  directives.use[name] = val;
88
135
  const def = parseUseDefault(trimmed);
@@ -150,6 +197,7 @@ function parseDirectives(attrs, sourceDir = '') {
150
197
  }
151
198
  if (key === 'data-sly-text') {
152
199
  directives.text = (0, expr_1.convertExpr)(val);
200
+ directives.textContext = (0, expr_1.extractContext)(val);
153
201
  directives.skip.add(key);
154
202
  continue;
155
203
  }
@@ -1 +1 @@
1
- {"version":3,"file":"directives.js","sourceRoot":"","sources":["../../src/transpiler/directives.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"directives.js","sourceRoot":"","sources":["../../src/transpiler/directives.ts"],"names":[],"mappings":";;;;;AAmIA,0CAoMC;AAvUD,sDAAyB;AACzB,0DAA6B;AAC7B,iCAAqF;AAmCrF;;;;GAIG;AACH,SAAS,gBAAgB,CAAC,GAAW,EAAE,SAAiB;IACtD,IAAI,CAAC,SAAS;QAAE,OAAO,IAAI,CAAC;IAC5B,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACjC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAElC,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,IAAI,GAAG,GAAG,SAAS,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC3C,IAAI,iBAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC1C,IAAI,iBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7B,MAAM,GAAG,GAAG,mBAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBACtE,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAChD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,GAAG,GAAG,mBAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,iBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,mBAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACtE,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QAChD,CAAC;QACD,GAAG,GAAG,mBAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;GAKG;AACH,SAAS,cAAc,CAAC,GAAW,EAAE,SAAiB;IACpD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAE9D,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,IAAI,GAAG,GAAG,SAAS,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC3C,IAAI,iBAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC3B,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC1C,IAAI,iBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7B,MAAM,GAAG,GAAG,mBAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;oBACtE,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;gBAChD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,GAAG,GAAG,mBAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAE3C,IAAI,GAAG,GAAG,SAAS,CAAC;IACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,iBAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,mBAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YACtE,OAAO,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;QAChD,CAAC;QACD,GAAG,GAAG,mBAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,IAAI,GAAG,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,CACrE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CACZ,CAAC;IACF,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,SAAgB,eAAe,CAC7B,KAA6B,EAC7B,SAAS,GAAG,EAAE;IAEd,MAAM,UAAU,GAAe;QAC7B,GAAG,EAAE,EAAE;QACP,WAAW,EAAE,EAAE;QACf,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,EAAE;QACb,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,IAAI;QACZ,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,IAAI;QACV,WAAW,EAAE,IAAI;QACjB,QAAQ,EAAE,IAAI;QACd,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,IAAI;QACV,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,IAAI,GAAG,EAAE;KAChB,CAAC;IAEF,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/C,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YAC1E,MAAM,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrG,IAAI,WAAW,EAAE,CAAC;gBAChB,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC;YACzC,CAAC;iBAAM,IAAI,aAAa,EAAE,CAAC;gBACzB,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;YAC7C,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;gBAC3B,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;gBACrC,IAAI,GAAG;oBAAE,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YAC9C,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,GAAG,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC;YACnC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,MAAM,YAAY,GAAG,wBAAwB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxD,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAChC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;gBACnB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,IAAA,kBAAW,EAAC,GAAG,CAAC;gBACtB,GAAG,EAAE,IAAI;aACV,CAAC,CAAC;YACH,UAAU,CAAC,IAAI,GAAG,OAAO,CAAC;YAC1B,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,mCAAmC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClE,IAAI,WAAW,EAAE,CAAC;YAChB,UAAU,CAAC,MAAM,GAAG;gBAClB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC;gBACvB,QAAQ,EAAE,IAAA,kBAAW,EAAC,GAAG,CAAC;gBAC1B,QAAQ,EAAE,GAAG,CAAC,UAAU,CAAC,gBAAgB,CAAC;aAC3C,CAAC;YACF,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,eAAe,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YACzD,UAAU,CAAC,MAAM,GAAG;gBAClB,OAAO,EAAE,MAAM;gBACf,QAAQ,EAAE,IAAA,kBAAW,EAAC,GAAG,CAAC;gBAC1B,QAAQ,EAAE,GAAG,KAAK,eAAe;aAClC,CAAC;YACF,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;YAC/B,UAAU,CAAC,OAAO,GAAG,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC;YACtC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YAC9B,UAAU,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YAC3D,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,uBAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,QAAQ,EAAE,CAAC;YACb,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,UAAU,GACd,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1E,UAAU,CAAC,IAAI,CAAC,IAAI,CAClB,UAAU;gBACR,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAA,kBAAW,EAAC,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE;gBACxD,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAA,uBAAgB,EAAC,GAAG,CAAC,EAAE,CACvD,CAAC;YACF,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,GAAG,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC;YACnC,UAAU,CAAC,WAAW,GAAG,IAAA,qBAAc,EAAC,GAAG,CAAC,CAAC;YAC7C,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,mBAAmB,EAAE,CAAC;YAChC,IAAI,QAAQ,GAAkB,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC;YAC/C,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM,SAAS,GAAG,8BAA8B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBAC3D,IAAI,SAAS;oBAAE,QAAQ,GAAG,IAAA,kBAAW,EAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;YACnE,CAAC;YACD,MAAM,OAAO,GAAG,yCAAyC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACpE,IAAI,OAAO;gBAAE,UAAU,CAAC,YAAY,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAClD,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC/B,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,MAAM,aAAa,GAAG,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC7D,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,CAAC,GAAG,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChE,UAAU,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,aAAa,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;YACzD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,MAAM,SAAS,GAAG,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzD,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;YAC9B,UAAU,CAAC,YAAY,KAAK,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,IAAA,mBAAY,EAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,UAAU,GACd,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC;YAC1E,IAAI,UAAU,EAAE,CAAC;gBACf,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC;oBAC3B,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,IAAA,kBAAW,EAAC,GAAG,CAAC;iBACvB,CAAC,CAAC;YACL,CAAC;iBAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,MAAM,KAAK,GAAa,EAAE,CAAC;gBAC3B,IAAI,IAAI,GAAG,CAAC,CAAC;gBACb,KAAK,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,KAAK,EAAE,CAAC;oBAC5C,IAAI,KAAK,GAAG,IAAI;wBACd,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;oBAC1D,KAAK,CAAC,IAAI,CAAC,MAAM,IAAA,kBAAW,EAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACpC,IAAI,GAAG,GAAG,CAAC;gBACb,CAAC;gBACD,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM;oBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;gBACtE,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC;oBAC3B,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,GAAG;iBACjC,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,CAAA,IAAI,CAAC,CAAC;gBAClD,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC;oBAC3B,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,GAAG,GAAG,OAAO,GAAG,GAAG;iBAC1B,CAAC,CAAC;YACL,CAAC;YACD,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,oBAAoB,EAAE,CAAC;YACjC,UAAU,CAAC,UAAU,GAAG,IAAA,kBAAW,EAAC,GAAG,CAAC,CAAC;YACzC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,kBAAkB,EAAE,CAAC;YAC/B,UAAU,CAAC,OAAO,GAAG,GAAG,CAAC;YACzB,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACzB,SAAS;QACX,CAAC;QAED,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YAC5B,UAAU,CAAC,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;GAKG;AACH,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,KAAK,GAAG,GAAG;SACd,IAAI,EAAE;SACN,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC;SAClC,IAAI,EAAE,CAAC;IACV,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,EAAE,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAEjE,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACtC,MAAM,OAAO,GACX,sGAAsG,CAAC,CAAC,sDAAsD;QAChK,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YACzC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,IAAA,kBAAW,EAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxB,CAAC"}
@@ -17,9 +17,15 @@ interface ExprMatch {
17
17
  * any depth of nested braces (e.g. '{{url}}' or '{0}/{1}' placeholders).
18
18
  */
19
19
  export declare function extractExprs(str: string): ExprMatch[];
20
+ /**
21
+ * Extracts the @ context='...' value from a raw HTL expression string.
22
+ * Returns the lowercase context name, or null if not specified.
23
+ */
24
+ export declare function extractContext(raw: string): string | null;
20
25
  /**
21
26
  * Converts all ${htlExpr} occurrences within an attribute value string,
22
27
  * while escaping literal backticks and bare $ signs.
28
+ * Respects @ context option: 'unsafe' skips HTML-escaping, 'uri' applies URI encoding.
23
29
  */
24
30
  export declare function convertAttrValue(value: string): string;
25
31
  /**