@ktjs/transformer 0.2.4 → 0.3.1

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/dist/index.mjs CHANGED
@@ -84,6 +84,10 @@ function addFlagToSvgMathMLElement(path) {
84
84
  }
85
85
  }
86
86
 
87
+ const KTCONDITIONAL_HELPER_CACHE_KEY = '__kt_conditional_component_identifier__';
88
+ const KTCONDITIONAL_COMPONENT_IMPORT_NAME = 'KTConditional';
89
+ const KTUNSUPPORTED_ELSEIF_WARNING_CACHE_KEY = '__kt_unsupported_else_if_warning_cache__';
90
+ const CONDITIONAL_DIRECTIVES = new Set(['k-if', 'k-else-if', 'k-else']);
87
91
  function hasConditionalDirective(element) {
88
92
  const attributes = element.openingElement.attributes || [];
89
93
  return attributes.some((attr) => {
@@ -93,7 +97,7 @@ function hasConditionalDirective(element) {
93
97
  if (!t.isJSXIdentifier(attr.name)) {
94
98
  return false;
95
99
  }
96
- return attr.name.name === 'k-if' || attr.name.name === 'k-else-if' || attr.name.name === 'k-else';
100
+ return CONDITIONAL_DIRECTIVES.has(attr.name.name);
97
101
  });
98
102
  }
99
103
  function getConditionalDirective(element) {
@@ -128,27 +132,186 @@ function removeConditionalDirectives(attributes) {
128
132
  if (!t.isJSXIdentifier(attr.name)) {
129
133
  return true;
130
134
  }
131
- return attr.name.name !== 'k-if' && attr.name.name !== 'k-else-if' && attr.name.name !== 'k-else';
135
+ return !CONDITIONAL_DIRECTIVES.has(attr.name.name);
132
136
  });
133
137
  }
