@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:
|
|
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;
|
package/build/compiler/index.js
CHANGED
|
@@ -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:
|
|
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
package/src/compiler/codegen.ts
CHANGED
|
@@ -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:
|
|
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)) {
|
package/src/compiler/index.ts
CHANGED
|
@@ -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:
|
|
25
|
+
patterns: [
|
|
26
|
+
`${COMPILER_ENTRYPOINT}\``,
|
|
27
|
+
`${COMPILER_ENTRYPOINT}.${COMPILER_ENTRYPOINT_REACTIVITY}`
|
|
28
|
+
],
|
|
32
29
|
|
|
33
30
|
transform: (ctx: TransformContext) => {
|
|
34
31
|
let importsIntent: ImportIntent[] = [],
|