@esportsplus/template 0.38.1 → 0.38.2

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.
@@ -16,7 +16,7 @@ function collectNestedReplacements(ctx, node, exprStart, replacements) {
16
16
  else if (isReactiveCall(node)) {
17
17
  replacements.push({
18
18
  end: node.end - exprStart,
19
- newText: rewriteReactiveCall(ctx, node),
19
+ newText: rewriteNestedReactiveCall(ctx, node),
20
20
  start: node.getStart(ctx.sourceFile) - exprStart
21
21
  });
22
22
  }
@@ -183,6 +183,10 @@ function rewriteReactiveCall(ctx, node) {
183
183
  let arrayArg = node.arguments[0], arrayText = ctx.printer.printNode(ts.EmitHint.Expression, arrayArg, ctx.sourceFile), callbackArg = node.arguments[1], callbackText = rewriteExpression(ctx, callbackArg);
184
184
  return `${arrayText}, ${callbackText}`;
185
185
  }
186
+ function rewriteNestedReactiveCall(ctx, node) {
187
+ let arrayArg = node.arguments[0], arrayText = ctx.printer.printNode(ts.EmitHint.Expression, arrayArg, ctx.sourceFile), callbackArg = node.arguments[1], callbackText = rewriteExpression(ctx, callbackArg);
188
+ return `new ${COMPILER_NAMESPACE}.ArraySlot(${arrayText}, ${callbackText})`;
189
+ }
186
190
  function discoverTemplatesInExpression(ctx, node) {
187
191
  if (isNestedHtmlTemplate(node)) {
188
192
  let template = node, expressions = [], literals = [], tpl = template.template;
@@ -2,10 +2,6 @@ import { ts } from '@esportsplus/typescript';
2
2
  import { COMPILER_ENTRYPOINT, COMPILER_ENTRYPOINT_REACTIVITY, COMPILER_NAMESPACE, PACKAGE } from '../constants.js';
3
3
  import { generateCode } from './codegen.js';
4
4
  import { findHtmlTemplates, findReactiveCalls } from './ts-parser.js';
5
- const PATTERNS = [
6
- `${COMPILER_ENTRYPOINT}\``,
7
- `${COMPILER_ENTRYPOINT}.${COMPILER_ENTRYPOINT_REACTIVITY}`
8
- ];
9
5
  function isInRange(ranges, start, end) {
10
6
  for (let i = 0, n = ranges.length; i < n; i++) {
11
7
  let range = ranges[i];
@@ -17,7 +13,10 @@ function isInRange(ranges, start, end) {
17
13
  }
18
14
  let printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed });
19
15
  const plugin = {
20
- patterns: PATTERNS,
16
+ patterns: [
17
+ `${COMPILER_ENTRYPOINT}\``,
18
+ `${COMPILER_ENTRYPOINT}.${COMPILER_ENTRYPOINT_REACTIVITY}`
19
+ ],
21
20
  transform: (ctx) => {
22
21
  let importsIntent = [], prepend = [], replacements = [], removeImports = [];
23
22
  let templates = findHtmlTemplates(ctx.sourceFile, ctx.checker);
package/package.json CHANGED
@@ -35,7 +35,7 @@
35
35
  },
36
36
  "type": "module",
37
37
  "types": "./build/index.d.ts",
38
- "version": "0.38.1",
38
+ "version": "0.38.2",
39
39
  "scripts": {
40
40
  "build": "tsc",
41
41
  "build:test": "vite build --config test/vite.config.ts",
@@ -66,9 +66,10 @@ function collectNestedReplacements(
66
66
  });
67
67
  }
68
68
  else if (isReactiveCall(node as ts.Expression)) {
69
+ // Nested reactive calls need full ArraySlot construction (not just args)
69
70
  replacements.push({
70
71
  end: node.end - exprStart,
71
- newText: rewriteReactiveCall(ctx, node as ts.CallExpression),
72
+ newText: rewriteNestedReactiveCall(ctx, node as ts.CallExpression),
72
73
  start: node.getStart(ctx.sourceFile) - exprStart
73
74
  });
74
75
  }
@@ -327,6 +328,7 @@ function rewriteExpression(ctx: CodegenContext, expr: ts.Expression): string {
327
328
  return replaceReverse(expr.getText(ctx.sourceFile), replacements);
328
329
  }
329
330
 
331
+ // Returns just args "array, callback" - for direct slot usage where generateNodeBinding wraps it
330
332
  function rewriteReactiveCall(ctx: CodegenContext, node: ts.CallExpression): string {
331
333
  let arrayArg = node.arguments[0],
332
334
  arrayText = ctx.printer.printNode(ts.EmitHint.Expression, arrayArg, ctx.sourceFile),
@@ -336,6 +338,16 @@ function rewriteReactiveCall(ctx: CodegenContext, node: ts.CallExpression): stri
336
338
  return `${arrayText}, ${callbackText}`;
337
339
  }
338
340
 
341
+ // Returns full "new ArraySlot(array, callback)" - for nested reactive calls inside expressions
342
+ function rewriteNestedReactiveCall(ctx: CodegenContext, node: ts.CallExpression): string {
343
+ let arrayArg = node.arguments[0],
344
+ arrayText = ctx.printer.printNode(ts.EmitHint.Expression, arrayArg, ctx.sourceFile),
345
+ callbackArg = node.arguments[1],
346
+ callbackText = rewriteExpression(ctx, callbackArg as ts.Expression);
347
+
348
+ return `new ${COMPILER_NAMESPACE}.ArraySlot(${arrayText}, ${callbackText})`;
349
+ }
350
+
339
351
  // Eager discovery - walk all expressions to find templates before prepend generation
340
352
  function discoverTemplatesInExpression(ctx: CodegenContext, node: ts.Node): void {
341
353
  if (isNestedHtmlTemplate(node as ts.Expression)) {
@@ -5,12 +5,6 @@ import { generateCode } from './codegen';
5
5
  import { findHtmlTemplates, findReactiveCalls } from './ts-parser';
6
6
 
7
7
 
8
- const PATTERNS = [
9
- `${COMPILER_ENTRYPOINT}\``,
10
- `${COMPILER_ENTRYPOINT}.${COMPILER_ENTRYPOINT_REACTIVITY}`
11
- ];
12
-
13
-
14
8
  function isInRange(ranges: { end: number; start: number }[], start: number, end: number): boolean {
15
9
  for (let i = 0, n = ranges.length; i < n; i++) {
16
10
  let range = ranges[i];
@@ -28,7 +22,10 @@ let printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed });
28
22
 
29
23
 
30
24
  const plugin: Plugin = {
31
- patterns: PATTERNS,
25
+ patterns: [
26
+ `${COMPILER_ENTRYPOINT}\``,
27
+ `${COMPILER_ENTRYPOINT}.${COMPILER_ENTRYPOINT_REACTIVITY}`
28
+ ],
32
29
 
33
30
  transform: (ctx: TransformContext) => {
34
31
  let importsIntent: ImportIntent[] = [],