134
- function createCompoundCondition(prevConditions, currentCondition = null) {
135
- if (prevConditions.length === 0) {
136
- if (currentCondition && t.isExpression(currentCondition)) {
137
- return currentCondition;
138
+ function getConditionExpression(condition) {
139
+ if (condition && t.isExpression(condition)) {
140
+ return t.cloneNode(condition, true);
141
+ }
142
+ return t.booleanLiteral(true);
143
+ }
144
+ function buildConditionalCallArgs(element) {
145
+ const openingElement = element.openingElement;
146
+ const attributes = removeConditionalDirectives(openingElement.attributes || []);
147
+ const tag = jsxTagNameToExpression(openingElement.name);
148
+ const props = buildPropsObject(attributes, element.children);
149
+ return { tag, props };
150
+ }
151
+ function buildPropsObject(attributes, children) {
152
+ const properties = [];
153
+ for (let i = 0; i < attributes.length; i++) {
154
+ const attr = attributes[i];
155
+ if (t.isJSXSpreadAttribute(attr)) {
156
+ properties.push(t.spreadElement(t.cloneNode(attr.argument, true)));
157
+ continue;
158
+ }
159
+ const attrName = getJSXAttributeName(attr.name);
160
+ if (!attrName || CONDITIONAL_DIRECTIVES.has(attrName)) {
161
+ continue;
162
+ }
163
+ let value = t.booleanLiteral(true);
164
+ if (attr.value) {
165
+ if (t.isStringLiteral(attr.value)) {
166
+ value = t.cloneNode(attr.value, true);
167
+ }
168
+ else if (t.isJSXExpressionContainer(attr.value)) {
169
+ value = t.isJSXEmptyExpression(attr.value.expression)
170
+ ? t.booleanLiteral(true)
171
+ : t.cloneNode(attr.value.expression, true);
172
+ }
173
+ }
174
+ properties.push(t.objectProperty(createObjectKey(attrName), value));
175
+ }
176
+ const childrenExpression = buildChildrenExpression(children);
177
+ if (childrenExpression) {
178
+ properties.push(t.objectProperty(t.identifier('children'), childrenExpression));
179
+ }
180
+ return t.objectExpression(properties);
181
+ }
182
+ function buildChildrenExpression(children) {
183
+ const normalizedChildren = [];
184
+ for (let i = 0; i < children.length; i++) {
185
+ const child = children[i];
186
+ if (t.isJSXText(child)) {
187
+ const text = normalizeJSXText(child.value);
188
+ if (text) {
189
+ normalizedChildren.push(t.stringLiteral(text));
190
+ }
191
+ continue;
192
+ }
193
+ if (t.isJSXExpressionContainer(child)) {
194
+ if (!t.isJSXEmptyExpression(child.expression)) {
195
+ normalizedChildren.push(t.cloneNode(child.expression, true));
196
+ }
197
+ continue;
198
+ }
199
+ if (t.isJSXSpreadChild(child)) {
200
+ normalizedChildren.push(t.spreadElement(t.cloneNode(child.expression, true)));
201
+ continue;
202
+ }
203
+ if (t.isJSXElement(child) || t.isJSXFragment(child)) {
204
+ normalizedChildren.push(t.cloneNode(child, true));
205
+ }
206
+ }
207
+ if (normalizedChildren.length === 0) {
208
+ return null;
209
+ }
210
+ if (normalizedChildren.length === 1 && t.isExpression(normalizedChildren[0])) {
211
+ return normalizedChildren[0];
212
+ }
213
+ const arrayItems = [];
214
+ for (let i = 0; i < normalizedChildren.length; i++) {
215
+ arrayItems.push(t.cloneNode(normalizedChildren[i], true));
216
+ }
217
+ return t.arrayExpression(arrayItems);
218
+ }
219
+ function normalizeJSXText(value) {
220
+ const lines = value.replace(/\r\n?/g, '\n').split('\n');
221
+ let lastNonEmptyLine = -1;
222
+ for (let i = 0; i < lines.length; i++) {
223
+ if (/[^\t ]/.test(lines[i])) {
224
+ lastNonEmptyLine = i;
225
+ }
226
+ }
227
+ if (lastNonEmptyLine < 0) {
228
+ return '';
229
+ }
230
+ let content = '';
231
+ for (let i = 0; i < lines.length; i++) {
232
+ const isFirstLine = i === 0;
233
+ const isLastLine = i === lines.length - 1;
234
+ let line = lines[i].replace(/\t/g, ' ');
235
+ if (!isFirstLine) {
236
+ line = line.replace(/^[ ]+/, '');
138
237
  }
139
- return t.booleanLiteral(true);
238
+ if (!isLastLine) {
239
+ line = line.replace(/[ ]+$/, '');
240
+ }
241
+ if (!line) {
242
+ continue;
243
+ }
244
+ content += line;
245
+ if (i !== lastNonEmptyLine) {
246
+ content += ' ';
247
+ }
248
+ }
249
+ return content;
250
+ }
251
+ function createObjectKey(name) {
252
+ if (t.isValidIdentifier(name)) {
253
+ return t.identifier(name);
140
254
  }
141
- const first = prevConditions[0];
142
- let compound = t.unaryExpression('!', t.isExpression(first) ? first : t.booleanLiteral(false));
143
- for (let i = 1; i < prevConditions.length; i++) {
144
- const condition = prevConditions[i];
145
- const negated = t.unaryExpression('!', t.isExpression(condition) ? condition : t.booleanLiteral(false));
146
- compound = t.logicalExpression('&&', compound, negated);
255
+ return t.stringLiteral(name);
256
+ }
257
+ function getJSXAttributeName(name) {
258
+ if (t.isJSXIdentifier(name)) {
259
+ return name.name;
260
+ }
261
+ if (t.isJSXNamespacedName(name) && t.isJSXIdentifier(name.namespace) && t.isJSXIdentifier(name.name)) {
262
+ return `${name.namespace.name}:${name.name.name}`;
147
263
  }
148
- if (currentCondition && t.isExpression(currentCondition)) {
149
- compound = t.logicalExpression('&&', compound, currentCondition);
264
+ return null;
265
+ }
266
+ function jsxTagNameToExpression(name) {
267
+ if (t.isJSXIdentifier(name)) {
268
+ if (name.name === 'this') {
269
+ return t.thisExpression();
270
+ }
271
+ if (isCompatTag(name.name)) {
272
+ return t.stringLiteral(name.name);
273
+ }
274
+ return t.identifier(name.name);
275
+ }
276
+ if (t.isJSXMemberExpression(name)) {
277
+ return t.memberExpression(jsxTagNameToExpression(name.object), t.identifier(name.property.name));
278
+ }
279
+ if (t.isJSXNamespacedName(name) && t.isJSXIdentifier(name.namespace) && t.isJSXIdentifier(name.name)) {
280
+ return t.stringLiteral(`${name.namespace.name}:${name.name.name}`);
281
+ }
282
+ return t.stringLiteral('div');
283
+ }
284
+ function isCompatTag(tagName) {
285
+ return /^[a-z]/.test(tagName) || tagName.includes('-');
286
+ }
287
+ function buildKTConditionalCall(path, condition, ifElement, elseElement) {
288
+ const helperIdentifier = ensureKTConditionalIdentifier(path);
289
+ const ifArgs = buildConditionalCallArgs(ifElement);
290
+ const elseArgs = buildConditionalCallArgs(elseElement);
291
+ return t.callExpression(helperIdentifier, [
292
+ getConditionExpression(condition),
293
+ ifArgs.tag,
294
+ ifArgs.props,
295
+ elseArgs.tag,
296
+ elseArgs.props,
297
+ ]);
298
+ }
299
+ function warnUnsupportedElseIf(path) {
300
+ const programPath = getProgramPath$1(path);
301
+ let warningCache = programPath.getData(KTUNSUPPORTED_ELSEIF_WARNING_CACHE_KEY);
302
+ if (!warningCache) {
303
+ warningCache = new Set();
304
+ programPath.setData(KTUNSUPPORTED_ELSEIF_WARNING_CACHE_KEY, warningCache);
305
+ }
306
+ const loc = path.node.loc?.start;
307
+ const cacheKey = loc ? `${loc.line}:${loc.column}` : `${path.node.start ?? 'unknown'}`;
308
+ if (warningCache.has(cacheKey)) {
309
+ return;
150
310
  }
151
- return compound;
311
+ warningCache.add(cacheKey);
312
+ const file = (programPath.hub?.file?.opts?.filename || 'unknown file');
313
+ const pos = loc ? `${loc.line}:${loc.column + 1}` : 'unknown';
314
+ console.warn(`[ktjs-transformer] \`k-else-if\` is not supported yet and will be left untransformed (${file}:${pos}).`);
152
315
  }
153
316
  function transformConditionalChains(path) {
154
317
  const { node } = path;
@@ -170,44 +333,89 @@ function transformConditionalChains(path) {
170
333
  current = nextSibling;
171
334
  }
172
335
  if (chain.length === 1) {
336
+ const onlyDirective = getConditionalDirective(chain[0].node);
337
+ if (onlyDirective?.type === 'k-else-if') {
338
+ warnUnsupportedElseIf(chain[0]);
339
+ }
173
340
  return;
174
341
  }
175
- const prevConditions = [];
176
342
  for (let i = 0; i < chain.length; i++) {
177
- const elementPath = chain[i];
178
- const element = elementPath.node;
179
- const directive = getConditionalDirective(element);
180
- if (!directive) {
343
+ const directive = getConditionalDirective(chain[i].node);
344
+ if (directive?.type === 'k-else-if') {
345
+ warnUnsupportedElseIf(chain[i]);
346
+ return;
347
+ }
348
+ }
349
+ const firstDirective = getConditionalDirective(chain[0].node);
350
+ const secondDirective = getConditionalDirective(chain[1].node);
351
+ if (chain.length === 2 && firstDirective?.type === 'k-if' && secondDirective?.type === 'k-else') {
352
+ const conditionalCall = buildKTConditionalCall(path, firstDirective.condition, chain[0].node, chain[1].node);
353
+ if (isInsideJSXChildren$1(path)) {
354
+ path.replaceWith(t.jsxExpressionContainer(conditionalCall));
355
+ }
356
+ else {
357
+ path.replaceWith(conditionalCall);
358
+ }
359
+ chain[1].remove();
360
+ }
361
+ }
362
+ function isInsideJSXChildren$1(path) {
363
+ if (!path.inList || path.listKey !== 'children') {
364
+ return false;
365
+ }
366
+ const parent = path.parentPath;
367
+ return !!parent && (parent.isJSXElement() || parent.isJSXFragment());
368
+ }
369
+ function ensureKTConditionalIdentifier(path) {
370
+ const programPath = getProgramPath$1(path);
371
+ const cached = programPath.getData(KTCONDITIONAL_HELPER_CACHE_KEY);
372
+ if (t.isIdentifier(cached)) {
373
+ return t.identifier(cached.name);
374
+ }
375
+ const importSource = hasImportSource$1(programPath, '@ktjs/core') ? '@ktjs/core' : 'kt.js';
376
+ const localIdentifier = programPath.scope.generateUidIdentifier(KTCONDITIONAL_COMPONENT_IMPORT_NAME);
377
+ const importDeclaration = t.importDeclaration([t.importSpecifier(localIdentifier, t.identifier(KTCONDITIONAL_COMPONENT_IMPORT_NAME))], t.stringLiteral(importSource));
378
+ const insertIndex = findImportInsertIndex$1(programPath.node.body);
379
+ programPath.node.body.splice(insertIndex, 0, importDeclaration);
380
+ programPath.scope.crawl();
381
+ programPath.setData(KTCONDITIONAL_HELPER_CACHE_KEY, t.identifier(localIdentifier.name));
382
+ return t.identifier(localIdentifier.name);
383
+ }
384
+ function getProgramPath$1(path) {
385
+ const programPath = path.findParent((currentPath) => currentPath.isProgram());
386
+ if (!programPath) {
387
+ throw path.buildCodeFrameError('Failed to resolve Program path while transforming conditional directives.');
388
+ }
389
+ return programPath;
390
+ }
391
+ function hasImportSource$1(programPath, source) {
392
+ const body = programPath.node.body;
393
+ for (let i = 0; i < body.length; i++) {
394
+ const statement = body[i];
395
+ if (!t.isImportDeclaration(statement)) {
181
396
  continue;
182
397
  }
183
- const openingElement = element.openingElement;
184
- const newAttributes = removeConditionalDirectives(openingElement.attributes || []);
185
- let newCondition;
186
- if (directive.type === 'k-if') {
187
- newCondition = t.isExpression(directive.condition) ? directive.condition : t.booleanLiteral(true);
188
- prevConditions.push(directive.condition);
398
+ if (statement.source.value === source && statement.importKind !== 'type') {
399
+ return true;
189
400
  }
190
- else if (directive.type === 'k-else-if') {
191
- if (prevConditions.length === 0) {
192
- newCondition = t.isExpression(directive.condition) ? directive.condition : t.booleanLiteral(true);
193
- }
194
- else {
195
- newCondition = createCompoundCondition(prevConditions, directive.condition);
196
- }
197
- prevConditions.push(directive.condition);
401
+ }
402
+ return false;
403
+ }
404
+ function findImportInsertIndex$1(body) {
405
+ let index = 0;
406
+ while (index < body.length) {
407
+ const statement = body[index];
408
+ if (t.isImportDeclaration(statement)) {
409
+ index++;
410
+ continue;
198
411
  }
199
- else {
200
- if (prevConditions.length === 0) {
201
- newCondition = t.booleanLiteral(true);
202
- }
203
- else {
204
- newCondition = createCompoundCondition(prevConditions);
205
- }
412
+ if (t.isExpressionStatement(statement) && t.isStringLiteral(statement.expression)) {
413
+ index++;
414
+ continue;
206
415
  }
207
- newAttributes.push(t.jsxAttribute(t.jsxIdentifier('k-if'), t.jsxExpressionContainer(newCondition)));
208
- openingElement.attributes = newAttributes;
209
- elementPath.skip();
416
+ break;
210
417
  }
418
+ return index;
211
419
  }
212
420
 
213
421
  const KFOR_SINGLE_PATTERN = /^([A-Za-z_$][A-Za-z0-9_$]*)\s+(in|of)\s+([\s\S]+)$/;
@@ -572,8 +780,8 @@ function transformerKTjsx() {
572
780
  JSXElement: {
573
781
  enter(path) {
574
782
  validateDirectiveCombinations(path);
575
- transformConditionalChains(path);
576
783
  addFlagToSvgMathMLElement(path);
784
+ transformConditionalChains(path);
577
785
  },
578
786
  exit(path) {
579
787
  transformKFor(path);
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/svg-mathml-flag.ts","../src/if-else.ts","../src/k-for.ts","../src/plugin.ts","../src/transform.ts"],"sourcesContent":["import type { NodePath } from '@babel/core';\nimport * as t from '@babel/types';\n\nfunction isSvgTag(tag: string) {\n return tag === 'svg' || (typeof tag === 'string' && tag.startsWith('svg:'));\n}\n\nfunction isMathTag(tag: string) {\n return tag === 'math' || (typeof tag === 'string' && tag.startsWith('math:'));\n}\n\nexport function addFlagToSvgMathMLElement(path: NodePath<t.JSXElement>) {\n const opening = path.node.openingElement;\n if (!opening) {\n return;\n }\n\n const oname = opening.name;\n if (t.isJSXNamespacedName(oname)) {\n return;\n }\n if (!t.isJSXIdentifier(oname)) {\n return;\n }\n\n const tag = oname.name;\n const isSvgRoot = isSvgTag(tag);\n const isMathRoot = isMathTag(tag);\n\n let insideSvg = false;\n if (!isSvgRoot) {\n /**\n * @type {import('@babel/core').NodePath | null}\n */\n const parentSvg = path.findParent((p) => {\n if (!p.isJSXElement()) {\n return false;\n }\n const popping = p.node.openingElement && p.node.openingElement.name;\n if (!popping) {\n return false;\n }\n if (t.isJSXIdentifier(popping)) {\n return isSvgTag(popping.name);\n }\n if (t.isJSXNamespacedName(popping)) {\n return t.isJSXIdentifier(popping.namespace) && popping.namespace.name === 'svg';\n }\n return false;\n });\n insideSvg = !!parentSvg;\n }\n\n let insideMath = false;\n if (!isMathRoot) {\n /**\n * @type {import('@babel/core').NodePath | null}\n */\n const parentMath = path.findParent((p) => {\n if (!p.isJSXElement()) {\n return false;\n }\n const popping = p.node.openingElement && p.node.openingElement.name;\n if (!popping) {\n return false;\n }\n if (t.isJSXIdentifier(popping)) {\n return isMathTag(popping.name);\n }\n if (t.isJSXNamespacedName(popping)) {\n return t.isJSXIdentifier(popping.namespace) && popping.namespace.name === 'math';\n }\n return false;\n });\n insideMath = !!parentMath;\n }\n\n // If this element is neither an svg/math root nor inside one, skip.\n const inSvgContext = isSvgRoot || insideSvg;\n const inMathContext = isMathRoot || insideMath;\n if (!inSvgContext && !inMathContext) {\n return;\n }\n\n // Add boolean attribute (SVG or MATHML) to opening element if not present\n const attrs = opening.attributes || [];\n const flag = inSvgContext ? flags.svg : flags.mathml;\n const hasFlag = attrs.some((a) => t.isJSXAttribute(a) && t.isJSXIdentifier(a.name) && a.name.name === flag);\n if (!hasFlag) {\n attrs.push(t.jsxAttribute(t.jsxIdentifier(flag)));\n opening.attributes = attrs;\n }\n}\n","import type { NodePath } from '@babel/core';\nimport * as t from '@babel/types';\n\nfunction hasConditionalDirective(element: t.JSXElement): boolean {\n const attributes = element.openingElement.attributes || [];\n return attributes.some((attr) => {\n if (!t.isJSXAttribute(attr)) {\n return false;\n }\n if (!t.isJSXIdentifier(attr.name)) {\n return false;\n }\n return attr.name.name === 'k-if' || attr.name.name === 'k-else-if' || attr.name.name === 'k-else';\n });\n}\n\nfunction getConditionalDirective(\n element: t.JSXElement,\n): { type: 'k-if' | 'k-else-if' | 'k-else'; condition: t.Expression | t.StringLiteral | null } | null {\n const attributes = element.openingElement.attributes || [];\n for (const attr of attributes) {\n if (!t.isJSXAttribute(attr) || !t.isJSXIdentifier(attr.name)) {\n continue;\n }\n\n if (attr.name.name === 'k-if' || attr.name.name === 'k-else-if') {\n let condition: t.Expression | t.StringLiteral | null = null;\n if (attr.value) {\n if (t.isJSXExpressionContainer(attr.value)) {\n condition = attr.value.expression as t.Expression;\n } else if (t.isStringLiteral(attr.value)) {\n condition = attr.value;\n }\n }\n return { type: attr.name.name, condition };\n }\n\n if (attr.name.name === 'k-else') {\n return { type: 'k-else', condition: null };\n }\n }\n return null;\n}\n\nfunction removeConditionalDirectives(attributes: (t.JSXAttribute | t.JSXSpreadAttribute)[]) {\n return attributes.filter((attr) => {\n if (!t.isJSXAttribute(attr)) {\n return true;\n }\n if (!t.isJSXIdentifier(attr.name)) {\n return true;\n }\n return attr.name.name !== 'k-if' && attr.name.name !== 'k-else-if' && attr.name.name !== 'k-else';\n });\n}\n\nfunction createCompoundCondition(\n prevConditions: Array<t.Expression | t.StringLiteral | null>,\n currentCondition: t.Expression | t.StringLiteral | null = null,\n): t.Expression {\n if (prevConditions.length === 0) {\n if (currentCondition && t.isExpression(currentCondition)) {\n return currentCondition;\n }\n return t.booleanLiteral(true);\n }\n\n const first = prevConditions[0];\n let compound: t.Expression = t.unaryExpression('!', t.isExpression(first) ? first : t.booleanLiteral(false));\n for (let i = 1; i < prevConditions.length; i++) {\n const condition = prevConditions[i];\n const negated = t.unaryExpression('!', t.isExpression(condition) ? condition : t.booleanLiteral(false));\n compound = t.logicalExpression('&&', compound, negated);\n }\n\n if (currentCondition && t.isExpression(currentCondition)) {\n compound = t.logicalExpression('&&', compound, currentCondition);\n }\n\n return compound;\n}\n\nexport function transformConditionalChains(path: NodePath<t.JSXElement>) {\n const { node } = path;\n if (!hasConditionalDirective(node)) {\n return;\n }\n\n const prevSibling = path.getPrevSibling();\n if (prevSibling && prevSibling.isJSXElement() && hasConditionalDirective(prevSibling.node)) {\n return;\n }\n\n const chain: Array<NodePath<t.JSXElement>> = [path];\n let current: NodePath<t.JSXElement> = path;\n\n while (true) {\n const nextSibling = current.getNextSibling();\n if (!nextSibling || !nextSibling.isJSXElement() || !hasConditionalDirective(nextSibling.node)) {\n break;\n }\n chain.push(nextSibling);\n current = nextSibling;\n }\n\n if (chain.length === 1) {\n return;\n }\n\n const prevConditions: Array<t.Expression | t.StringLiteral | null> = [];\n for (let i = 0; i < chain.length; i++) {\n const elementPath = chain[i];\n const element = elementPath.node;\n const directive = getConditionalDirective(element);\n if (!directive) {\n continue;\n }\n\n const openingElement = element.openingElement;\n const newAttributes = removeConditionalDirectives(openingElement.attributes || []);\n\n let newCondition: t.Expression;\n if (directive.type === 'k-if') {\n newCondition = t.isExpression(directive.condition) ? directive.condition : t.booleanLiteral(true);\n prevConditions.push(directive.condition);\n } else if (directive.type === 'k-else-if') {\n if (prevConditions.length === 0) {\n newCondition = t.isExpression(directive.condition) ? directive.condition : t.booleanLiteral(true);\n } else {\n newCondition = createCompoundCondition(prevConditions, directive.condition);\n }\n prevConditions.push(directive.condition);\n } else {\n if (prevConditions.length === 0) {\n newCondition = t.booleanLiteral(true);\n } else {\n newCondition = createCompoundCondition(prevConditions);\n }\n }\n\n newAttributes.push(t.jsxAttribute(t.jsxIdentifier('k-if'), t.jsxExpressionContainer(newCondition)));\n openingElement.attributes = newAttributes;\n elementPath.skip();\n }\n}\n","import { parseSync, type NodePath } from '@babel/core';\nimport * as t from '@babel/types';\n\nconst KFOR_SINGLE_PATTERN = /^([A-Za-z_$][A-Za-z0-9_$]*)\\s+(in|of)\\s+([\\s\\S]+)$/;\nconst KFOR_TUPLE_PATTERN =\n /^\\(\\s*([A-Za-z_$][A-Za-z0-9_$]*)(?:\\s*,\\s*([A-Za-z_$][A-Za-z0-9_$]*))?(?:\\s*,\\s*([A-Za-z_$][A-Za-z0-9_$]*))?\\s*\\)\\s+(in|of)\\s+([\\s\\S]+)$/;\nconst KTFOR_HELPER_CACHE_KEY = '__kt_for_component_identifier__';\nconst KTFOR_COMPONENT_IMPORT_NAME = 'KTFor';\n\ninterface ParsedKForExpression {\n aliases: string[];\n source: string;\n}\n\ntype KForTransformPath = NodePath<t.Node>;\n\nexport function validateDirectiveCombinations(path: NodePath<t.JSXElement>) {\n const opening = path.node.openingElement;\n const hasFor = hasAttribute(opening, 'k-for');\n const hasIf = hasAttribute(opening, 'k-if');\n const hasElse = hasAttribute(opening, 'k-else');\n const hasElseIf = hasAttribute(opening, 'k-else-if');\n\n if (hasIf && hasElse) {\n throw path.buildCodeFrameError(\n 'Invalid directive usage: `k-if` and `k-else` cannot be used on the same element.',\n );\n }\n\n if (hasFor && (hasIf || hasElseIf || hasElse)) {\n throw path.buildCodeFrameError(\n 'Invalid directive usage: `k-for` cannot be combined with `k-if` / `k-else-if` / `k-else` on the same element.',\n );\n }\n}\n\nexport function transformKFor(path: NodePath<t.JSXElement>): boolean {\n const opening = path.node.openingElement;\n const forAttr = getAttribute(opening, 'k-for');\n if (!forAttr) {\n return false;\n }\n\n const parsedForText = readAttributeStringValue(forAttr, path, 'k-for');\n const parsedFor = parseKForExpression(parsedForText);\n if (!parsedFor) {\n throw path.buildCodeFrameError(\n 'Invalid `k-for` expression. Expected `item in list` or `(item, index[, array]) in list`.',\n );\n }\n\n const sourceExpression = parseTextAsExpression(path, parsedFor.source, 'k-for source');\n const keyAttr = getAttribute(opening, 'k-key');\n const keyCallback = createKeyCallback(path, keyAttr, parsedFor.aliases);\n\n const renderNode = t.cloneNode(path.node, true) as t.JSXElement;\n const renderOpening = renderNode.openingElement;\n renderOpening.attributes = removeAttributes(renderOpening.attributes, ['k-for', 'k-key']);\n\n const callbackParams = parsedFor.aliases.map((alias) => t.identifier(alias));\n const callback = t.arrowFunctionExpression(callbackParams, renderNode);\n const ktForIdentifier = ensureKTForIdentifier(path);\n const props: t.ObjectProperty[] = [\n t.objectProperty(t.identifier('list'), sourceExpression),\n t.objectProperty(t.identifier('map'), callback),\n ];\n\n if (keyCallback) {\n props.splice(1, 0, t.objectProperty(t.identifier('key'), keyCallback));\n }\n\n const ktForCall = t.callExpression(ktForIdentifier, [t.objectExpression(props)]);\n\n if (isInsideJSXChildren(path)) {\n path.replaceWith(t.jsxExpressionContainer(ktForCall));\n } else {\n path.replaceWith(ktForCall);\n }\n\n return true;\n}\n\nexport function transformKForCallExpression(path: NodePath<t.CallExpression>): boolean {\n const targetProps = findDirectivePropsObject(path.node, 'k-for');\n if (!targetProps) {\n return false;\n }\n\n const parsedForText = readExpressionStringValue(targetProps.forProperty.value, path, 'k-for');\n const parsedFor = parseKForExpression(parsedForText);\n if (!parsedFor) {\n throw path.buildCodeFrameError(\n 'Invalid `k-for` expression. Expected `item in list` or `(item, index[, array]) in list`.',\n );\n }\n\n const sourceExpression = parseTextAsExpression(path, parsedFor.source, 'k-for source');\n const keyCallback = createKeyCallbackFromExpression(path, targetProps.keyProperty?.value, parsedFor.aliases);\n\n const renderCall = t.cloneNode(path.node, true) as t.CallExpression;\n const renderProps = renderCall.arguments[targetProps.argIndex];\n if (!renderProps || !t.isObjectExpression(renderProps)) {\n return false;\n }\n renderProps.properties = removeObjectProperties(renderProps.properties, ['k-for', 'k-key']);\n\n const callbackParams = parsedFor.aliases.map((alias) => t.identifier(alias));\n const callback = t.arrowFunctionExpression(callbackParams, renderCall);\n const ktForIdentifier = ensureKTForIdentifier(path);\n const props: t.ObjectProperty[] = [\n t.objectProperty(t.identifier('list'), sourceExpression),\n t.objectProperty(t.identifier('map'), callback),\n ];\n\n if (keyCallback) {\n props.splice(1, 0, t.objectProperty(t.identifier('key'), keyCallback));\n }\n\n path.replaceWith(t.callExpression(ktForIdentifier, [t.objectExpression(props)]));\n return true;\n}\n\nfunction parseKForExpression(raw: string): ParsedKForExpression | null {\n const value = raw.trim();\n if (!value) {\n return null;\n }\n\n const tupleMatch = KFOR_TUPLE_PATTERN.exec(value);\n if (tupleMatch) {\n const source = tupleMatch[5]?.trim();\n if (!source) {\n return null;\n }\n const aliases = [tupleMatch[1], tupleMatch[2], tupleMatch[3]].filter(\n (item): item is string => typeof item === 'string' && item.length > 0,\n );\n return {\n aliases,\n source,\n };\n }\n\n const singleMatch = KFOR_SINGLE_PATTERN.exec(value);\n if (singleMatch) {\n const source = singleMatch[3]?.trim();\n if (!source) {\n return null;\n }\n return {\n aliases: [singleMatch[1], 'index'],\n source,\n };\n }\n\n return null;\n}\n\nfunction parseTextAsExpression(path: KForTransformPath, text: string, label: string): t.Expression {\n try {\n const ast = parseSync(`(${text});`, {\n configFile: false,\n babelrc: false,\n sourceType: 'module',\n parserOpts: {\n plugins: ['typescript', 'jsx'],\n },\n });\n\n if (!ast) {\n throw new Error('Babel returned an empty AST.');\n }\n const statement = ast.program.body[0];\n if (!statement || !t.isExpressionStatement(statement)) {\n throw new Error('Expected an expression statement.');\n }\n return statement.expression;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw path.buildCodeFrameError(`Failed to parse ${label}: ${message}`);\n }\n}\n\nfunction getAttribute(\n opening: t.JSXOpeningElement,\n name: string,\n): t.JSXAttribute | undefined {\n const attributes = opening.attributes || [];\n for (let i = 0; i < attributes.length; i++) {\n const attr = attributes[i];\n if (!t.isJSXAttribute(attr) || !t.isJSXIdentifier(attr.name)) {\n continue;\n }\n if (attr.name.name === name) {\n return attr;\n }\n }\n return undefined;\n}\n\nfunction hasAttribute(opening: t.JSXOpeningElement, name: string): boolean {\n return !!getAttribute(opening, name);\n}\n\nfunction readAttributeStringValue(\n attr: t.JSXAttribute,\n path: NodePath<t.JSXElement>,\n attrName: string,\n): string {\n if (!attr.value) {\n throw path.buildCodeFrameError(`Directive \\`${attrName}\\` requires a string value.`);\n }\n\n if (t.isStringLiteral(attr.value)) {\n return attr.value.value;\n }\n\n if (!t.isJSXExpressionContainer(attr.value)) {\n throw path.buildCodeFrameError(`Directive \\`${attrName}\\` must be a string literal.`);\n }\n if (t.isJSXEmptyExpression(attr.value.expression)) {\n throw path.buildCodeFrameError(`Directive \\`${attrName}\\` cannot be empty.`);\n }\n if (t.isStringLiteral(attr.value.expression)) {\n return attr.value.expression.value;\n }\n if (t.isTemplateLiteral(attr.value.expression) && attr.value.expression.expressions.length === 0) {\n return attr.value.expression.quasis[0]?.value.cooked ?? '';\n }\n\n throw path.buildCodeFrameError(`Directive \\`${attrName}\\` must be a string literal.`);\n}\n\nfunction readExpressionStringValue(\n expression: t.Expression | t.PrivateName | t.PatternLike | t.ArgumentPlaceholder,\n path: KForTransformPath,\n directiveName: string,\n): string {\n if (t.isStringLiteral(expression)) {\n return expression.value;\n }\n if (t.isTemplateLiteral(expression) && expression.expressions.length === 0) {\n return expression.quasis[0]?.value.cooked ?? '';\n }\n\n throw path.buildCodeFrameError(`Directive \\`${directiveName}\\` must be a string literal.`);\n}\n\nfunction hasStringLikeValue(attr: t.JSXAttribute): boolean {\n if (!attr.value) {\n return false;\n }\n if (t.isStringLiteral(attr.value)) {\n return true;\n }\n if (!t.isJSXExpressionContainer(attr.value)) {\n return false;\n }\n if (t.isStringLiteral(attr.value.expression)) {\n return true;\n }\n return t.isTemplateLiteral(attr.value.expression) && attr.value.expression.expressions.length === 0;\n}\n\nfunction hasStringLikeExpression(\n expression: t.Expression | t.PrivateName | t.PatternLike | t.ArgumentPlaceholder | undefined,\n): expression is t.StringLiteral | t.TemplateLiteral {\n if (!expression) {\n return false;\n }\n if (t.isStringLiteral(expression)) {\n return true;\n }\n return t.isTemplateLiteral(expression) && expression.expressions.length === 0;\n}\n\nfunction createKeyCallback(\n path: NodePath<t.JSXElement>,\n keyAttr: t.JSXAttribute | undefined,\n aliases: string[],\n): t.ArrowFunctionExpression | null {\n if (!keyAttr || !hasStringLikeValue(keyAttr)) {\n return null;\n }\n\n const keyText = readAttributeStringValue(keyAttr, path, 'k-key');\n const keyExpression = parseTextAsExpression(path, keyText, 'k-key');\n const params = aliases.map((alias) => t.identifier(alias));\n return t.arrowFunctionExpression(params, keyExpression);\n}\n\nfunction createKeyCallbackFromExpression(\n path: KForTransformPath,\n keyExpression: t.Expression | t.PrivateName | t.PatternLike | t.ArgumentPlaceholder | undefined,\n aliases: string[],\n): t.ArrowFunctionExpression | null {\n if (!hasStringLikeExpression(keyExpression)) {\n return null;\n }\n\n const keyText = readExpressionStringValue(keyExpression, path, 'k-key');\n const parsedKeyExpression = parseTextAsExpression(path, keyText, 'k-key');\n const params = aliases.map((alias) => t.identifier(alias));\n return t.arrowFunctionExpression(params, parsedKeyExpression);\n}\n\nfunction removeAttributes(\n attributes: (t.JSXAttribute | t.JSXSpreadAttribute)[] | undefined,\n names: string[],\n): (t.JSXAttribute | t.JSXSpreadAttribute)[] {\n const set = new Set(names);\n if (!attributes || attributes.length === 0) {\n return [];\n }\n return attributes.filter((attr) => {\n if (!t.isJSXAttribute(attr) || !t.isJSXIdentifier(attr.name)) {\n return true;\n }\n return !set.has(attr.name.name);\n });\n}\n\nfunction removeObjectProperties(\n properties: (t.ObjectMethod | t.ObjectProperty | t.SpreadElement)[],\n names: string[],\n): (t.ObjectMethod | t.ObjectProperty | t.SpreadElement)[] {\n const set = new Set(names);\n return properties.filter((property) => {\n if (!t.isObjectProperty(property)) {\n return true;\n }\n const propertyName = getObjectPropertyName(property);\n if (!propertyName) {\n return true;\n }\n return !set.has(propertyName);\n });\n}\n\nfunction findDirectivePropsObject(\n callExpression: t.CallExpression,\n directiveName: string,\n):\n | {\n argIndex: number;\n forProperty: t.ObjectProperty;\n keyProperty: t.ObjectProperty | undefined;\n }\n | undefined {\n for (let i = 0; i < callExpression.arguments.length; i++) {\n const argument = callExpression.arguments[i];\n if (!t.isObjectExpression(argument)) {\n continue;\n }\n const forProperty = getObjectProperty(argument, directiveName);\n if (!forProperty) {\n continue;\n }\n return {\n argIndex: i,\n forProperty,\n keyProperty: getObjectProperty(argument, 'k-key'),\n };\n }\n return undefined;\n}\n\nfunction getObjectProperty(objectExpression: t.ObjectExpression, name: string): t.ObjectProperty | undefined {\n for (let i = 0; i < objectExpression.properties.length; i++) {\n const property = objectExpression.properties[i];\n if (!t.isObjectProperty(property)) {\n continue;\n }\n if (getObjectPropertyName(property) === name) {\n return property;\n }\n }\n return undefined;\n}\n\nfunction getObjectPropertyName(property: t.ObjectProperty): string | null {\n if (property.computed) {\n if (t.isStringLiteral(property.key)) {\n return property.key.value;\n }\n return null;\n }\n if (t.isIdentifier(property.key)) {\n return property.key.name;\n }\n if (t.isStringLiteral(property.key)) {\n return property.key.value;\n }\n return null;\n}\n\nfunction isInsideJSXChildren(path: NodePath<t.JSXElement>): boolean {\n if (!path.inList || path.listKey !== 'children') {\n return false;\n }\n const parent = path.parentPath;\n return !!parent && (parent.isJSXElement() || parent.isJSXFragment());\n}\n\nfunction ensureKTForIdentifier(path: KForTransformPath): t.Identifier {\n const programPath = getProgramPath(path);\n const cached = programPath.getData(KTFOR_HELPER_CACHE_KEY);\n if (t.isIdentifier(cached)) {\n return t.identifier(cached.name);\n }\n\n const importSource = hasImportSource(programPath, '@ktjs/core') ? '@ktjs/core' : 'kt.js';\n const localIdentifier = programPath.scope.generateUidIdentifier(KTFOR_COMPONENT_IMPORT_NAME);\n const importDeclaration = t.importDeclaration(\n [t.importSpecifier(localIdentifier, t.identifier(KTFOR_COMPONENT_IMPORT_NAME))],\n t.stringLiteral(importSource),\n );\n\n const insertIndex = findImportInsertIndex(programPath.node.body);\n programPath.node.body.splice(insertIndex, 0, importDeclaration);\n programPath.scope.crawl();\n programPath.setData(KTFOR_HELPER_CACHE_KEY, t.identifier(localIdentifier.name));\n return t.identifier(localIdentifier.name);\n}\n\nfunction getProgramPath(path: KForTransformPath): NodePath<t.Program> {\n const programPath = path.findParent((currentPath) => currentPath.isProgram()) as NodePath<t.Program> | null;\n if (!programPath) {\n throw path.buildCodeFrameError('Failed to resolve Program path while transforming `k-for`.');\n }\n return programPath;\n}\n\nfunction hasImportSource(programPath: NodePath<t.Program>, source: string): boolean {\n const body = programPath.node.body;\n for (let i = 0; i < body.length; i++) {\n const statement = body[i];\n if (!t.isImportDeclaration(statement)) {\n continue;\n }\n if (statement.source.value === source && statement.importKind !== 'type') {\n return true;\n }\n }\n return false;\n}\n\nfunction findImportInsertIndex(body: t.Statement[]): number {\n let index = 0;\n while (index < body.length) {\n const statement = body[index];\n if (t.isImportDeclaration(statement)) {\n index++;\n continue;\n }\n if (t.isExpressionStatement(statement) && t.isStringLiteral(statement.expression)) {\n index++;\n continue;\n }\n break;\n }\n return index;\n}\n","import type { PluginObj } from '@babel/core';\nimport { addFlagToSvgMathMLElement } from './svg-mathml-flag.js';\nimport { transformConditionalChains } from './if-else.js';\nimport { transformKFor, transformKForCallExpression, validateDirectiveCombinations } from './k-for.js';\n\nexport function transformerKTjsx(): PluginObj {\n return {\n name: 'ktjs-transformer',\n visitor: {\n JSXElement: {\n enter(path) {\n validateDirectiveCombinations(path);\n transformConditionalChains(path);\n addFlagToSvgMathMLElement(path);\n },\n exit(path) {\n transformKFor(path);\n },\n },\n CallExpression: {\n exit(path) {\n transformKForCallExpression(path);\n },\n },\n },\n };\n}\n\nexport default transformerKTjsx;\n","import { transformAsync, type TransformOptions } from '@babel/core';\nimport transformerKTjsx from './plugin.js';\n\nconst DEFAULT_PARSER_PLUGINS: NonNullable<TransformOptions['parserOpts']>['plugins'] = ['jsx', 'typescript'];\n\ntype ReservedTransformOptions =\n | 'ast'\n | 'babelrc'\n | 'configFile'\n | 'parserOpts'\n | 'plugins'\n | 'sourceMaps';\n\nexport type KTjsxTransformOptions = Omit<TransformOptions, ReservedTransformOptions> & {\n parserPlugins?: NonNullable<TransformOptions['parserOpts']>['plugins'];\n};\n\nexport async function transformWithKTjsx(code: string, options: KTjsxTransformOptions = {}) {\n const { parserPlugins = DEFAULT_PARSER_PLUGINS, ...babelConfig } = options;\n\n return transformAsync(code, {\n ast: false,\n babelrc: false,\n configFile: false,\n sourceMaps: true,\n parserOpts: {\n sourceType: 'module',\n plugins: parserPlugins,\n },\n plugins: [transformerKTjsx()],\n ...babelConfig,\n });\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/svg-mathml-flag.ts","../src/if-else.ts","../src/k-for.ts","../src/plugin.ts","../src/transform.ts"],"sourcesContent":["import type { NodePath } from '@babel/core';\nimport * as t from '@babel/types';\n\nfunction isSvgTag(tag: string) {\n return tag === 'svg' || (typeof tag === 'string' && tag.startsWith('svg:'));\n}\n\nfunction isMathTag(tag: string) {\n return tag === 'math' || (typeof tag === 'string' && tag.startsWith('math:'));\n}\n\nexport function addFlagToSvgMathMLElement(path: NodePath<t.JSXElement>) {\n const opening = path.node.openingElement;\n if (!opening) {\n return;\n }\n\n const oname = opening.name;\n if (t.isJSXNamespacedName(oname)) {\n return;\n }\n if (!t.isJSXIdentifier(oname)) {\n return;\n }\n\n const tag = oname.name;\n const isSvgRoot = isSvgTag(tag);\n const isMathRoot = isMathTag(tag);\n\n let insideSvg = false;\n if (!isSvgRoot) {\n /**\n * @type {import('@babel/core').NodePath | null}\n */\n const parentSvg = path.findParent((p) => {\n if (!p.isJSXElement()) {\n return false;\n }\n const popping = p.node.openingElement && p.node.openingElement.name;\n if (!popping) {\n return false;\n }\n if (t.isJSXIdentifier(popping)) {\n return isSvgTag(popping.name);\n }\n if (t.isJSXNamespacedName(popping)) {\n return t.isJSXIdentifier(popping.namespace) && popping.namespace.name === 'svg';\n }\n return false;\n });\n insideSvg = !!parentSvg;\n }\n\n let insideMath = false;\n if (!isMathRoot) {\n /**\n * @type {import('@babel/core').NodePath | null}\n */\n const parentMath = path.findParent((p) => {\n if (!p.isJSXElement()) {\n return false;\n }\n const popping = p.node.openingElement && p.node.openingElement.name;\n if (!popping) {\n return false;\n }\n if (t.isJSXIdentifier(popping)) {\n return isMathTag(popping.name);\n }\n if (t.isJSXNamespacedName(popping)) {\n return t.isJSXIdentifier(popping.namespace) && popping.namespace.name === 'math';\n }\n return false;\n });\n insideMath = !!parentMath;\n }\n\n // If this element is neither an svg/math root nor inside one, skip.\n const inSvgContext = isSvgRoot || insideSvg;\n const inMathContext = isMathRoot || insideMath;\n if (!inSvgContext && !inMathContext) {\n return;\n }\n\n // Add boolean attribute (SVG or MATHML) to opening element if not present\n const attrs = opening.attributes || [];\n const flag = inSvgContext ? flags.svg : flags.mathml;\n const hasFlag = attrs.some((a) => t.isJSXAttribute(a) && t.isJSXIdentifier(a.name) && a.name.name === flag);\n if (!hasFlag) {\n attrs.push(t.jsxAttribute(t.jsxIdentifier(flag)));\n opening.attributes = attrs;\n }\n}\n","import type { NodePath } from '@babel/core';\nimport * as t from '@babel/types';\n\nconst KTCONDITIONAL_HELPER_CACHE_KEY = '__kt_conditional_component_identifier__';\nconst KTCONDITIONAL_COMPONENT_IMPORT_NAME = 'KTConditional';\nconst KTUNSUPPORTED_ELSEIF_WARNING_CACHE_KEY = '__kt_unsupported_else_if_warning_cache__';\nconst CONDITIONAL_DIRECTIVES = new Set(['k-if', 'k-else-if', 'k-else']);\n\ntype ConditionalDirectiveType = 'k-if' | 'k-else-if' | 'k-else';\ntype ConditionalValue = t.Expression | t.StringLiteral | null;\n\ninterface ConditionalDirective {\n type: ConditionalDirectiveType;\n condition: ConditionalValue;\n}\n\ninterface ConditionalCallArgs {\n tag: t.Expression;\n props: t.ObjectExpression;\n}\n\nfunction hasConditionalDirective(element: t.JSXElement): boolean {\n const attributes = element.openingElement.attributes || [];\n return attributes.some((attr) => {\n if (!t.isJSXAttribute(attr)) {\n return false;\n }\n if (!t.isJSXIdentifier(attr.name)) {\n return false;\n }\n return CONDITIONAL_DIRECTIVES.has(attr.name.name);\n });\n}\n\nfunction getConditionalDirective(element: t.JSXElement): ConditionalDirective | null {\n const attributes = element.openingElement.attributes || [];\n for (const attr of attributes) {\n if (!t.isJSXAttribute(attr) || !t.isJSXIdentifier(attr.name)) {\n continue;\n }\n\n if (attr.name.name === 'k-if' || attr.name.name === 'k-else-if') {\n let condition: t.Expression | t.StringLiteral | null = null;\n if (attr.value) {\n if (t.isJSXExpressionContainer(attr.value)) {\n condition = attr.value.expression as t.Expression;\n } else if (t.isStringLiteral(attr.value)) {\n condition = attr.value;\n }\n }\n return { type: attr.name.name, condition };\n }\n\n if (attr.name.name === 'k-else') {\n return { type: 'k-else', condition: null };\n }\n }\n return null;\n}\n\nfunction removeConditionalDirectives(attributes: (t.JSXAttribute | t.JSXSpreadAttribute)[]) {\n return attributes.filter((attr) => {\n if (!t.isJSXAttribute(attr)) {\n return true;\n }\n if (!t.isJSXIdentifier(attr.name)) {\n return true;\n }\n return !CONDITIONAL_DIRECTIVES.has(attr.name.name);\n });\n}\n\nfunction getConditionExpression(condition: ConditionalValue): t.Expression {\n if (condition && t.isExpression(condition)) {\n return t.cloneNode(condition, true);\n }\n return t.booleanLiteral(true);\n}\n\nfunction buildConditionalCallArgs(element: t.JSXElement): ConditionalCallArgs {\n const openingElement = element.openingElement;\n const attributes = removeConditionalDirectives(openingElement.attributes || []);\n const tag = jsxTagNameToExpression(openingElement.name);\n const props = buildPropsObject(attributes, element.children);\n\n return { tag, props };\n}\n\nfunction buildPropsObject(\n attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute>,\n children: t.JSXElement['children'],\n): t.ObjectExpression {\n const properties: Array<t.ObjectProperty | t.SpreadElement> = [];\n\n for (let i = 0; i < attributes.length; i++) {\n const attr = attributes[i];\n if (t.isJSXSpreadAttribute(attr)) {\n properties.push(t.spreadElement(t.cloneNode(attr.argument, true)));\n continue;\n }\n\n const attrName = getJSXAttributeName(attr.name);\n if (!attrName || CONDITIONAL_DIRECTIVES.has(attrName)) {\n continue;\n }\n\n let value: t.Expression = t.booleanLiteral(true);\n if (attr.value) {\n if (t.isStringLiteral(attr.value)) {\n value = t.cloneNode(attr.value, true);\n } else if (t.isJSXExpressionContainer(attr.value)) {\n value = t.isJSXEmptyExpression(attr.value.expression)\n ? t.booleanLiteral(true)\n : t.cloneNode(attr.value.expression, true);\n }\n }\n\n properties.push(t.objectProperty(createObjectKey(attrName), value));\n }\n\n const childrenExpression = buildChildrenExpression(children);\n if (childrenExpression) {\n properties.push(t.objectProperty(t.identifier('children'), childrenExpression));\n }\n\n return t.objectExpression(properties);\n}\n\nfunction buildChildrenExpression(children: t.JSXElement['children']): t.Expression | null {\n const normalizedChildren: Array<t.Expression | t.SpreadElement> = [];\n\n for (let i = 0; i < children.length; i++) {\n const child = children[i];\n if (t.isJSXText(child)) {\n const text = normalizeJSXText(child.value);\n if (text) {\n normalizedChildren.push(t.stringLiteral(text));\n }\n continue;\n }\n\n if (t.isJSXExpressionContainer(child)) {\n if (!t.isJSXEmptyExpression(child.expression)) {\n normalizedChildren.push(t.cloneNode(child.expression, true));\n }\n continue;\n }\n\n if (t.isJSXSpreadChild(child)) {\n normalizedChildren.push(t.spreadElement(t.cloneNode(child.expression, true)));\n continue;\n }\n\n if (t.isJSXElement(child) || t.isJSXFragment(child)) {\n normalizedChildren.push(t.cloneNode(child, true));\n }\n }\n\n if (normalizedChildren.length === 0) {\n return null;\n }\n\n if (normalizedChildren.length === 1 && t.isExpression(normalizedChildren[0])) {\n return normalizedChildren[0];\n }\n\n const arrayItems: Array<t.Expression | t.SpreadElement | null> = [];\n for (let i = 0; i < normalizedChildren.length; i++) {\n arrayItems.push(t.cloneNode(normalizedChildren[i], true) as t.Expression | t.SpreadElement);\n }\n return t.arrayExpression(arrayItems);\n}\n\nfunction normalizeJSXText(value: string): string {\n const lines = value.replace(/\\r\\n?/g, '\\n').split('\\n');\n let lastNonEmptyLine = -1;\n\n for (let i = 0; i < lines.length; i++) {\n if (/[^\\t ]/.test(lines[i])) {\n lastNonEmptyLine = i;\n }\n }\n\n if (lastNonEmptyLine < 0) {\n return '';\n }\n\n let content = '';\n for (let i = 0; i < lines.length; i++) {\n const isFirstLine = i === 0;\n const isLastLine = i === lines.length - 1;\n let line = lines[i].replace(/\\t/g, ' ');\n\n if (!isFirstLine) {\n line = line.replace(/^[ ]+/, '');\n }\n if (!isLastLine) {\n line = line.replace(/[ ]+$/, '');\n }\n\n if (!line) {\n continue;\n }\n\n content += line;\n if (i !== lastNonEmptyLine) {\n content += ' ';\n }\n }\n\n return content;\n}\n\nfunction createObjectKey(name: string): t.Identifier | t.StringLiteral {\n if (t.isValidIdentifier(name)) {\n return t.identifier(name);\n }\n return t.stringLiteral(name);\n}\n\nfunction getJSXAttributeName(name: t.JSXIdentifier | t.JSXNamespacedName): string | null {\n if (t.isJSXIdentifier(name)) {\n return name.name;\n }\n\n if (t.isJSXNamespacedName(name) && t.isJSXIdentifier(name.namespace) && t.isJSXIdentifier(name.name)) {\n return `${name.namespace.name}:${name.name.name}`;\n }\n\n return null;\n}\n\nfunction jsxTagNameToExpression(name: t.JSXIdentifier | t.JSXMemberExpression | t.JSXNamespacedName): t.Expression {\n if (t.isJSXIdentifier(name)) {\n if (name.name === 'this') {\n return t.thisExpression();\n }\n if (isCompatTag(name.name)) {\n return t.stringLiteral(name.name);\n }\n return t.identifier(name.name);\n }\n\n if (t.isJSXMemberExpression(name)) {\n return t.memberExpression(jsxTagNameToExpression(name.object), t.identifier(name.property.name));\n }\n\n if (t.isJSXNamespacedName(name) && t.isJSXIdentifier(name.namespace) && t.isJSXIdentifier(name.name)) {\n return t.stringLiteral(`${name.namespace.name}:${name.name.name}`);\n }\n\n return t.stringLiteral('div');\n}\n\nfunction isCompatTag(tagName: string): boolean {\n return /^[a-z]/.test(tagName) || tagName.includes('-');\n}\n\nfunction buildKTConditionalCall(\n path: NodePath<t.JSXElement>,\n condition: ConditionalValue,\n ifElement: t.JSXElement,\n elseElement: t.JSXElement,\n): t.CallExpression {\n const helperIdentifier = ensureKTConditionalIdentifier(path);\n const ifArgs = buildConditionalCallArgs(ifElement);\n const elseArgs = buildConditionalCallArgs(elseElement);\n\n return t.callExpression(helperIdentifier, [\n getConditionExpression(condition),\n ifArgs.tag,\n ifArgs.props,\n elseArgs.tag,\n elseArgs.props,\n ]);\n}\n\nfunction warnUnsupportedElseIf(path: NodePath<t.JSXElement>) {\n const programPath = getProgramPath(path);\n let warningCache = programPath.getData(KTUNSUPPORTED_ELSEIF_WARNING_CACHE_KEY) as Set<string> | undefined;\n if (!warningCache) {\n warningCache = new Set<string>();\n programPath.setData(KTUNSUPPORTED_ELSEIF_WARNING_CACHE_KEY, warningCache);\n }\n\n const loc = path.node.loc?.start;\n const cacheKey = loc ? `${loc.line}:${loc.column}` : `${path.node.start ?? 'unknown'}`;\n if (warningCache.has(cacheKey)) {\n return;\n }\n warningCache.add(cacheKey);\n\n const file = (((programPath as any).hub?.file?.opts?.filename as string | undefined) || 'unknown file');\n const pos = loc ? `${loc.line}:${loc.column + 1}` : 'unknown';\n console.warn(\n `[ktjs-transformer] \\`k-else-if\\` is not supported yet and will be left untransformed (${file}:${pos}).`,\n );\n}\n\nexport function transformConditionalChains(path: NodePath<t.JSXElement>) {\n const { node } = path;\n if (!hasConditionalDirective(node)) {\n return;\n }\n\n const prevSibling = path.getPrevSibling();\n if (prevSibling && prevSibling.isJSXElement() && hasConditionalDirective(prevSibling.node)) {\n return;\n }\n\n const chain: Array<NodePath<t.JSXElement>> = [path];\n let current: NodePath<t.JSXElement> = path;\n\n while (true) {\n const nextSibling = current.getNextSibling();\n if (!nextSibling || !nextSibling.isJSXElement() || !hasConditionalDirective(nextSibling.node)) {\n break;\n }\n chain.push(nextSibling);\n current = nextSibling;\n }\n\n if (chain.length === 1) {\n const onlyDirective = getConditionalDirective(chain[0].node);\n if (onlyDirective?.type === 'k-else-if') {\n warnUnsupportedElseIf(chain[0]);\n }\n return;\n }\n\n for (let i = 0; i < chain.length; i++) {\n const directive = getConditionalDirective(chain[i].node);\n if (directive?.type === 'k-else-if') {\n warnUnsupportedElseIf(chain[i]);\n return;\n }\n }\n\n const firstDirective = getConditionalDirective(chain[0].node);\n const secondDirective = getConditionalDirective(chain[1].node);\n if (chain.length === 2 && firstDirective?.type === 'k-if' && secondDirective?.type === 'k-else') {\n const conditionalCall = buildKTConditionalCall(path, firstDirective.condition, chain[0].node, chain[1].node);\n if (isInsideJSXChildren(path)) {\n path.replaceWith(t.jsxExpressionContainer(conditionalCall));\n } else {\n path.replaceWith(conditionalCall);\n }\n chain[1].remove();\n }\n}\n\nfunction isInsideJSXChildren(path: NodePath<t.JSXElement>): boolean {\n if (!path.inList || path.listKey !== 'children') {\n return false;\n }\n\n const parent = path.parentPath;\n return !!parent && (parent.isJSXElement() || parent.isJSXFragment());\n}\n\nfunction ensureKTConditionalIdentifier(path: NodePath<t.Node>): t.Identifier {\n const programPath = getProgramPath(path);\n const cached = programPath.getData(KTCONDITIONAL_HELPER_CACHE_KEY);\n if (t.isIdentifier(cached)) {\n return t.identifier(cached.name);\n }\n\n const importSource = hasImportSource(programPath, '@ktjs/core') ? '@ktjs/core' : 'kt.js';\n const localIdentifier = programPath.scope.generateUidIdentifier(KTCONDITIONAL_COMPONENT_IMPORT_NAME);\n const importDeclaration = t.importDeclaration(\n [t.importSpecifier(localIdentifier, t.identifier(KTCONDITIONAL_COMPONENT_IMPORT_NAME))],\n t.stringLiteral(importSource),\n );\n\n const insertIndex = findImportInsertIndex(programPath.node.body);\n programPath.node.body.splice(insertIndex, 0, importDeclaration);\n programPath.scope.crawl();\n programPath.setData(KTCONDITIONAL_HELPER_CACHE_KEY, t.identifier(localIdentifier.name));\n return t.identifier(localIdentifier.name);\n}\n\nfunction getProgramPath(path: NodePath<t.Node>): NodePath<t.Program> {\n const programPath = path.findParent((currentPath) => currentPath.isProgram()) as NodePath<t.Program> | null;\n if (!programPath) {\n throw path.buildCodeFrameError('Failed to resolve Program path while transforming conditional directives.');\n }\n return programPath;\n}\n\nfunction hasImportSource(programPath: NodePath<t.Program>, source: string): boolean {\n const body = programPath.node.body;\n for (let i = 0; i < body.length; i++) {\n const statement = body[i];\n if (!t.isImportDeclaration(statement)) {\n continue;\n }\n if (statement.source.value === source && statement.importKind !== 'type') {\n return true;\n }\n }\n return false;\n}\n\nfunction findImportInsertIndex(body: t.Statement[]): number {\n let index = 0;\n while (index < body.length) {\n const statement = body[index];\n if (t.isImportDeclaration(statement)) {\n index++;\n continue;\n }\n if (t.isExpressionStatement(statement) && t.isStringLiteral(statement.expression)) {\n index++;\n continue;\n }\n break;\n }\n return index;\n}\n","import { parseSync, type NodePath } from '@babel/core';\nimport * as t from '@babel/types';\n\nconst KFOR_SINGLE_PATTERN = /^([A-Za-z_$][A-Za-z0-9_$]*)\\s+(in|of)\\s+([\\s\\S]+)$/;\nconst KFOR_TUPLE_PATTERN =\n /^\\(\\s*([A-Za-z_$][A-Za-z0-9_$]*)(?:\\s*,\\s*([A-Za-z_$][A-Za-z0-9_$]*))?(?:\\s*,\\s*([A-Za-z_$][A-Za-z0-9_$]*))?\\s*\\)\\s+(in|of)\\s+([\\s\\S]+)$/;\nconst KTFOR_HELPER_CACHE_KEY = '__kt_for_component_identifier__';\nconst KTFOR_COMPONENT_IMPORT_NAME = 'KTFor';\n\ninterface ParsedKForExpression {\n aliases: string[];\n source: string;\n}\n\ntype KForTransformPath = NodePath<t.Node>;\n\nexport function validateDirectiveCombinations(path: NodePath<t.JSXElement>) {\n const opening = path.node.openingElement;\n const hasFor = hasAttribute(opening, 'k-for');\n const hasIf = hasAttribute(opening, 'k-if');\n const hasElse = hasAttribute(opening, 'k-else');\n const hasElseIf = hasAttribute(opening, 'k-else-if');\n\n if (hasIf && hasElse) {\n throw path.buildCodeFrameError('Invalid directive usage: `k-if` and `k-else` cannot be used on the same element.');\n }\n\n if (hasFor && (hasIf || hasElseIf || hasElse)) {\n throw path.buildCodeFrameError(\n 'Invalid directive usage: `k-for` cannot be combined with `k-if` / `k-else-if` / `k-else` on the same element.',\n );\n }\n}\n\nexport function transformKFor(path: NodePath<t.JSXElement>): boolean {\n const opening = path.node.openingElement;\n const forAttr = getAttribute(opening, 'k-for');\n if (!forAttr) {\n return false;\n }\n\n const parsedForText = readAttributeStringValue(forAttr, path, 'k-for');\n const parsedFor = parseKForExpression(parsedForText);\n if (!parsedFor) {\n throw path.buildCodeFrameError(\n 'Invalid `k-for` expression. Expected `item in list` or `(item, index[, array]) in list`.',\n );\n }\n\n const sourceExpression = parseTextAsExpression(path, parsedFor.source, 'k-for source');\n const keyAttr = getAttribute(opening, 'k-key');\n const keyCallback = createKeyCallback(path, keyAttr, parsedFor.aliases);\n\n const renderNode = t.cloneNode(path.node, true) as t.JSXElement;\n const renderOpening = renderNode.openingElement;\n renderOpening.attributes = removeAttributes(renderOpening.attributes, ['k-for', 'k-key']);\n\n const callbackParams = parsedFor.aliases.map((alias) => t.identifier(alias));\n const callback = t.arrowFunctionExpression(callbackParams, renderNode);\n const ktForIdentifier = ensureKTForIdentifier(path);\n const props: t.ObjectProperty[] = [\n t.objectProperty(t.identifier('list'), sourceExpression),\n t.objectProperty(t.identifier('map'), callback),\n ];\n\n if (keyCallback) {\n props.splice(1, 0, t.objectProperty(t.identifier('key'), keyCallback));\n }\n\n const ktForCall = t.callExpression(ktForIdentifier, [t.objectExpression(props)]);\n\n if (isInsideJSXChildren(path)) {\n path.replaceWith(t.jsxExpressionContainer(ktForCall));\n } else {\n path.replaceWith(ktForCall);\n }\n\n return true;\n}\n\nexport function transformKForCallExpression(path: NodePath<t.CallExpression>): boolean {\n const targetProps = findDirectivePropsObject(path.node, 'k-for');\n if (!targetProps) {\n return false;\n }\n\n const parsedForText = readExpressionStringValue(targetProps.forProperty.value, path, 'k-for');\n const parsedFor = parseKForExpression(parsedForText);\n if (!parsedFor) {\n throw path.buildCodeFrameError(\n 'Invalid `k-for` expression. Expected `item in list` or `(item, index[, array]) in list`.',\n );\n }\n\n const sourceExpression = parseTextAsExpression(path, parsedFor.source, 'k-for source');\n const keyCallback = createKeyCallbackFromExpression(path, targetProps.keyProperty?.value, parsedFor.aliases);\n\n const renderCall = t.cloneNode(path.node, true) as t.CallExpression;\n const renderProps = renderCall.arguments[targetProps.argIndex];\n if (!renderProps || !t.isObjectExpression(renderProps)) {\n return false;\n }\n renderProps.properties = removeObjectProperties(renderProps.properties, ['k-for', 'k-key']);\n\n const callbackParams = parsedFor.aliases.map((alias) => t.identifier(alias));\n const callback = t.arrowFunctionExpression(callbackParams, renderCall);\n const ktForIdentifier = ensureKTForIdentifier(path);\n const props: t.ObjectProperty[] = [\n t.objectProperty(t.identifier('list'), sourceExpression),\n t.objectProperty(t.identifier('map'), callback),\n ];\n\n if (keyCallback) {\n props.splice(1, 0, t.objectProperty(t.identifier('key'), keyCallback));\n }\n\n path.replaceWith(t.callExpression(ktForIdentifier, [t.objectExpression(props)]));\n return true;\n}\n\nfunction parseKForExpression(raw: string): ParsedKForExpression | null {\n const value = raw.trim();\n if (!value) {\n return null;\n }\n\n const tupleMatch = KFOR_TUPLE_PATTERN.exec(value);\n if (tupleMatch) {\n const source = tupleMatch[5]?.trim();\n if (!source) {\n return null;\n }\n const aliases = [tupleMatch[1], tupleMatch[2], tupleMatch[3]].filter(\n (item): item is string => typeof item === 'string' && item.length > 0,\n );\n return {\n aliases,\n source,\n };\n }\n\n const singleMatch = KFOR_SINGLE_PATTERN.exec(value);\n if (singleMatch) {\n const source = singleMatch[3]?.trim();\n if (!source) {\n return null;\n }\n return {\n aliases: [singleMatch[1], 'index'],\n source,\n };\n }\n\n return null;\n}\n\nfunction parseTextAsExpression(path: KForTransformPath, text: string, label: string): t.Expression {\n try {\n const ast = parseSync(`(${text});`, {\n configFile: false,\n babelrc: false,\n sourceType: 'module',\n parserOpts: {\n plugins: ['typescript', 'jsx'],\n },\n });\n\n if (!ast) {\n throw new Error('Babel returned an empty AST.');\n }\n const statement = ast.program.body[0];\n if (!statement || !t.isExpressionStatement(statement)) {\n throw new Error('Expected an expression statement.');\n }\n return statement.expression;\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n throw path.buildCodeFrameError(`Failed to parse ${label}: ${message}`);\n }\n}\n\nfunction getAttribute(opening: t.JSXOpeningElement, name: string): t.JSXAttribute | undefined {\n const attributes = opening.attributes || [];\n for (let i = 0; i < attributes.length; i++) {\n const attr = attributes[i];\n if (!t.isJSXAttribute(attr) || !t.isJSXIdentifier(attr.name)) {\n continue;\n }\n if (attr.name.name === name) {\n return attr;\n }\n }\n return undefined;\n}\n\nfunction hasAttribute(opening: t.JSXOpeningElement, name: string): boolean {\n return !!getAttribute(opening, name);\n}\n\nfunction readAttributeStringValue(attr: t.JSXAttribute, path: NodePath<t.JSXElement>, attrName: string): string {\n if (!attr.value) {\n throw path.buildCodeFrameError(`Directive \\`${attrName}\\` requires a string value.`);\n }\n\n if (t.isStringLiteral(attr.value)) {\n return attr.value.value;\n }\n\n if (!t.isJSXExpressionContainer(attr.value)) {\n throw path.buildCodeFrameError(`Directive \\`${attrName}\\` must be a string literal.`);\n }\n if (t.isJSXEmptyExpression(attr.value.expression)) {\n throw path.buildCodeFrameError(`Directive \\`${attrName}\\` cannot be empty.`);\n }\n if (t.isStringLiteral(attr.value.expression)) {\n return attr.value.expression.value;\n }\n if (t.isTemplateLiteral(attr.value.expression) && attr.value.expression.expressions.length === 0) {\n return attr.value.expression.quasis[0]?.value.cooked ?? '';\n }\n\n throw path.buildCodeFrameError(`Directive \\`${attrName}\\` must be a string literal.`);\n}\n\nfunction readExpressionStringValue(\n expression: t.Expression | t.PrivateName | t.PatternLike | t.ArgumentPlaceholder,\n path: KForTransformPath,\n directiveName: string,\n): string {\n if (t.isStringLiteral(expression)) {\n return expression.value;\n }\n if (t.isTemplateLiteral(expression) && expression.expressions.length === 0) {\n return expression.quasis[0]?.value.cooked ?? '';\n }\n\n throw path.buildCodeFrameError(`Directive \\`${directiveName}\\` must be a string literal.`);\n}\n\nfunction hasStringLikeValue(attr: t.JSXAttribute): boolean {\n if (!attr.value) {\n return false;\n }\n if (t.isStringLiteral(attr.value)) {\n return true;\n }\n if (!t.isJSXExpressionContainer(attr.value)) {\n return false;\n }\n if (t.isStringLiteral(attr.value.expression)) {\n return true;\n }\n return t.isTemplateLiteral(attr.value.expression) && attr.value.expression.expressions.length === 0;\n}\n\nfunction hasStringLikeExpression(\n expression: t.Expression | t.PrivateName | t.PatternLike | t.ArgumentPlaceholder | undefined,\n): expression is t.StringLiteral | t.TemplateLiteral {\n if (!expression) {\n return false;\n }\n if (t.isStringLiteral(expression)) {\n return true;\n }\n return t.isTemplateLiteral(expression) && expression.expressions.length === 0;\n}\n\nfunction createKeyCallback(\n path: NodePath<t.JSXElement>,\n keyAttr: t.JSXAttribute | undefined,\n aliases: string[],\n): t.ArrowFunctionExpression | null {\n if (!keyAttr || !hasStringLikeValue(keyAttr)) {\n return null;\n }\n\n const keyText = readAttributeStringValue(keyAttr, path, 'k-key');\n const keyExpression = parseTextAsExpression(path, keyText, 'k-key');\n const params = aliases.map((alias) => t.identifier(alias));\n return t.arrowFunctionExpression(params, keyExpression);\n}\n\nfunction createKeyCallbackFromExpression(\n path: KForTransformPath,\n keyExpression: t.Expression | t.PrivateName | t.PatternLike | t.ArgumentPlaceholder | undefined,\n aliases: string[],\n): t.ArrowFunctionExpression | null {\n if (!hasStringLikeExpression(keyExpression)) {\n return null;\n }\n\n const keyText = readExpressionStringValue(keyExpression, path, 'k-key');\n const parsedKeyExpression = parseTextAsExpression(path, keyText, 'k-key');\n const params = aliases.map((alias) => t.identifier(alias));\n return t.arrowFunctionExpression(params, parsedKeyExpression);\n}\n\nfunction removeAttributes(\n attributes: Array<t.JSXAttribute | t.JSXSpreadAttribute> | undefined,\n names: string[],\n): Array<t.JSXAttribute | t.JSXSpreadAttribute> {\n const set = new Set(names);\n if (!attributes || attributes.length === 0) {\n return [];\n }\n return attributes.filter((attr) => {\n if (!t.isJSXAttribute(attr) || !t.isJSXIdentifier(attr.name)) {\n return true;\n }\n return !set.has(attr.name.name);\n });\n}\n\nfunction removeObjectProperties(\n properties: Array<t.ObjectMethod | t.ObjectProperty | t.SpreadElement>,\n names: string[],\n): Array<t.ObjectMethod | t.ObjectProperty | t.SpreadElement> {\n const set = new Set(names);\n return properties.filter((property) => {\n if (!t.isObjectProperty(property)) {\n return true;\n }\n const propertyName = getObjectPropertyName(property);\n if (!propertyName) {\n return true;\n }\n return !set.has(propertyName);\n });\n}\n\nfunction findDirectivePropsObject(\n callExpression: t.CallExpression,\n directiveName: string,\n):\n | {\n argIndex: number;\n forProperty: t.ObjectProperty;\n keyProperty: t.ObjectProperty | undefined;\n }\n | undefined {\n for (let i = 0; i < callExpression.arguments.length; i++) {\n const argument = callExpression.arguments[i];\n if (!t.isObjectExpression(argument)) {\n continue;\n }\n const forProperty = getObjectProperty(argument, directiveName);\n if (!forProperty) {\n continue;\n }\n return {\n argIndex: i,\n forProperty,\n keyProperty: getObjectProperty(argument, 'k-key'),\n };\n }\n return undefined;\n}\n\nfunction getObjectProperty(objectExpression: t.ObjectExpression, name: string): t.ObjectProperty | undefined {\n for (let i = 0; i < objectExpression.properties.length; i++) {\n const property = objectExpression.properties[i];\n if (!t.isObjectProperty(property)) {\n continue;\n }\n if (getObjectPropertyName(property) === name) {\n return property;\n }\n }\n return undefined;\n}\n\nfunction getObjectPropertyName(property: t.ObjectProperty): string | null {\n if (property.computed) {\n if (t.isStringLiteral(property.key)) {\n return property.key.value;\n }\n return null;\n }\n if (t.isIdentifier(property.key)) {\n return property.key.name;\n }\n if (t.isStringLiteral(property.key)) {\n return property.key.value;\n }\n return null;\n}\n\nfunction isInsideJSXChildren(path: NodePath<t.JSXElement>): boolean {\n if (!path.inList || path.listKey !== 'children') {\n return false;\n }\n const parent = path.parentPath;\n return !!parent && (parent.isJSXElement() || parent.isJSXFragment());\n}\n\nfunction ensureKTForIdentifier(path: KForTransformPath): t.Identifier {\n const programPath = getProgramPath(path);\n const cached = programPath.getData(KTFOR_HELPER_CACHE_KEY);\n if (t.isIdentifier(cached)) {\n return t.identifier(cached.name);\n }\n\n const importSource = hasImportSource(programPath, '@ktjs/core') ? '@ktjs/core' : 'kt.js';\n const localIdentifier = programPath.scope.generateUidIdentifier(KTFOR_COMPONENT_IMPORT_NAME);\n const importDeclaration = t.importDeclaration(\n [t.importSpecifier(localIdentifier, t.identifier(KTFOR_COMPONENT_IMPORT_NAME))],\n t.stringLiteral(importSource),\n );\n\n const insertIndex = findImportInsertIndex(programPath.node.body);\n programPath.node.body.splice(insertIndex, 0, importDeclaration);\n programPath.scope.crawl();\n programPath.setData(KTFOR_HELPER_CACHE_KEY, t.identifier(localIdentifier.name));\n return t.identifier(localIdentifier.name);\n}\n\nfunction getProgramPath(path: KForTransformPath): NodePath<t.Program> {\n const programPath = path.findParent((currentPath) => currentPath.isProgram()) as NodePath<t.Program> | null;\n if (!programPath) {\n throw path.buildCodeFrameError('Failed to resolve Program path while transforming `k-for`.');\n }\n return programPath;\n}\n\nfunction hasImportSource(programPath: NodePath<t.Program>, source: string): boolean {\n const body = programPath.node.body;\n for (let i = 0; i < body.length; i++) {\n const statement = body[i];\n if (!t.isImportDeclaration(statement)) {\n continue;\n }\n if (statement.source.value === source && statement.importKind !== 'type') {\n return true;\n }\n }\n return false;\n}\n\nfunction findImportInsertIndex(body: t.Statement[]): number {\n let index = 0;\n while (index < body.length) {\n const statement = body[index];\n if (t.isImportDeclaration(statement)) {\n index++;\n continue;\n }\n if (t.isExpressionStatement(statement) && t.isStringLiteral(statement.expression)) {\n index++;\n continue;\n }\n break;\n }\n return index;\n}\n","import type { PluginObj } from '@babel/core';\nimport { addFlagToSvgMathMLElement } from './svg-mathml-flag.js';\nimport { transformConditionalChains } from './if-else.js';\nimport { transformKFor, transformKForCallExpression, validateDirectiveCombinations } from './k-for.js';\n\nexport function transformerKTjsx(): PluginObj {\n return {\n name: 'ktjs-transformer',\n visitor: {\n JSXElement: {\n enter(path) {\n validateDirectiveCombinations(path);\n addFlagToSvgMathMLElement(path);\n transformConditionalChains(path);\n },\n exit(path) {\n transformKFor(path);\n },\n },\n CallExpression: {\n exit(path) {\n transformKForCallExpression(path);\n },\n },\n },\n };\n}\n\nexport default transformerKTjsx;\n","import { transformAsync, type TransformOptions } from '@babel/core';\nimport transformerKTjsx from './plugin.js';\n\nconst DEFAULT_PARSER_PLUGINS: NonNullable<TransformOptions['parserOpts']>['plugins'] = ['jsx', 'typescript'];\n\ntype ReservedTransformOptions =\n | 'ast'\n | 'babelrc'\n | 'configFile'\n | 'parserOpts'\n | 'plugins'\n | 'sourceMaps';\n\nexport type KTjsxTransformOptions = Omit<TransformOptions, ReservedTransformOptions> & {\n parserPlugins?: NonNullable<TransformOptions['parserOpts']>['plugins'];\n};\n\nexport async function transformWithKTjsx(code: string, options: KTjsxTransformOptions = {}) {\n const { parserPlugins = DEFAULT_PARSER_PLUGINS, ...babelConfig } = options;\n\n return transformAsync(code, {\n ast: false,\n babelrc: false,\n configFile: false,\n sourceMaps: true,\n parserOpts: {\n sourceType: 'module',\n plugins: parserPlugins,\n },\n plugins: [transformerKTjsx()],\n ...babelConfig,\n });\n}\n"],"names":["getProgramPath","isInsideJSXChildren","hasImportSource","findImportInsertIndex"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ktjs/transformer",
3
- "version": "0.2.4",
3
+ "version": "0.3.1",
4
4
  "type": "module",
5
5
  "module": "./dist/index.mjs",
6
6
  "types": "./dist/index.d.ts",