@litsx/babel-preset-litsx 0.9.0 → 0.9.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.
|
@@ -85,8 +85,9 @@ function normalizeInMemoryFiles(files) {
|
|
|
85
85
|
|
|
86
86
|
function createStructuralHookResolver(options = {}) {
|
|
87
87
|
const inMemoryFiles = normalizeInMemoryFiles(options.inMemoryFiles);
|
|
88
|
-
const
|
|
89
|
-
const
|
|
88
|
+
const compilationSession = options.__litsxCompilationSession || null;
|
|
89
|
+
const moduleCache = compilationSession?.importedModuleAnalysisCache || new Map();
|
|
90
|
+
const resolvedImportCache = compilationSession?.resolvedImportCache || new Map();
|
|
90
91
|
const providedTypescriptSession =
|
|
91
92
|
options?.typescriptSession?.projectSession || options?.typescriptSession || null;
|
|
92
93
|
const compilerOptionsCache = new Map();
|
|
@@ -252,6 +253,17 @@ function createStructuralHookResolver(options = {}) {
|
|
|
252
253
|
return resolved;
|
|
253
254
|
}
|
|
254
255
|
|
|
256
|
+
function resolveModuleReference(analysis, reference) {
|
|
257
|
+
if (!analysis || !reference?.source || reference.source === RUNTIME_MODULE) {
|
|
258
|
+
return reference?.resolvedSource || null;
|
|
259
|
+
}
|
|
260
|
+
if (Object.prototype.hasOwnProperty.call(reference, "resolvedSource")) {
|
|
261
|
+
return reference.resolvedSource;
|
|
262
|
+
}
|
|
263
|
+
reference.resolvedSource = resolveImport(analysis.filename, reference.source);
|
|
264
|
+
return reference.resolvedSource;
|
|
265
|
+
}
|
|
266
|
+
|
|
255
267
|
function getParserPluginsForModule(filename, source) {
|
|
256
268
|
if (/\.(?:[cm]?ts|tsx|litsx)$/i.test(filename)) {
|
|
257
269
|
return ["typescript"];
|
|
@@ -332,12 +344,14 @@ function createStructuralHookResolver(options = {}) {
|
|
|
332
344
|
filename: normalizedFilename,
|
|
333
345
|
importBindings: new Map(),
|
|
334
346
|
exportBindings: new Map(),
|
|
347
|
+
exportAllSources: [],
|
|
335
348
|
defineHookLocals: new Set(),
|
|
336
349
|
runtimeNamespaceLocals: new Set(),
|
|
337
350
|
structuralLocals: new Set(),
|
|
338
351
|
structuralLocalInfo: new Map(),
|
|
339
352
|
customHookPaths: new Map(),
|
|
340
353
|
customHookUsageCache: new Map(),
|
|
354
|
+
customHookRuntimeUsageCache: new Map(),
|
|
341
355
|
};
|
|
342
356
|
moduleCache.set(normalizedFilename, analysis);
|
|
343
357
|
|
|
@@ -359,7 +373,6 @@ function createStructuralHookResolver(options = {}) {
|
|
|
359
373
|
|
|
360
374
|
if (statementPath.isImportDeclaration()) {
|
|
361
375
|
const sourceValue = node.source.value;
|
|
362
|
-
const resolvedSource = resolveImport(normalizedFilename, sourceValue);
|
|
363
376
|
for (const specifier of node.specifiers) {
|
|
364
377
|
const localName = specifier.local?.name;
|
|
365
378
|
if (!localName) continue;
|
|
@@ -367,7 +380,6 @@ function createStructuralHookResolver(options = {}) {
|
|
|
367
380
|
analysis.importBindings.set(localName, {
|
|
368
381
|
importedName,
|
|
369
382
|
source: sourceValue,
|
|
370
|
-
resolvedSource,
|
|
371
383
|
});
|
|
372
384
|
if (sourceValue === RUNTIME_MODULE && importedName === "defineHook") {
|
|
373
385
|
analysis.defineHookLocals.add(localName);
|
|
@@ -414,6 +426,13 @@ function createStructuralHookResolver(options = {}) {
|
|
|
414
426
|
}
|
|
415
427
|
}
|
|
416
428
|
|
|
429
|
+
if (statementPath.isExportAllDeclaration()) {
|
|
430
|
+
analysis.exportAllSources.push({
|
|
431
|
+
source: node.source.value,
|
|
432
|
+
});
|
|
433
|
+
continue;
|
|
434
|
+
}
|
|
435
|
+
|
|
417
436
|
if (statementPath.isExportNamedDeclaration()) {
|
|
418
437
|
const exportNode = statementPath.node;
|
|
419
438
|
const declaration = exportNode.declaration;
|
|
@@ -440,7 +459,7 @@ function createStructuralHookResolver(options = {}) {
|
|
|
440
459
|
if (exportNode.source?.value) {
|
|
441
460
|
addExportBinding(analysis, exportedName, {
|
|
442
461
|
importedName: localName,
|
|
443
|
-
|
|
462
|
+
source: exportNode.source.value,
|
|
444
463
|
});
|
|
445
464
|
} else {
|
|
446
465
|
addExportBinding(analysis, exportedName, { localName });
|
|
@@ -456,16 +475,34 @@ function createStructuralHookResolver(options = {}) {
|
|
|
456
475
|
|
|
457
476
|
function isNamespaceStructuralUse(analysis, objectName, propertyName, seen) {
|
|
458
477
|
const importInfo = analysis.importBindings.get(objectName);
|
|
459
|
-
|
|
478
|
+
const resolvedSource = resolveModuleReference(analysis, importInfo);
|
|
479
|
+
if (!resolvedSource || importInfo.importedName !== "*") {
|
|
460
480
|
return false;
|
|
461
481
|
}
|
|
462
|
-
const importedModule = analyzeModule(
|
|
482
|
+
const importedModule = analyzeModule(resolvedSource);
|
|
463
483
|
return (
|
|
464
484
|
isStructuralExport(importedModule, propertyName, seen) ||
|
|
465
485
|
isStructuralCustomExport(importedModule, propertyName, seen)
|
|
466
486
|
);
|
|
467
487
|
}
|
|
468
488
|
|
|
489
|
+
function isNamespaceRuntimeHelperUse(analysis, objectName, propertyName) {
|
|
490
|
+
const importInfo = analysis.importBindings.get(objectName);
|
|
491
|
+
return (
|
|
492
|
+
importInfo?.source === RUNTIME_MODULE &&
|
|
493
|
+
importInfo.importedName === "*" &&
|
|
494
|
+
RUNTIME_HELPERS.includes(propertyName)
|
|
495
|
+
);
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
function isRuntimeHelperImport(analysis, localName) {
|
|
499
|
+
const importInfo = analysis.importBindings.get(localName);
|
|
500
|
+
return (
|
|
501
|
+
importInfo?.source === RUNTIME_MODULE &&
|
|
502
|
+
RUNTIME_HELPERS.includes(importInfo.importedName)
|
|
503
|
+
);
|
|
504
|
+
}
|
|
505
|
+
|
|
469
506
|
function localCustomHookUsesStructural(analysis, localName, seen = new Set()) {
|
|
470
507
|
if (!analysis || !localName) return false;
|
|
471
508
|
const key = `${analysis.filename}:local:${localName}`;
|
|
@@ -506,8 +543,9 @@ function createStructuralHookResolver(options = {}) {
|
|
|
506
543
|
return;
|
|
507
544
|
}
|
|
508
545
|
const importInfo = analysis.importBindings.get(name);
|
|
509
|
-
|
|
510
|
-
|
|
546
|
+
const resolvedSource = resolveModuleReference(analysis, importInfo);
|
|
547
|
+
if (resolvedSource && importInfo.importedName !== "*") {
|
|
548
|
+
const importedModule = analyzeModule(resolvedSource);
|
|
511
549
|
if (
|
|
512
550
|
isStructuralExport(importedModule, importInfo.importedName, nextSeen) ||
|
|
513
551
|
isStructuralCustomExport(importedModule, importInfo.importedName, nextSeen)
|
|
@@ -538,6 +576,85 @@ function createStructuralHookResolver(options = {}) {
|
|
|
538
576
|
return usesStructural;
|
|
539
577
|
}
|
|
540
578
|
|
|
579
|
+
function localCustomHookUsesRuntimeHook(analysis, localName, seen = new Set()) {
|
|
580
|
+
if (!analysis || !localName) return false;
|
|
581
|
+
const key = `${analysis.filename}:runtime-local:${localName}`;
|
|
582
|
+
if (analysis.customHookRuntimeUsageCache.has(localName)) {
|
|
583
|
+
return analysis.customHookRuntimeUsageCache.get(localName);
|
|
584
|
+
}
|
|
585
|
+
if (seen.has(key)) return false;
|
|
586
|
+
const nextSeen = new Set(seen);
|
|
587
|
+
nextSeen.add(key);
|
|
588
|
+
|
|
589
|
+
const fnPath = analysis.customHookPaths.get(localName);
|
|
590
|
+
if (!fnPath?.traverse) {
|
|
591
|
+
analysis.customHookRuntimeUsageCache.set(localName, false);
|
|
592
|
+
return false;
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
let usesRuntimeHook = false;
|
|
596
|
+
fnPath.traverse({
|
|
597
|
+
CallExpression(callPath) {
|
|
598
|
+
if (usesRuntimeHook) {
|
|
599
|
+
callPath.stop();
|
|
600
|
+
return;
|
|
601
|
+
}
|
|
602
|
+
const callee = callPath.get("callee");
|
|
603
|
+
if (callee.isIdentifier()) {
|
|
604
|
+
const name = callee.node.name;
|
|
605
|
+
if (isRuntimeHelperImport(analysis, name)) {
|
|
606
|
+
usesRuntimeHook = true;
|
|
607
|
+
callPath.stop();
|
|
608
|
+
return;
|
|
609
|
+
}
|
|
610
|
+
if (
|
|
611
|
+
analysis.customHookPaths.has(name) &&
|
|
612
|
+
localCustomHookUsesRuntimeHook(analysis, name, nextSeen)
|
|
613
|
+
) {
|
|
614
|
+
usesRuntimeHook = true;
|
|
615
|
+
callPath.stop();
|
|
616
|
+
return;
|
|
617
|
+
}
|
|
618
|
+
const importInfo = analysis.importBindings.get(name);
|
|
619
|
+
const resolvedSource = resolveModuleReference(analysis, importInfo);
|
|
620
|
+
if (resolvedSource && importInfo.importedName !== "*") {
|
|
621
|
+
const importedModule = analyzeModule(resolvedSource);
|
|
622
|
+
if (isRuntimeCustomExport(importedModule, importInfo.importedName, nextSeen)) {
|
|
623
|
+
usesRuntimeHook = true;
|
|
624
|
+
callPath.stop();
|
|
625
|
+
}
|
|
626
|
+
}
|
|
627
|
+
return;
|
|
628
|
+
}
|
|
629
|
+
|
|
630
|
+
if (callee.isMemberExpression({ computed: false })) {
|
|
631
|
+
const object = callee.get("object");
|
|
632
|
+
const property = callee.get("property");
|
|
633
|
+
if (!object.isIdentifier() || !property.isIdentifier()) {
|
|
634
|
+
return;
|
|
635
|
+
}
|
|
636
|
+
if (isNamespaceRuntimeHelperUse(analysis, object.node.name, property.node.name)) {
|
|
637
|
+
usesRuntimeHook = true;
|
|
638
|
+
callPath.stop();
|
|
639
|
+
return;
|
|
640
|
+
}
|
|
641
|
+
const importInfo = analysis.importBindings.get(object.node.name);
|
|
642
|
+
const resolvedSource = resolveModuleReference(analysis, importInfo);
|
|
643
|
+
if (resolvedSource && importInfo.importedName === "*") {
|
|
644
|
+
const importedModule = analyzeModule(resolvedSource);
|
|
645
|
+
if (isRuntimeCustomExport(importedModule, property.node.name, nextSeen)) {
|
|
646
|
+
usesRuntimeHook = true;
|
|
647
|
+
callPath.stop();
|
|
648
|
+
}
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
},
|
|
652
|
+
});
|
|
653
|
+
|
|
654
|
+
analysis.customHookRuntimeUsageCache.set(localName, usesRuntimeHook);
|
|
655
|
+
return usesRuntimeHook;
|
|
656
|
+
}
|
|
657
|
+
|
|
541
658
|
function getStructuralExportInfo(analysis, exportedName, seen = new Set()) {
|
|
542
659
|
if (!analysis || !exportedName) return false;
|
|
543
660
|
const key = `${analysis.filename}:${exportedName}`;
|
|
@@ -547,12 +664,23 @@ function createStructuralHookResolver(options = {}) {
|
|
|
547
664
|
|
|
548
665
|
const exportInfo = analysis.exportBindings.get(exportedName);
|
|
549
666
|
if (!exportInfo) {
|
|
667
|
+
for (const exportAll of analysis.exportAllSources || []) {
|
|
668
|
+
const resolvedSource = resolveModuleReference(analysis, exportAll);
|
|
669
|
+
if (!resolvedSource) continue;
|
|
670
|
+
const info = getStructuralExportInfo(
|
|
671
|
+
analyzeModule(resolvedSource),
|
|
672
|
+
exportedName,
|
|
673
|
+
nextSeen
|
|
674
|
+
);
|
|
675
|
+
if (info) return info;
|
|
676
|
+
}
|
|
550
677
|
return false;
|
|
551
678
|
}
|
|
552
679
|
|
|
553
|
-
|
|
680
|
+
const exportSource = resolveModuleReference(analysis, exportInfo);
|
|
681
|
+
if (exportSource) {
|
|
554
682
|
return getStructuralExportInfo(
|
|
555
|
-
analyzeModule(
|
|
683
|
+
analyzeModule(exportSource),
|
|
556
684
|
exportInfo.importedName,
|
|
557
685
|
nextSeen
|
|
558
686
|
);
|
|
@@ -569,9 +697,10 @@ function createStructuralHookResolver(options = {}) {
|
|
|
569
697
|
}
|
|
570
698
|
|
|
571
699
|
const importInfo = analysis.importBindings.get(exportInfo.localName);
|
|
572
|
-
|
|
700
|
+
const importSource = resolveModuleReference(analysis, importInfo);
|
|
701
|
+
if (importSource && importInfo.importedName !== "*") {
|
|
573
702
|
return getStructuralExportInfo(
|
|
574
|
-
analyzeModule(
|
|
703
|
+
analyzeModule(importSource),
|
|
575
704
|
importInfo.importedName,
|
|
576
705
|
nextSeen
|
|
577
706
|
);
|
|
@@ -593,12 +722,26 @@ function createStructuralHookResolver(options = {}) {
|
|
|
593
722
|
|
|
594
723
|
const exportInfo = analysis.exportBindings.get(exportedName);
|
|
595
724
|
if (!exportInfo) {
|
|
725
|
+
for (const exportAll of analysis.exportAllSources || []) {
|
|
726
|
+
const resolvedSource = resolveModuleReference(analysis, exportAll);
|
|
727
|
+
if (!resolvedSource) continue;
|
|
728
|
+
if (
|
|
729
|
+
isStructuralCustomExport(
|
|
730
|
+
analyzeModule(resolvedSource),
|
|
731
|
+
exportedName,
|
|
732
|
+
nextSeen
|
|
733
|
+
)
|
|
734
|
+
) {
|
|
735
|
+
return true;
|
|
736
|
+
}
|
|
737
|
+
}
|
|
596
738
|
return false;
|
|
597
739
|
}
|
|
598
740
|
|
|
599
|
-
|
|
741
|
+
const exportSource = resolveModuleReference(analysis, exportInfo);
|
|
742
|
+
if (exportSource) {
|
|
600
743
|
return isStructuralCustomExport(
|
|
601
|
-
analyzeModule(
|
|
744
|
+
analyzeModule(exportSource),
|
|
602
745
|
exportInfo.importedName,
|
|
603
746
|
nextSeen
|
|
604
747
|
);
|
|
@@ -609,9 +752,91 @@ function createStructuralHookResolver(options = {}) {
|
|
|
609
752
|
}
|
|
610
753
|
|
|
611
754
|
const importInfo = analysis.importBindings.get(exportInfo.localName);
|
|
612
|
-
|
|
755
|
+
const importSource = resolveModuleReference(analysis, importInfo);
|
|
756
|
+
if (importSource && importInfo.importedName !== "*") {
|
|
613
757
|
return isStructuralCustomExport(
|
|
614
|
-
analyzeModule(
|
|
758
|
+
analyzeModule(importSource),
|
|
759
|
+
importInfo.importedName,
|
|
760
|
+
nextSeen
|
|
761
|
+
);
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
return false;
|
|
765
|
+
}
|
|
766
|
+
|
|
767
|
+
function hasExportBinding(analysis, exportedName, seen = new Set()) {
|
|
768
|
+
if (!analysis || !exportedName) return "unresolved";
|
|
769
|
+
const key = `${analysis.filename}:has-export:${exportedName}`;
|
|
770
|
+
if (seen.has(key)) return false;
|
|
771
|
+
const nextSeen = new Set(seen);
|
|
772
|
+
nextSeen.add(key);
|
|
773
|
+
|
|
774
|
+
if (analysis.exportBindings.has(exportedName)) {
|
|
775
|
+
return true;
|
|
776
|
+
}
|
|
777
|
+
|
|
778
|
+
let sawUnresolvedExportAll = false;
|
|
779
|
+
for (const exportAll of analysis.exportAllSources || []) {
|
|
780
|
+
const resolvedSource = resolveModuleReference(analysis, exportAll);
|
|
781
|
+
if (!resolvedSource) {
|
|
782
|
+
sawUnresolvedExportAll = true;
|
|
783
|
+
continue;
|
|
784
|
+
}
|
|
785
|
+
const result = hasExportBinding(
|
|
786
|
+
analyzeModule(resolvedSource),
|
|
787
|
+
exportedName,
|
|
788
|
+
nextSeen
|
|
789
|
+
);
|
|
790
|
+
if (result === true) return true;
|
|
791
|
+
if (result === "unresolved") sawUnresolvedExportAll = true;
|
|
792
|
+
}
|
|
793
|
+
|
|
794
|
+
return sawUnresolvedExportAll ? "unresolved" : false;
|
|
795
|
+
}
|
|
796
|
+
|
|
797
|
+
function isRuntimeCustomExport(analysis, exportedName, seen = new Set()) {
|
|
798
|
+
if (!analysis || !exportedName) return false;
|
|
799
|
+
const key = `${analysis.filename}:runtime-custom:${exportedName}`;
|
|
800
|
+
if (seen.has(key)) return false;
|
|
801
|
+
const nextSeen = new Set(seen);
|
|
802
|
+
nextSeen.add(key);
|
|
803
|
+
|
|
804
|
+
const exportInfo = analysis.exportBindings.get(exportedName);
|
|
805
|
+
if (!exportInfo) {
|
|
806
|
+
for (const exportAll of analysis.exportAllSources || []) {
|
|
807
|
+
const resolvedSource = resolveModuleReference(analysis, exportAll);
|
|
808
|
+
if (!resolvedSource) continue;
|
|
809
|
+
if (
|
|
810
|
+
isRuntimeCustomExport(
|
|
811
|
+
analyzeModule(resolvedSource),
|
|
812
|
+
exportedName,
|
|
813
|
+
nextSeen
|
|
814
|
+
)
|
|
815
|
+
) {
|
|
816
|
+
return true;
|
|
817
|
+
}
|
|
818
|
+
}
|
|
819
|
+
return false;
|
|
820
|
+
}
|
|
821
|
+
|
|
822
|
+
const exportSource = resolveModuleReference(analysis, exportInfo);
|
|
823
|
+
if (exportSource) {
|
|
824
|
+
return isRuntimeCustomExport(
|
|
825
|
+
analyzeModule(exportSource),
|
|
826
|
+
exportInfo.importedName,
|
|
827
|
+
nextSeen
|
|
828
|
+
);
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
if (localCustomHookUsesRuntimeHook(analysis, exportInfo.localName, nextSeen)) {
|
|
832
|
+
return true;
|
|
833
|
+
}
|
|
834
|
+
|
|
835
|
+
const importInfo = analysis.importBindings.get(exportInfo.localName);
|
|
836
|
+
const importSource = resolveModuleReference(analysis, importInfo);
|
|
837
|
+
if (importSource && importInfo.importedName !== "*") {
|
|
838
|
+
return isRuntimeCustomExport(
|
|
839
|
+
analyzeModule(importSource),
|
|
615
840
|
importInfo.importedName,
|
|
616
841
|
nextSeen
|
|
617
842
|
);
|
|
@@ -620,10 +845,22 @@ function createStructuralHookResolver(options = {}) {
|
|
|
620
845
|
return false;
|
|
621
846
|
}
|
|
622
847
|
|
|
623
|
-
return function structuralHookResolver({ filename, source, importedName }) {
|
|
848
|
+
return function structuralHookResolver({ filename, source, importedName, runtimeCustomOnly = false }) {
|
|
624
849
|
const resolved = resolveImport(filename, source);
|
|
625
|
-
if (!resolved) return false;
|
|
850
|
+
if (!resolved) return runtimeCustomOnly ? "unresolved-custom-hook" : false;
|
|
626
851
|
const analysis = analyzeModule(resolved);
|
|
852
|
+
if (!analysis && runtimeCustomOnly) {
|
|
853
|
+
return "unresolved-custom-hook";
|
|
854
|
+
}
|
|
855
|
+
if (runtimeCustomOnly) {
|
|
856
|
+
const exportStatus = hasExportBinding(analysis, importedName);
|
|
857
|
+
if (exportStatus !== true) {
|
|
858
|
+
return "unresolved-custom-hook";
|
|
859
|
+
}
|
|
860
|
+
return isRuntimeCustomExport(analysis, importedName)
|
|
861
|
+
? "runtime-custom-hook"
|
|
862
|
+
: false;
|
|
863
|
+
}
|
|
627
864
|
const structuralInfo = getStructuralExportInfo(analysis, importedName);
|
|
628
865
|
if (structuralInfo) {
|
|
629
866
|
return structuralInfo;
|
|
@@ -667,6 +904,8 @@ function createStableIdCallsiteMetadata(callPath, state, t) {
|
|
|
667
904
|
}
|
|
668
905
|
|
|
669
906
|
function transformLitsxHooks(api, options = {}) {
|
|
907
|
+
const structuralHookResolver = createStructuralHookResolver(options);
|
|
908
|
+
const ignoredCustomHookSources = new Set(options.ignoredCustomHookSources || []);
|
|
670
909
|
const plugin = babelPluginSharedHooks.createRuntimeHooksTransform({
|
|
671
910
|
pluginName: "transform-litsx-hooks",
|
|
672
911
|
runtimeModule: RUNTIME_MODULE,
|
|
@@ -679,7 +918,22 @@ function transformLitsxHooks(api, options = {}) {
|
|
|
679
918
|
|
|
680
919
|
return plugin(api, {
|
|
681
920
|
...options,
|
|
682
|
-
structuralHookResolver
|
|
921
|
+
structuralHookResolver,
|
|
922
|
+
customHookResolver({ filename, source, importedName }) {
|
|
923
|
+
if (ignoredCustomHookSources.has(source)) {
|
|
924
|
+
return false;
|
|
925
|
+
}
|
|
926
|
+
const result = structuralHookResolver({
|
|
927
|
+
filename,
|
|
928
|
+
source,
|
|
929
|
+
importedName,
|
|
930
|
+
runtimeCustomOnly: true,
|
|
931
|
+
});
|
|
932
|
+
if (result === "unresolved-custom-hook") {
|
|
933
|
+
return result;
|
|
934
|
+
}
|
|
935
|
+
return result === "runtime-custom-hook";
|
|
936
|
+
},
|
|
683
937
|
});
|
|
684
938
|
}
|
|
685
939
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transform-litsx-hooks.cjs","sources":["../../src/internal/transform-litsx-hooks.js"],"sourcesContent":["import { createRuntimeHooksTransform } from \"@litsx/babel-plugin-shared-hooks\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport traverse from \"@babel/traverse\";\nimport parser from \"@litsx/babel-parser\";\nimport { ensureTypescriptModule } from \"./transform-litsx-properties.js\";\n\nconst RUNTIME_MODULE = \"@litsx/core\";\nconst IMPORT_SOURCES = [RUNTIME_MODULE];\n\nconst RUNTIME_HELPERS = [\n \"useOnConnect\",\n \"useAfterUpdate\",\n \"useOnCommit\",\n \"useMemoValue\",\n \"useStableCallback\",\n \"useEvent\",\n \"useEmit\",\n \"usePrevious\",\n \"useReducedState\",\n \"useState\",\n \"useControlledState\",\n \"useAsyncState\",\n \"useOptimistic\",\n \"useExpose\",\n \"useExternalStore\",\n \"useHost\",\n \"useHostContent\",\n \"useSlot\",\n \"useTextContent\",\n \"useTransition\",\n \"useDeferredValue\",\n \"useStyle\",\n \"useRef\",\n \"useCallbackRef\",\n \"useStableId\",\n];\n\nconst SOURCE_EXTENSIONS = [\n \"\",\n \".litsx\",\n \".tsx\",\n \".ts\",\n \".jsx\",\n \".js\",\n \".mjs\",\n \".cjs\",\n];\nconst DEFAULT_MODULE_RESOLUTION_OPTIONS = {\n moduleResolution: 100,\n allowJs: true,\n checkJs: false,\n jsx: 1,\n target: 99,\n module: 99,\n esModuleInterop: true,\n allowSyntheticDefaultImports: true,\n};\n\nfunction normalizeFilePath(value) {\n return normalizePath(value);\n}\n\nfunction getTraverse() {\n return traverse.default || traverse;\n}\n\nfunction normalizeInMemoryFiles(files) {\n const normalized = new Map();\n if (!files || typeof files !== \"object\") {\n return normalized;\n }\n for (const [filename, source] of Object.entries(files)) {\n if (typeof source !== \"string\") continue;\n normalized.set(normalizeFilePath(filename), source);\n }\n return normalized;\n}\n\nfunction createStructuralHookResolver(options = {}) {\n const inMemoryFiles = normalizeInMemoryFiles(options.inMemoryFiles);\n const moduleCache = new Map();\n const resolvedImportCache = new Map();\n const providedTypescriptSession =\n options?.typescriptSession?.projectSession || options?.typescriptSession || null;\n const compilerOptionsCache = new Map();\n const moduleResolutionHostCache = new Map();\n\n function getProgramForFile(filename) {\n if (!providedTypescriptSession?.getProgram || !filename) {\n return null;\n }\n\n try {\n if (providedTypescriptSession.kind === \"project\") {\n return providedTypescriptSession.getProgram();\n }\n if (providedTypescriptSession.kind === \"standalone\") {\n return providedTypescriptSession.getProgram(normalizeFilePath(filename));\n }\n } catch {\n return null;\n }\n\n return null;\n }\n\n function getCompilerOptions(filename) {\n const cacheKey = normalizeFilePath(filename);\n if (compilerOptionsCache.has(cacheKey)) {\n return compilerOptionsCache.get(cacheKey);\n }\n const program = getProgramForFile(filename);\n const compilerOptions =\n program?.getCompilerOptions?.() ||\n options.compilerOptions ||\n DEFAULT_MODULE_RESOLUTION_OPTIONS;\n compilerOptionsCache.set(cacheKey, compilerOptions);\n return compilerOptions;\n }\n\n function getModuleResolutionHost(filename) {\n const cacheKey = normalizeFilePath(filename);\n if (moduleResolutionHostCache.has(cacheKey)) {\n return moduleResolutionHostCache.get(cacheKey);\n }\n const ts = ensureTypescriptModule();\n const host = providedTypescriptSession?.host || ts.sys;\n moduleResolutionHostCache.set(cacheKey, host);\n return host;\n }\n\n function fileExists(filename) {\n const normalized = normalizeFilePath(filename);\n return inMemoryFiles.has(normalized) || fs.existsSync(normalized);\n }\n\n function readFile(filename) {\n const normalized = normalizeFilePath(filename);\n if (inMemoryFiles.has(normalized)) {\n return inMemoryFiles.get(normalized);\n }\n try {\n return fs.readFileSync(normalized, \"utf8\");\n } catch {\n return null;\n }\n }\n\n function resolveWithExtensions(base) {\n const normalizedBase = normalizeFilePath(base);\n for (const ext of SOURCE_EXTENSIONS) {\n const candidate = `${normalizedBase}${ext}`;\n if (fileExists(candidate)) {\n return normalizeFilePath(candidate);\n }\n }\n for (const ext of SOURCE_EXTENSIONS.filter(Boolean)) {\n const candidate = normalizeFilePath(path.join(base, `index${ext}`));\n if (fileExists(candidate)) {\n return candidate;\n }\n }\n return null;\n }\n\n function resolvePathAlias(containingFile, source) {\n const compilerOptions = getCompilerOptions(containingFile) || {};\n const baseUrl = compilerOptions.baseUrl\n ? normalizeFilePath(\n path.isAbsolute(compilerOptions.baseUrl)\n ? compilerOptions.baseUrl\n : path.resolve(path.dirname(containingFile), compilerOptions.baseUrl)\n )\n : normalizeFilePath(path.dirname(containingFile));\n const pathMappings = compilerOptions.paths || {};\n\n for (const [pattern, substitutions] of Object.entries(pathMappings)) {\n const starIndex = pattern.indexOf(\"*\");\n const isStarPattern = starIndex !== -1;\n const prefix = isStarPattern ? pattern.slice(0, starIndex) : pattern;\n const suffix = isStarPattern ? pattern.slice(starIndex + 1) : \"\";\n\n if (isStarPattern) {\n if (!source.startsWith(prefix) || !source.endsWith(suffix)) {\n continue;\n }\n } else if (source !== pattern) {\n continue;\n }\n\n const wildcardValue = isStarPattern\n ? source.slice(prefix.length, source.length - suffix.length)\n : \"\";\n\n for (const substitution of substitutions || []) {\n const substituted = isStarPattern\n ? substitution.replace(\"*\", wildcardValue)\n : substitution;\n const candidateBase = path.isAbsolute(substituted)\n ? substituted\n : path.join(baseUrl, substituted);\n const resolved = resolveWithExtensions(candidateBase);\n if (resolved) {\n return resolved;\n }\n }\n }\n\n return null;\n }\n\n function resolveImport(containingFile, source) {\n if (typeof source !== \"string\" || !containingFile) {\n return null;\n }\n const cacheKey = `${normalizeFilePath(containingFile)}::${source}`;\n if (resolvedImportCache.has(cacheKey)) {\n return resolvedImportCache.get(cacheKey);\n }\n\n const baseDir = path.dirname(containingFile);\n let resolved = source.startsWith(\".\") || source.startsWith(\"/\")\n ? resolveWithExtensions(path.resolve(baseDir, source))\n : resolvePathAlias(containingFile, source);\n\n if (!resolved) {\n const ts = ensureTypescriptModule();\n try {\n const resolution = ts.resolveModuleName(\n source,\n normalizeFilePath(containingFile),\n getCompilerOptions(containingFile),\n getModuleResolutionHost(containingFile)\n );\n const resolvedFileName = resolution?.resolvedModule?.resolvedFileName;\n if (resolvedFileName) {\n resolved = resolveWithExtensions(resolvedFileName) || normalizeFilePath(resolvedFileName);\n }\n } catch {\n resolved = null;\n }\n }\n\n resolvedImportCache.set(cacheKey, resolved);\n return resolved;\n }\n\n function getParserPluginsForModule(filename, source) {\n if (/\\.(?:[cm]?ts|tsx|litsx)$/i.test(filename)) {\n return [\"typescript\"];\n }\n if (/\\b(?:as|satisfies)\\s+[^;,)]+/.test(source)) {\n return [\"typescript\"];\n }\n return [];\n }\n\n function getImportedName(specifier) {\n if (specifier.type === \"ImportDefaultSpecifier\") return \"default\";\n if (specifier.type === \"ImportNamespaceSpecifier\") return \"*\";\n return specifier.imported?.name ?? specifier.imported?.value ?? null;\n }\n\n function isDefineHookCallee(node, analysis) {\n if (!node) return false;\n if (node.type === \"Identifier\") {\n return analysis.defineHookLocals.has(node.name);\n }\n if (\n node.type === \"MemberExpression\" &&\n !node.computed &&\n node.property?.type === \"Identifier\" &&\n node.property.name === \"defineHook\" &&\n node.object?.type === \"Identifier\"\n ) {\n return analysis.runtimeNamespaceLocals.has(node.object.name);\n }\n return false;\n }\n\n function addExportBinding(analysis, exportedName, info) {\n if (exportedName) {\n analysis.exportBindings.set(exportedName, info);\n }\n }\n\n function getDefineHookPhaseInfo(init) {\n const definition = init?.arguments?.[0];\n if (!definition || definition.type !== \"ObjectExpression\") {\n return {\n hasStaticPhase: false,\n hasInstancePhase: true,\n };\n }\n const hasProperty = (name) => definition.properties.some((property) => {\n if (property.type !== \"ObjectProperty\" && property.type !== \"ObjectMethod\") {\n return false;\n }\n const key = property.key;\n return (\n (key.type === \"Identifier\" && key.name === name) ||\n (key.type === \"StringLiteral\" && key.value === name)\n );\n });\n return {\n hasStaticPhase: hasProperty(\"static\"),\n hasInstancePhase: hasProperty(\"setup\") || hasProperty(\"createState\") || hasProperty(\"middlewares\"),\n };\n }\n\n function analyzeModule(filename) {\n const normalizedFilename = normalizeFilePath(filename);\n if (!normalizedFilename) return null;\n if (moduleCache.has(normalizedFilename)) {\n return moduleCache.get(normalizedFilename);\n }\n\n const source = readFile(normalizedFilename);\n if (typeof source !== \"string\") {\n moduleCache.set(normalizedFilename, null);\n return null;\n }\n\n const analysis = {\n filename: normalizedFilename,\n importBindings: new Map(),\n exportBindings: new Map(),\n defineHookLocals: new Set(),\n runtimeNamespaceLocals: new Set(),\n structuralLocals: new Set(),\n structuralLocalInfo: new Map(),\n customHookPaths: new Map(),\n customHookUsageCache: new Map(),\n };\n moduleCache.set(normalizedFilename, analysis);\n\n let ast;\n try {\n ast = parser.parse(source, {\n sourceType: \"module\",\n plugins: getParserPluginsForModule(normalizedFilename, source),\n });\n } catch {\n moduleCache.set(normalizedFilename, null);\n return null;\n }\n\n getTraverse()(ast, {\n Program(programPath) {\n for (const statementPath of programPath.get(\"body\")) {\n const node = statementPath.node;\n\n if (statementPath.isImportDeclaration()) {\n const sourceValue = node.source.value;\n const resolvedSource = resolveImport(normalizedFilename, sourceValue);\n for (const specifier of node.specifiers) {\n const localName = specifier.local?.name;\n if (!localName) continue;\n const importedName = getImportedName(specifier);\n analysis.importBindings.set(localName, {\n importedName,\n source: sourceValue,\n resolvedSource,\n });\n if (sourceValue === RUNTIME_MODULE && importedName === \"defineHook\") {\n analysis.defineHookLocals.add(localName);\n }\n if (\n sourceValue === RUNTIME_MODULE &&\n (specifier.type === \"ImportNamespaceSpecifier\" ||\n specifier.type === \"ImportDefaultSpecifier\")\n ) {\n analysis.runtimeNamespaceLocals.add(localName);\n }\n }\n continue;\n }\n\n const declarationPath = statementPath.isExportNamedDeclaration()\n ? statementPath.get(\"declaration\")\n : statementPath;\n\n if (declarationPath?.isFunctionDeclaration?.()) {\n const localName = declarationPath.node.id?.name;\n if (localName && /^use[A-Z0-9]/.test(localName)) {\n analysis.customHookPaths.set(localName, declarationPath);\n }\n }\n\n if (declarationPath?.isVariableDeclaration?.()) {\n for (const declaratorPath of declarationPath.get(\"declarations\")) {\n const id = declaratorPath.node.id;\n if (id?.type !== \"Identifier\") continue;\n const init = declaratorPath.node.init;\n if (init?.type === \"CallExpression\" && isDefineHookCallee(init.callee, analysis)) {\n analysis.structuralLocals.add(id.name);\n analysis.structuralLocalInfo.set(id.name, getDefineHookPhaseInfo(init));\n } else if (\n /^use[A-Z0-9]/.test(id.name) &&\n (\n init?.type === \"FunctionExpression\" ||\n init?.type === \"ArrowFunctionExpression\"\n )\n ) {\n analysis.customHookPaths.set(id.name, declaratorPath.get(\"init\"));\n }\n }\n }\n\n if (statementPath.isExportNamedDeclaration()) {\n const exportNode = statementPath.node;\n const declaration = exportNode.declaration;\n if (declaration?.type === \"VariableDeclaration\") {\n for (const declarator of declaration.declarations) {\n const localName = declarator.id?.name;\n if (localName) {\n addExportBinding(analysis, localName, { localName });\n }\n }\n } else if (\n declaration?.type === \"FunctionDeclaration\" ||\n declaration?.type === \"ClassDeclaration\"\n ) {\n addExportBinding(analysis, declaration.id?.name, {\n localName: declaration.id?.name,\n });\n }\n\n for (const specifier of exportNode.specifiers) {\n const exportedName = specifier.exported?.name ?? specifier.exported?.value ?? null;\n if (!exportedName) continue;\n const localName = specifier.local?.name ?? specifier.local?.value ?? exportedName;\n if (exportNode.source?.value) {\n addExportBinding(analysis, exportedName, {\n importedName: localName,\n resolvedSource: resolveImport(normalizedFilename, exportNode.source.value),\n });\n } else {\n addExportBinding(analysis, exportedName, { localName });\n }\n }\n }\n }\n },\n });\n\n return analysis;\n }\n\n function isNamespaceStructuralUse(analysis, objectName, propertyName, seen) {\n const importInfo = analysis.importBindings.get(objectName);\n if (!importInfo?.resolvedSource || importInfo.importedName !== \"*\") {\n return false;\n }\n const importedModule = analyzeModule(importInfo.resolvedSource);\n return (\n isStructuralExport(importedModule, propertyName, seen) ||\n isStructuralCustomExport(importedModule, propertyName, seen)\n );\n }\n\n function localCustomHookUsesStructural(analysis, localName, seen = new Set()) {\n if (!analysis || !localName) return false;\n const key = `${analysis.filename}:local:${localName}`;\n if (analysis.customHookUsageCache.has(localName)) {\n return analysis.customHookUsageCache.get(localName);\n }\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const fnPath = analysis.customHookPaths.get(localName);\n if (!fnPath?.traverse) {\n analysis.customHookUsageCache.set(localName, false);\n return false;\n }\n\n let usesStructural = false;\n fnPath.traverse({\n CallExpression(callPath) {\n if (usesStructural) {\n callPath.stop();\n return;\n }\n const callee = callPath.get(\"callee\");\n if (callee.isIdentifier()) {\n const name = callee.node.name;\n if (analysis.structuralLocals.has(name)) {\n usesStructural = true;\n callPath.stop();\n return;\n }\n if (\n analysis.customHookPaths.has(name) &&\n localCustomHookUsesStructural(analysis, name, nextSeen)\n ) {\n usesStructural = true;\n callPath.stop();\n return;\n }\n const importInfo = analysis.importBindings.get(name);\n if (importInfo?.resolvedSource && importInfo.importedName !== \"*\") {\n const importedModule = analyzeModule(importInfo.resolvedSource);\n if (\n isStructuralExport(importedModule, importInfo.importedName, nextSeen) ||\n isStructuralCustomExport(importedModule, importInfo.importedName, nextSeen)\n ) {\n usesStructural = true;\n callPath.stop();\n }\n }\n return;\n }\n\n if (callee.isMemberExpression({ computed: false })) {\n const object = callee.get(\"object\");\n const property = callee.get(\"property\");\n if (\n object.isIdentifier() &&\n property.isIdentifier() &&\n isNamespaceStructuralUse(analysis, object.node.name, property.node.name, nextSeen)\n ) {\n usesStructural = true;\n callPath.stop();\n }\n }\n },\n });\n\n analysis.customHookUsageCache.set(localName, usesStructural);\n return usesStructural;\n }\n\n function getStructuralExportInfo(analysis, exportedName, seen = new Set()) {\n if (!analysis || !exportedName) return false;\n const key = `${analysis.filename}:${exportedName}`;\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const exportInfo = analysis.exportBindings.get(exportedName);\n if (!exportInfo) {\n return false;\n }\n\n if (exportInfo.resolvedSource) {\n return getStructuralExportInfo(\n analyzeModule(exportInfo.resolvedSource),\n exportInfo.importedName,\n nextSeen\n );\n }\n\n if (analysis.structuralLocals.has(exportInfo.localName)) {\n return {\n kind: \"structural-hook\",\n ...(analysis.structuralLocalInfo.get(exportInfo.localName) || {\n hasStaticPhase: false,\n hasInstancePhase: true,\n }),\n };\n }\n\n const importInfo = analysis.importBindings.get(exportInfo.localName);\n if (importInfo?.resolvedSource && importInfo.importedName !== \"*\") {\n return getStructuralExportInfo(\n analyzeModule(importInfo.resolvedSource),\n importInfo.importedName,\n nextSeen\n );\n }\n\n return false;\n }\n\n function isStructuralExport(analysis, exportedName, seen = new Set()) {\n return Boolean(getStructuralExportInfo(analysis, exportedName, seen));\n }\n\n function isStructuralCustomExport(analysis, exportedName, seen = new Set()) {\n if (!analysis || !exportedName) return false;\n const key = `${analysis.filename}:custom:${exportedName}`;\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const exportInfo = analysis.exportBindings.get(exportedName);\n if (!exportInfo) {\n return false;\n }\n\n if (exportInfo.resolvedSource) {\n return isStructuralCustomExport(\n analyzeModule(exportInfo.resolvedSource),\n exportInfo.importedName,\n nextSeen\n );\n }\n\n if (localCustomHookUsesStructural(analysis, exportInfo.localName, nextSeen)) {\n return true;\n }\n\n const importInfo = analysis.importBindings.get(exportInfo.localName);\n if (importInfo?.resolvedSource && importInfo.importedName !== \"*\") {\n return isStructuralCustomExport(\n analyzeModule(importInfo.resolvedSource),\n importInfo.importedName,\n nextSeen\n );\n }\n\n return false;\n }\n\n return function structuralHookResolver({ filename, source, importedName }) {\n const resolved = resolveImport(filename, source);\n if (!resolved) return false;\n const analysis = analyzeModule(resolved);\n const structuralInfo = getStructuralExportInfo(analysis, importedName);\n if (structuralInfo) {\n return structuralInfo;\n }\n if (isStructuralCustomExport(analysis, importedName)) {\n return \"structural-custom-hook\";\n }\n return false;\n };\n}\n\nfunction normalizePath(value) {\n return String(value || \"\").replace(/\\\\/g, \"/\");\n}\n\nfunction hashStableId(value) {\n let hash = 2166136261;\n const text = String(value);\n for (let index = 0; index < text.length; index += 1) {\n hash ^= text.charCodeAt(index);\n hash = Math.imul(hash, 16777619);\n }\n return (hash >>> 0).toString(36);\n}\n\nfunction createStableIdCallsiteMetadata(callPath, state, t) {\n const filename =\n state.file?.opts?.sourceFileName ||\n state.file?.opts?.filename ||\n state.filename ||\n \"\";\n const normalizedFilename = normalizePath(filename);\n const loc = callPath.node.loc?.start ?? null;\n const start = typeof callPath.node.start === \"number\"\n ? callPath.node.start\n : 0;\n const line = loc?.line ?? 0;\n const column = loc?.column ?? 0;\n const seed = `${normalizedFilename}:${line}:${column}:${start}`;\n return t.stringLiteral(`litsx-stable-${hashStableId(seed)}`);\n}\n\nexport default function transformLitsxHooks(api, options = {}) {\n const plugin = createRuntimeHooksTransform({\n pluginName: \"transform-litsx-hooks\",\n runtimeModule: RUNTIME_MODULE,\n importSources: IMPORT_SOURCES,\n helperNames: RUNTIME_HELPERS,\n callMetadataByHelper: {\n useStableId: createStableIdCallsiteMetadata,\n },\n });\n\n return plugin(api, {\n ...options,\n structuralHookResolver: createStructuralHookResolver(options),\n });\n}\n"],"names":["ensureTypescriptModule","createRuntimeHooksTransform"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transform-litsx-hooks.cjs","sources":["../../src/internal/transform-litsx-hooks.js"],"sourcesContent":["import { createRuntimeHooksTransform } from \"@litsx/babel-plugin-shared-hooks\";\nimport fs from \"node:fs\";\nimport path from \"node:path\";\nimport traverse from \"@babel/traverse\";\nimport parser from \"@litsx/babel-parser\";\nimport { ensureTypescriptModule } from \"./transform-litsx-properties.js\";\n\nconst RUNTIME_MODULE = \"@litsx/core\";\nconst IMPORT_SOURCES = [RUNTIME_MODULE];\n\nconst RUNTIME_HELPERS = [\n \"useOnConnect\",\n \"useAfterUpdate\",\n \"useOnCommit\",\n \"useMemoValue\",\n \"useStableCallback\",\n \"useEvent\",\n \"useEmit\",\n \"usePrevious\",\n \"useReducedState\",\n \"useState\",\n \"useControlledState\",\n \"useAsyncState\",\n \"useOptimistic\",\n \"useExpose\",\n \"useExternalStore\",\n \"useHost\",\n \"useHostContent\",\n \"useSlot\",\n \"useTextContent\",\n \"useTransition\",\n \"useDeferredValue\",\n \"useStyle\",\n \"useRef\",\n \"useCallbackRef\",\n \"useStableId\",\n];\n\nconst SOURCE_EXTENSIONS = [\n \"\",\n \".litsx\",\n \".tsx\",\n \".ts\",\n \".jsx\",\n \".js\",\n \".mjs\",\n \".cjs\",\n];\nconst DEFAULT_MODULE_RESOLUTION_OPTIONS = {\n moduleResolution: 100,\n allowJs: true,\n checkJs: false,\n jsx: 1,\n target: 99,\n module: 99,\n esModuleInterop: true,\n allowSyntheticDefaultImports: true,\n};\n\nfunction normalizeFilePath(value) {\n return normalizePath(value);\n}\n\nfunction getTraverse() {\n return traverse.default || traverse;\n}\n\nfunction normalizeInMemoryFiles(files) {\n const normalized = new Map();\n if (!files || typeof files !== \"object\") {\n return normalized;\n }\n for (const [filename, source] of Object.entries(files)) {\n if (typeof source !== \"string\") continue;\n normalized.set(normalizeFilePath(filename), source);\n }\n return normalized;\n}\n\nfunction createStructuralHookResolver(options = {}) {\n const inMemoryFiles = normalizeInMemoryFiles(options.inMemoryFiles);\n const compilationSession = options.__litsxCompilationSession || null;\n const moduleCache = compilationSession?.importedModuleAnalysisCache || new Map();\n const resolvedImportCache = compilationSession?.resolvedImportCache || new Map();\n const providedTypescriptSession =\n options?.typescriptSession?.projectSession || options?.typescriptSession || null;\n const compilerOptionsCache = new Map();\n const moduleResolutionHostCache = new Map();\n\n function getProgramForFile(filename) {\n if (!providedTypescriptSession?.getProgram || !filename) {\n return null;\n }\n\n try {\n if (providedTypescriptSession.kind === \"project\") {\n return providedTypescriptSession.getProgram();\n }\n if (providedTypescriptSession.kind === \"standalone\") {\n return providedTypescriptSession.getProgram(normalizeFilePath(filename));\n }\n } catch {\n return null;\n }\n\n return null;\n }\n\n function getCompilerOptions(filename) {\n const cacheKey = normalizeFilePath(filename);\n if (compilerOptionsCache.has(cacheKey)) {\n return compilerOptionsCache.get(cacheKey);\n }\n const program = getProgramForFile(filename);\n const compilerOptions =\n program?.getCompilerOptions?.() ||\n options.compilerOptions ||\n DEFAULT_MODULE_RESOLUTION_OPTIONS;\n compilerOptionsCache.set(cacheKey, compilerOptions);\n return compilerOptions;\n }\n\n function getModuleResolutionHost(filename) {\n const cacheKey = normalizeFilePath(filename);\n if (moduleResolutionHostCache.has(cacheKey)) {\n return moduleResolutionHostCache.get(cacheKey);\n }\n const ts = ensureTypescriptModule();\n const host = providedTypescriptSession?.host || ts.sys;\n moduleResolutionHostCache.set(cacheKey, host);\n return host;\n }\n\n function fileExists(filename) {\n const normalized = normalizeFilePath(filename);\n return inMemoryFiles.has(normalized) || fs.existsSync(normalized);\n }\n\n function readFile(filename) {\n const normalized = normalizeFilePath(filename);\n if (inMemoryFiles.has(normalized)) {\n return inMemoryFiles.get(normalized);\n }\n try {\n return fs.readFileSync(normalized, \"utf8\");\n } catch {\n return null;\n }\n }\n\n function resolveWithExtensions(base) {\n const normalizedBase = normalizeFilePath(base);\n for (const ext of SOURCE_EXTENSIONS) {\n const candidate = `${normalizedBase}${ext}`;\n if (fileExists(candidate)) {\n return normalizeFilePath(candidate);\n }\n }\n for (const ext of SOURCE_EXTENSIONS.filter(Boolean)) {\n const candidate = normalizeFilePath(path.join(base, `index${ext}`));\n if (fileExists(candidate)) {\n return candidate;\n }\n }\n return null;\n }\n\n function resolvePathAlias(containingFile, source) {\n const compilerOptions = getCompilerOptions(containingFile) || {};\n const baseUrl = compilerOptions.baseUrl\n ? normalizeFilePath(\n path.isAbsolute(compilerOptions.baseUrl)\n ? compilerOptions.baseUrl\n : path.resolve(path.dirname(containingFile), compilerOptions.baseUrl)\n )\n : normalizeFilePath(path.dirname(containingFile));\n const pathMappings = compilerOptions.paths || {};\n\n for (const [pattern, substitutions] of Object.entries(pathMappings)) {\n const starIndex = pattern.indexOf(\"*\");\n const isStarPattern = starIndex !== -1;\n const prefix = isStarPattern ? pattern.slice(0, starIndex) : pattern;\n const suffix = isStarPattern ? pattern.slice(starIndex + 1) : \"\";\n\n if (isStarPattern) {\n if (!source.startsWith(prefix) || !source.endsWith(suffix)) {\n continue;\n }\n } else if (source !== pattern) {\n continue;\n }\n\n const wildcardValue = isStarPattern\n ? source.slice(prefix.length, source.length - suffix.length)\n : \"\";\n\n for (const substitution of substitutions || []) {\n const substituted = isStarPattern\n ? substitution.replace(\"*\", wildcardValue)\n : substitution;\n const candidateBase = path.isAbsolute(substituted)\n ? substituted\n : path.join(baseUrl, substituted);\n const resolved = resolveWithExtensions(candidateBase);\n if (resolved) {\n return resolved;\n }\n }\n }\n\n return null;\n }\n\n function resolveImport(containingFile, source) {\n if (typeof source !== \"string\" || !containingFile) {\n return null;\n }\n const cacheKey = `${normalizeFilePath(containingFile)}::${source}`;\n if (resolvedImportCache.has(cacheKey)) {\n return resolvedImportCache.get(cacheKey);\n }\n\n const baseDir = path.dirname(containingFile);\n let resolved = source.startsWith(\".\") || source.startsWith(\"/\")\n ? resolveWithExtensions(path.resolve(baseDir, source))\n : resolvePathAlias(containingFile, source);\n\n if (!resolved) {\n const ts = ensureTypescriptModule();\n try {\n const resolution = ts.resolveModuleName(\n source,\n normalizeFilePath(containingFile),\n getCompilerOptions(containingFile),\n getModuleResolutionHost(containingFile)\n );\n const resolvedFileName = resolution?.resolvedModule?.resolvedFileName;\n if (resolvedFileName) {\n resolved = resolveWithExtensions(resolvedFileName) || normalizeFilePath(resolvedFileName);\n }\n } catch {\n resolved = null;\n }\n }\n\n resolvedImportCache.set(cacheKey, resolved);\n return resolved;\n }\n\n function resolveModuleReference(analysis, reference) {\n if (!analysis || !reference?.source || reference.source === RUNTIME_MODULE) {\n return reference?.resolvedSource || null;\n }\n if (Object.prototype.hasOwnProperty.call(reference, \"resolvedSource\")) {\n return reference.resolvedSource;\n }\n reference.resolvedSource = resolveImport(analysis.filename, reference.source);\n return reference.resolvedSource;\n }\n\n function getParserPluginsForModule(filename, source) {\n if (/\\.(?:[cm]?ts|tsx|litsx)$/i.test(filename)) {\n return [\"typescript\"];\n }\n if (/\\b(?:as|satisfies)\\s+[^;,)]+/.test(source)) {\n return [\"typescript\"];\n }\n return [];\n }\n\n function getImportedName(specifier) {\n if (specifier.type === \"ImportDefaultSpecifier\") return \"default\";\n if (specifier.type === \"ImportNamespaceSpecifier\") return \"*\";\n return specifier.imported?.name ?? specifier.imported?.value ?? null;\n }\n\n function isDefineHookCallee(node, analysis) {\n if (!node) return false;\n if (node.type === \"Identifier\") {\n return analysis.defineHookLocals.has(node.name);\n }\n if (\n node.type === \"MemberExpression\" &&\n !node.computed &&\n node.property?.type === \"Identifier\" &&\n node.property.name === \"defineHook\" &&\n node.object?.type === \"Identifier\"\n ) {\n return analysis.runtimeNamespaceLocals.has(node.object.name);\n }\n return false;\n }\n\n function addExportBinding(analysis, exportedName, info) {\n if (exportedName) {\n analysis.exportBindings.set(exportedName, info);\n }\n }\n\n function getDefineHookPhaseInfo(init) {\n const definition = init?.arguments?.[0];\n if (!definition || definition.type !== \"ObjectExpression\") {\n return {\n hasStaticPhase: false,\n hasInstancePhase: true,\n };\n }\n const hasProperty = (name) => definition.properties.some((property) => {\n if (property.type !== \"ObjectProperty\" && property.type !== \"ObjectMethod\") {\n return false;\n }\n const key = property.key;\n return (\n (key.type === \"Identifier\" && key.name === name) ||\n (key.type === \"StringLiteral\" && key.value === name)\n );\n });\n return {\n hasStaticPhase: hasProperty(\"static\"),\n hasInstancePhase: hasProperty(\"setup\") || hasProperty(\"createState\") || hasProperty(\"middlewares\"),\n };\n }\n\n function analyzeModule(filename) {\n const normalizedFilename = normalizeFilePath(filename);\n if (!normalizedFilename) return null;\n if (moduleCache.has(normalizedFilename)) {\n return moduleCache.get(normalizedFilename);\n }\n\n const source = readFile(normalizedFilename);\n if (typeof source !== \"string\") {\n moduleCache.set(normalizedFilename, null);\n return null;\n }\n\n const analysis = {\n filename: normalizedFilename,\n importBindings: new Map(),\n exportBindings: new Map(),\n exportAllSources: [],\n defineHookLocals: new Set(),\n runtimeNamespaceLocals: new Set(),\n structuralLocals: new Set(),\n structuralLocalInfo: new Map(),\n customHookPaths: new Map(),\n customHookUsageCache: new Map(),\n customHookRuntimeUsageCache: new Map(),\n };\n moduleCache.set(normalizedFilename, analysis);\n\n let ast;\n try {\n ast = parser.parse(source, {\n sourceType: \"module\",\n plugins: getParserPluginsForModule(normalizedFilename, source),\n });\n } catch {\n moduleCache.set(normalizedFilename, null);\n return null;\n }\n\n getTraverse()(ast, {\n Program(programPath) {\n for (const statementPath of programPath.get(\"body\")) {\n const node = statementPath.node;\n\n if (statementPath.isImportDeclaration()) {\n const sourceValue = node.source.value;\n for (const specifier of node.specifiers) {\n const localName = specifier.local?.name;\n if (!localName) continue;\n const importedName = getImportedName(specifier);\n analysis.importBindings.set(localName, {\n importedName,\n source: sourceValue,\n });\n if (sourceValue === RUNTIME_MODULE && importedName === \"defineHook\") {\n analysis.defineHookLocals.add(localName);\n }\n if (\n sourceValue === RUNTIME_MODULE &&\n (specifier.type === \"ImportNamespaceSpecifier\" ||\n specifier.type === \"ImportDefaultSpecifier\")\n ) {\n analysis.runtimeNamespaceLocals.add(localName);\n }\n }\n continue;\n }\n\n const declarationPath = statementPath.isExportNamedDeclaration()\n ? statementPath.get(\"declaration\")\n : statementPath;\n\n if (declarationPath?.isFunctionDeclaration?.()) {\n const localName = declarationPath.node.id?.name;\n if (localName && /^use[A-Z0-9]/.test(localName)) {\n analysis.customHookPaths.set(localName, declarationPath);\n }\n }\n\n if (declarationPath?.isVariableDeclaration?.()) {\n for (const declaratorPath of declarationPath.get(\"declarations\")) {\n const id = declaratorPath.node.id;\n if (id?.type !== \"Identifier\") continue;\n const init = declaratorPath.node.init;\n if (init?.type === \"CallExpression\" && isDefineHookCallee(init.callee, analysis)) {\n analysis.structuralLocals.add(id.name);\n analysis.structuralLocalInfo.set(id.name, getDefineHookPhaseInfo(init));\n } else if (\n /^use[A-Z0-9]/.test(id.name) &&\n (\n init?.type === \"FunctionExpression\" ||\n init?.type === \"ArrowFunctionExpression\"\n )\n ) {\n analysis.customHookPaths.set(id.name, declaratorPath.get(\"init\"));\n }\n }\n }\n\n if (statementPath.isExportAllDeclaration()) {\n analysis.exportAllSources.push({\n source: node.source.value,\n });\n continue;\n }\n\n if (statementPath.isExportNamedDeclaration()) {\n const exportNode = statementPath.node;\n const declaration = exportNode.declaration;\n if (declaration?.type === \"VariableDeclaration\") {\n for (const declarator of declaration.declarations) {\n const localName = declarator.id?.name;\n if (localName) {\n addExportBinding(analysis, localName, { localName });\n }\n }\n } else if (\n declaration?.type === \"FunctionDeclaration\" ||\n declaration?.type === \"ClassDeclaration\"\n ) {\n addExportBinding(analysis, declaration.id?.name, {\n localName: declaration.id?.name,\n });\n }\n\n for (const specifier of exportNode.specifiers) {\n const exportedName = specifier.exported?.name ?? specifier.exported?.value ?? null;\n if (!exportedName) continue;\n const localName = specifier.local?.name ?? specifier.local?.value ?? exportedName;\n if (exportNode.source?.value) {\n addExportBinding(analysis, exportedName, {\n importedName: localName,\n source: exportNode.source.value,\n });\n } else {\n addExportBinding(analysis, exportedName, { localName });\n }\n }\n }\n }\n },\n });\n\n return analysis;\n }\n\n function isNamespaceStructuralUse(analysis, objectName, propertyName, seen) {\n const importInfo = analysis.importBindings.get(objectName);\n const resolvedSource = resolveModuleReference(analysis, importInfo);\n if (!resolvedSource || importInfo.importedName !== \"*\") {\n return false;\n }\n const importedModule = analyzeModule(resolvedSource);\n return (\n isStructuralExport(importedModule, propertyName, seen) ||\n isStructuralCustomExport(importedModule, propertyName, seen)\n );\n }\n\n function isNamespaceRuntimeHelperUse(analysis, objectName, propertyName) {\n const importInfo = analysis.importBindings.get(objectName);\n return (\n importInfo?.source === RUNTIME_MODULE &&\n importInfo.importedName === \"*\" &&\n RUNTIME_HELPERS.includes(propertyName)\n );\n }\n\n function isRuntimeHelperImport(analysis, localName) {\n const importInfo = analysis.importBindings.get(localName);\n return (\n importInfo?.source === RUNTIME_MODULE &&\n RUNTIME_HELPERS.includes(importInfo.importedName)\n );\n }\n\n function localCustomHookUsesStructural(analysis, localName, seen = new Set()) {\n if (!analysis || !localName) return false;\n const key = `${analysis.filename}:local:${localName}`;\n if (analysis.customHookUsageCache.has(localName)) {\n return analysis.customHookUsageCache.get(localName);\n }\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const fnPath = analysis.customHookPaths.get(localName);\n if (!fnPath?.traverse) {\n analysis.customHookUsageCache.set(localName, false);\n return false;\n }\n\n let usesStructural = false;\n fnPath.traverse({\n CallExpression(callPath) {\n if (usesStructural) {\n callPath.stop();\n return;\n }\n const callee = callPath.get(\"callee\");\n if (callee.isIdentifier()) {\n const name = callee.node.name;\n if (analysis.structuralLocals.has(name)) {\n usesStructural = true;\n callPath.stop();\n return;\n }\n if (\n analysis.customHookPaths.has(name) &&\n localCustomHookUsesStructural(analysis, name, nextSeen)\n ) {\n usesStructural = true;\n callPath.stop();\n return;\n }\n const importInfo = analysis.importBindings.get(name);\n const resolvedSource = resolveModuleReference(analysis, importInfo);\n if (resolvedSource && importInfo.importedName !== \"*\") {\n const importedModule = analyzeModule(resolvedSource);\n if (\n isStructuralExport(importedModule, importInfo.importedName, nextSeen) ||\n isStructuralCustomExport(importedModule, importInfo.importedName, nextSeen)\n ) {\n usesStructural = true;\n callPath.stop();\n }\n }\n return;\n }\n\n if (callee.isMemberExpression({ computed: false })) {\n const object = callee.get(\"object\");\n const property = callee.get(\"property\");\n if (\n object.isIdentifier() &&\n property.isIdentifier() &&\n isNamespaceStructuralUse(analysis, object.node.name, property.node.name, nextSeen)\n ) {\n usesStructural = true;\n callPath.stop();\n }\n }\n },\n });\n\n analysis.customHookUsageCache.set(localName, usesStructural);\n return usesStructural;\n }\n\n function localCustomHookUsesRuntimeHook(analysis, localName, seen = new Set()) {\n if (!analysis || !localName) return false;\n const key = `${analysis.filename}:runtime-local:${localName}`;\n if (analysis.customHookRuntimeUsageCache.has(localName)) {\n return analysis.customHookRuntimeUsageCache.get(localName);\n }\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const fnPath = analysis.customHookPaths.get(localName);\n if (!fnPath?.traverse) {\n analysis.customHookRuntimeUsageCache.set(localName, false);\n return false;\n }\n\n let usesRuntimeHook = false;\n fnPath.traverse({\n CallExpression(callPath) {\n if (usesRuntimeHook) {\n callPath.stop();\n return;\n }\n const callee = callPath.get(\"callee\");\n if (callee.isIdentifier()) {\n const name = callee.node.name;\n if (isRuntimeHelperImport(analysis, name)) {\n usesRuntimeHook = true;\n callPath.stop();\n return;\n }\n if (\n analysis.customHookPaths.has(name) &&\n localCustomHookUsesRuntimeHook(analysis, name, nextSeen)\n ) {\n usesRuntimeHook = true;\n callPath.stop();\n return;\n }\n const importInfo = analysis.importBindings.get(name);\n const resolvedSource = resolveModuleReference(analysis, importInfo);\n if (resolvedSource && importInfo.importedName !== \"*\") {\n const importedModule = analyzeModule(resolvedSource);\n if (isRuntimeCustomExport(importedModule, importInfo.importedName, nextSeen)) {\n usesRuntimeHook = true;\n callPath.stop();\n }\n }\n return;\n }\n\n if (callee.isMemberExpression({ computed: false })) {\n const object = callee.get(\"object\");\n const property = callee.get(\"property\");\n if (!object.isIdentifier() || !property.isIdentifier()) {\n return;\n }\n if (isNamespaceRuntimeHelperUse(analysis, object.node.name, property.node.name)) {\n usesRuntimeHook = true;\n callPath.stop();\n return;\n }\n const importInfo = analysis.importBindings.get(object.node.name);\n const resolvedSource = resolveModuleReference(analysis, importInfo);\n if (resolvedSource && importInfo.importedName === \"*\") {\n const importedModule = analyzeModule(resolvedSource);\n if (isRuntimeCustomExport(importedModule, property.node.name, nextSeen)) {\n usesRuntimeHook = true;\n callPath.stop();\n }\n }\n }\n },\n });\n\n analysis.customHookRuntimeUsageCache.set(localName, usesRuntimeHook);\n return usesRuntimeHook;\n }\n\n function getStructuralExportInfo(analysis, exportedName, seen = new Set()) {\n if (!analysis || !exportedName) return false;\n const key = `${analysis.filename}:${exportedName}`;\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const exportInfo = analysis.exportBindings.get(exportedName);\n if (!exportInfo) {\n for (const exportAll of analysis.exportAllSources || []) {\n const resolvedSource = resolveModuleReference(analysis, exportAll);\n if (!resolvedSource) continue;\n const info = getStructuralExportInfo(\n analyzeModule(resolvedSource),\n exportedName,\n nextSeen\n );\n if (info) return info;\n }\n return false;\n }\n\n const exportSource = resolveModuleReference(analysis, exportInfo);\n if (exportSource) {\n return getStructuralExportInfo(\n analyzeModule(exportSource),\n exportInfo.importedName,\n nextSeen\n );\n }\n\n if (analysis.structuralLocals.has(exportInfo.localName)) {\n return {\n kind: \"structural-hook\",\n ...(analysis.structuralLocalInfo.get(exportInfo.localName) || {\n hasStaticPhase: false,\n hasInstancePhase: true,\n }),\n };\n }\n\n const importInfo = analysis.importBindings.get(exportInfo.localName);\n const importSource = resolveModuleReference(analysis, importInfo);\n if (importSource && importInfo.importedName !== \"*\") {\n return getStructuralExportInfo(\n analyzeModule(importSource),\n importInfo.importedName,\n nextSeen\n );\n }\n\n return false;\n }\n\n function isStructuralExport(analysis, exportedName, seen = new Set()) {\n return Boolean(getStructuralExportInfo(analysis, exportedName, seen));\n }\n\n function isStructuralCustomExport(analysis, exportedName, seen = new Set()) {\n if (!analysis || !exportedName) return false;\n const key = `${analysis.filename}:custom:${exportedName}`;\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const exportInfo = analysis.exportBindings.get(exportedName);\n if (!exportInfo) {\n for (const exportAll of analysis.exportAllSources || []) {\n const resolvedSource = resolveModuleReference(analysis, exportAll);\n if (!resolvedSource) continue;\n if (\n isStructuralCustomExport(\n analyzeModule(resolvedSource),\n exportedName,\n nextSeen\n )\n ) {\n return true;\n }\n }\n return false;\n }\n\n const exportSource = resolveModuleReference(analysis, exportInfo);\n if (exportSource) {\n return isStructuralCustomExport(\n analyzeModule(exportSource),\n exportInfo.importedName,\n nextSeen\n );\n }\n\n if (localCustomHookUsesStructural(analysis, exportInfo.localName, nextSeen)) {\n return true;\n }\n\n const importInfo = analysis.importBindings.get(exportInfo.localName);\n const importSource = resolveModuleReference(analysis, importInfo);\n if (importSource && importInfo.importedName !== \"*\") {\n return isStructuralCustomExport(\n analyzeModule(importSource),\n importInfo.importedName,\n nextSeen\n );\n }\n\n return false;\n }\n\n function hasExportBinding(analysis, exportedName, seen = new Set()) {\n if (!analysis || !exportedName) return \"unresolved\";\n const key = `${analysis.filename}:has-export:${exportedName}`;\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n if (analysis.exportBindings.has(exportedName)) {\n return true;\n }\n\n let sawUnresolvedExportAll = false;\n for (const exportAll of analysis.exportAllSources || []) {\n const resolvedSource = resolveModuleReference(analysis, exportAll);\n if (!resolvedSource) {\n sawUnresolvedExportAll = true;\n continue;\n }\n const result = hasExportBinding(\n analyzeModule(resolvedSource),\n exportedName,\n nextSeen\n );\n if (result === true) return true;\n if (result === \"unresolved\") sawUnresolvedExportAll = true;\n }\n\n return sawUnresolvedExportAll ? \"unresolved\" : false;\n }\n\n function isRuntimeCustomExport(analysis, exportedName, seen = new Set()) {\n if (!analysis || !exportedName) return false;\n const key = `${analysis.filename}:runtime-custom:${exportedName}`;\n if (seen.has(key)) return false;\n const nextSeen = new Set(seen);\n nextSeen.add(key);\n\n const exportInfo = analysis.exportBindings.get(exportedName);\n if (!exportInfo) {\n for (const exportAll of analysis.exportAllSources || []) {\n const resolvedSource = resolveModuleReference(analysis, exportAll);\n if (!resolvedSource) continue;\n if (\n isRuntimeCustomExport(\n analyzeModule(resolvedSource),\n exportedName,\n nextSeen\n )\n ) {\n return true;\n }\n }\n return false;\n }\n\n const exportSource = resolveModuleReference(analysis, exportInfo);\n if (exportSource) {\n return isRuntimeCustomExport(\n analyzeModule(exportSource),\n exportInfo.importedName,\n nextSeen\n );\n }\n\n if (localCustomHookUsesRuntimeHook(analysis, exportInfo.localName, nextSeen)) {\n return true;\n }\n\n const importInfo = analysis.importBindings.get(exportInfo.localName);\n const importSource = resolveModuleReference(analysis, importInfo);\n if (importSource && importInfo.importedName !== \"*\") {\n return isRuntimeCustomExport(\n analyzeModule(importSource),\n importInfo.importedName,\n nextSeen\n );\n }\n\n return false;\n }\n\n return function structuralHookResolver({ filename, source, importedName, runtimeCustomOnly = false }) {\n const resolved = resolveImport(filename, source);\n if (!resolved) return runtimeCustomOnly ? \"unresolved-custom-hook\" : false;\n const analysis = analyzeModule(resolved);\n if (!analysis && runtimeCustomOnly) {\n return \"unresolved-custom-hook\";\n }\n if (runtimeCustomOnly) {\n const exportStatus = hasExportBinding(analysis, importedName);\n if (exportStatus !== true) {\n return \"unresolved-custom-hook\";\n }\n return isRuntimeCustomExport(analysis, importedName)\n ? \"runtime-custom-hook\"\n : false;\n }\n const structuralInfo = getStructuralExportInfo(analysis, importedName);\n if (structuralInfo) {\n return structuralInfo;\n }\n if (isStructuralCustomExport(analysis, importedName)) {\n return \"structural-custom-hook\";\n }\n return false;\n };\n}\n\nfunction normalizePath(value) {\n return String(value || \"\").replace(/\\\\/g, \"/\");\n}\n\nfunction hashStableId(value) {\n let hash = 2166136261;\n const text = String(value);\n for (let index = 0; index < text.length; index += 1) {\n hash ^= text.charCodeAt(index);\n hash = Math.imul(hash, 16777619);\n }\n return (hash >>> 0).toString(36);\n}\n\nfunction createStableIdCallsiteMetadata(callPath, state, t) {\n const filename =\n state.file?.opts?.sourceFileName ||\n state.file?.opts?.filename ||\n state.filename ||\n \"\";\n const normalizedFilename = normalizePath(filename);\n const loc = callPath.node.loc?.start ?? null;\n const start = typeof callPath.node.start === \"number\"\n ? callPath.node.start\n : 0;\n const line = loc?.line ?? 0;\n const column = loc?.column ?? 0;\n const seed = `${normalizedFilename}:${line}:${column}:${start}`;\n return t.stringLiteral(`litsx-stable-${hashStableId(seed)}`);\n}\n\nexport default function transformLitsxHooks(api, options = {}) {\n const structuralHookResolver = createStructuralHookResolver(options);\n const ignoredCustomHookSources = new Set(options.ignoredCustomHookSources || []);\n const plugin = createRuntimeHooksTransform({\n pluginName: \"transform-litsx-hooks\",\n runtimeModule: RUNTIME_MODULE,\n importSources: IMPORT_SOURCES,\n helperNames: RUNTIME_HELPERS,\n callMetadataByHelper: {\n useStableId: createStableIdCallsiteMetadata,\n },\n });\n\n return plugin(api, {\n ...options,\n structuralHookResolver,\n customHookResolver({ filename, source, importedName }) {\n if (ignoredCustomHookSources.has(source)) {\n return false;\n }\n const result = structuralHookResolver({\n filename,\n source,\n importedName,\n runtimeCustomOnly: true,\n });\n if (result === \"unresolved-custom-hook\") {\n return result;\n }\n return result === \"runtime-custom-hook\";\n },\n });\n}\n"],"names":["ensureTypescriptModule","createRuntimeHooksTransform"],"mappings":"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"}
|
package/dist/pipeline.cjs
CHANGED
|
@@ -31,10 +31,69 @@ const NATIVE_TRANSFORM_OPTION_KEYS = [
|
|
|
31
31
|
];
|
|
32
32
|
|
|
33
33
|
const HOOK_FEATURE_PATTERN = /\b(?:defineHook|useOnConnect|useAfterUpdate|useOnCommit|useMemoValue|useStableCallback|useEvent|useEmit|usePrevious|useReducedState|useState|useControlledState|useAsyncState|useOptimistic|useExpose|useExternalStore|useHost|useHostContent|useSlot|useTextContent|useTransition|useDeferredValue|useStyle|useRef|useCallbackRef|useStableId)\b/;
|
|
34
|
+
const DEFAULT_OR_NAMED_IMPORT_PATTERN = /\bimport\s+(?!type\b)([^'";]+?)\s+from\b/g;
|
|
35
|
+
const NAMESPACE_IMPORT_PATTERN = /\bimport\s+(?!type\b)\*\s+as\s+([A-Za-z_$][\w$]*)\s+from\b/g;
|
|
34
36
|
const REF_FEATURE_PATTERN = /\buseRef\b|\bref\s*=/;
|
|
35
37
|
const SCOPED_ELEMENTS_PATTERN = /<\s*(?:[A-Z][\w.]*(?=[\s/>])|[a-z][\w]*-[\w-]*(?=[\s/>]))/;
|
|
36
38
|
const LIGHT_DOM_PATTERN = /\^lightDom\b|static\s+lightDom\s*=\s*true\b/;
|
|
37
39
|
|
|
40
|
+
function escapeRegExp(value) {
|
|
41
|
+
return String(value).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&");
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
function hasCallToLocal(text, localName) {
|
|
45
|
+
return new RegExp(`\\b${escapeRegExp(localName)}\\s*\\(`).test(text);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
function getImportedLocalNames(importClause) {
|
|
49
|
+
const locals = [];
|
|
50
|
+
const namedMatch = importClause.match(/\{([^}]*)\}/);
|
|
51
|
+
const beforeNamed = importClause.split("{", 1)[0].replace(/,$/, "").trim();
|
|
52
|
+
|
|
53
|
+
if (beforeNamed && !beforeNamed.includes("*")) {
|
|
54
|
+
locals.push(beforeNamed);
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if (namedMatch) {
|
|
58
|
+
for (const rawSpecifier of namedMatch[1].split(",")) {
|
|
59
|
+
const specifier = rawSpecifier.trim();
|
|
60
|
+
if (!specifier || specifier.startsWith("type ")) continue;
|
|
61
|
+
const parts = specifier.split(/\s+as\s+/);
|
|
62
|
+
const localName = (parts[1] || parts[0]).trim();
|
|
63
|
+
if (localName) {
|
|
64
|
+
locals.push(localName);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
return locals.filter((name) => /^use[A-Z0-9][A-Za-z0-9_$]*$/.test(name));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function hasImportedCustomHookCall(text) {
|
|
73
|
+
DEFAULT_OR_NAMED_IMPORT_PATTERN.lastIndex = 0;
|
|
74
|
+
let match;
|
|
75
|
+
while ((match = DEFAULT_OR_NAMED_IMPORT_PATTERN.exec(text))) {
|
|
76
|
+
for (const localName of getImportedLocalNames(match[1])) {
|
|
77
|
+
if (hasCallToLocal(text, localName)) {
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
NAMESPACE_IMPORT_PATTERN.lastIndex = 0;
|
|
84
|
+
while ((match = NAMESPACE_IMPORT_PATTERN.exec(text))) {
|
|
85
|
+
const namespaceName = match[1];
|
|
86
|
+
if (
|
|
87
|
+
new RegExp(`\\b${escapeRegExp(namespaceName)}\\s*\\.\\s*use[A-Z0-9][A-Za-z0-9_$]*\\s*\\(`)
|
|
88
|
+
.test(text)
|
|
89
|
+
) {
|
|
90
|
+
return true;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
return false;
|
|
95
|
+
}
|
|
96
|
+
|
|
38
97
|
function normalizeTransformLitsxOptions(options = {}) {
|
|
39
98
|
const transformLitsxOptions = {
|
|
40
99
|
...(options.transformLitsx || {}),
|
|
@@ -54,7 +113,9 @@ function detectLitsxSourceFeatures(source, options = {}) {
|
|
|
54
113
|
const transformOptions = normalizeTransformLitsxOptions(options);
|
|
55
114
|
|
|
56
115
|
return {
|
|
57
|
-
hooks:
|
|
116
|
+
hooks:
|
|
117
|
+
HOOK_FEATURE_PATTERN.test(text) ||
|
|
118
|
+
hasImportedCustomHookCall(text),
|
|
58
119
|
domRefs: REF_FEATURE_PATTERN.test(text),
|
|
59
120
|
scopedElements:
|
|
60
121
|
transformOptions.defaultDomMode === "light" ||
|
package/dist/pipeline.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline.cjs","sources":["../src/pipeline.js"],"sourcesContent":["import transformJsxHtmlTemplate from \"@litsx/babel-plugin-transform-jsx-html-template\";\nimport transformLitsxScopedElements from \"@litsx/babel-plugin-transform-litsx-scoped-elements\";\nimport transformLitsxDomRefs from \"./internal/transform-litsx-dom-refs.js\";\nimport transformLitsxHooks from \"./internal/transform-litsx-hooks.js\";\nimport transformLitsxComponents from \"./internal/transform-litsx-components.js\";\nimport transformLitsxRendererProps from \"./internal/transform-litsx-renderer-props.js\";\n\nconst NATIVE_TRANSFORM_OPTION_KEYS = [\n \"defaultDomMode\",\n \"typeResolutionMode\",\n \"inMemoryFiles\",\n \"compilerOptions\",\n \"typescriptSession\",\n \"suppressNativeClassNameWarning\",\n \"__litsxCompilationSession\",\n];\n\nconst HOOK_FEATURE_PATTERN = /\\b(?:defineHook|useOnConnect|useAfterUpdate|useOnCommit|useMemoValue|useStableCallback|useEvent|useEmit|usePrevious|useReducedState|useState|useControlledState|useAsyncState|useOptimistic|useExpose|useExternalStore|useHost|useHostContent|useSlot|useTextContent|useTransition|useDeferredValue|useStyle|useRef|useCallbackRef|useStableId)\\b/;\nconst REF_FEATURE_PATTERN = /\\buseRef\\b|\\bref\\s*=/;\nconst SCOPED_ELEMENTS_PATTERN = /<\\s*(?:[A-Z][\\w.]*(?=[\\s/>])|[a-z][\\w]*-[\\w-]*(?=[\\s/>]))/;\nconst LIGHT_DOM_PATTERN = /\\^lightDom\\b|static\\s+lightDom\\s*=\\s*true\\b/;\n\nexport function normalizeTransformLitsxOptions(options = {}) {\n const transformLitsxOptions = {\n ...(options.transformLitsx || {}),\n };\n\n for (const key of NATIVE_TRANSFORM_OPTION_KEYS) {\n if (Object.prototype.hasOwnProperty.call(options, key)) {\n transformLitsxOptions[key] = options[key];\n }\n }\n\n return transformLitsxOptions;\n}\n\nexport function detectLitsxSourceFeatures(source, options = {}) {\n const text = typeof source === \"string\" ? source : \"\";\n const transformOptions = normalizeTransformLitsxOptions(options);\n\n return {\n hooks: HOOK_FEATURE_PATTERN.test(text),\n domRefs: REF_FEATURE_PATTERN.test(text),\n scopedElements:\n transformOptions.defaultDomMode === \"light\" ||\n LIGHT_DOM_PATTERN.test(text) ||\n SCOPED_ELEMENTS_PATTERN.test(text),\n };\n}\n\nfunction shouldIncludeFeaturePlugin(sourceFeatures, key) {\n if (!sourceFeatures) {\n return true;\n }\n\n return sourceFeatures[key] === true;\n}\n\nexport function createLitsxPresetPlugins(options = {}, sourceFeatures = null) {\n const plugins = [\n [transformLitsxRendererProps, options.transformLitsxRendererProps || {}],\n [transformLitsxComponents, normalizeTransformLitsxOptions(options)],\n ];\n\n if (shouldIncludeFeaturePlugin(sourceFeatures, \"hooks\")) {\n plugins.push([\n transformLitsxHooks,\n {\n ...normalizeTransformLitsxOptions(options),\n ...(options.transformLitsxHooks || {}),\n },\n ]);\n }\n\n if (shouldIncludeFeaturePlugin(sourceFeatures, \"domRefs\")) {\n plugins.push([transformLitsxDomRefs, options.transformLitsxDomRefs || {}]);\n }\n\n if (shouldIncludeFeaturePlugin(sourceFeatures, \"scopedElements\")) {\n plugins.push([transformLitsxScopedElements, options.transformLitsxScopedElements || {}]);\n }\n\n if (options.jsxTemplate !== false) {\n if (options.jsxTemplateOptions && Object.keys(options.jsxTemplateOptions).length > 0) {\n plugins.push([transformJsxHtmlTemplate, options.jsxTemplateOptions]);\n } else {\n plugins.push(transformJsxHtmlTemplate);\n }\n }\n\n return plugins;\n}\n\nexport {\n default as transformLitsxComponents,\n createTransformFunctionToClassPlugin as createTransformLitsxComponentsPlugin,\n} from \"./internal/transform-litsx-components.js\";\nexport {\n setTypescriptModule,\n} from \"./internal/transform-litsx-properties.js\";\n"],"names":["transformLitsxRendererProps","transformLitsxComponents","transformLitsxHooks","transformLitsxDomRefs"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pipeline.cjs","sources":["../src/pipeline.js"],"sourcesContent":["import transformJsxHtmlTemplate from \"@litsx/babel-plugin-transform-jsx-html-template\";\nimport transformLitsxScopedElements from \"@litsx/babel-plugin-transform-litsx-scoped-elements\";\nimport transformLitsxDomRefs from \"./internal/transform-litsx-dom-refs.js\";\nimport transformLitsxHooks from \"./internal/transform-litsx-hooks.js\";\nimport transformLitsxComponents from \"./internal/transform-litsx-components.js\";\nimport transformLitsxRendererProps from \"./internal/transform-litsx-renderer-props.js\";\n\nconst NATIVE_TRANSFORM_OPTION_KEYS = [\n \"defaultDomMode\",\n \"typeResolutionMode\",\n \"inMemoryFiles\",\n \"compilerOptions\",\n \"typescriptSession\",\n \"suppressNativeClassNameWarning\",\n \"__litsxCompilationSession\",\n];\n\nconst HOOK_FEATURE_PATTERN = /\\b(?:defineHook|useOnConnect|useAfterUpdate|useOnCommit|useMemoValue|useStableCallback|useEvent|useEmit|usePrevious|useReducedState|useState|useControlledState|useAsyncState|useOptimistic|useExpose|useExternalStore|useHost|useHostContent|useSlot|useTextContent|useTransition|useDeferredValue|useStyle|useRef|useCallbackRef|useStableId)\\b/;\nconst DEFAULT_OR_NAMED_IMPORT_PATTERN = /\\bimport\\s+(?!type\\b)([^'\";]+?)\\s+from\\b/g;\nconst NAMESPACE_IMPORT_PATTERN = /\\bimport\\s+(?!type\\b)\\*\\s+as\\s+([A-Za-z_$][\\w$]*)\\s+from\\b/g;\nconst REF_FEATURE_PATTERN = /\\buseRef\\b|\\bref\\s*=/;\nconst SCOPED_ELEMENTS_PATTERN = /<\\s*(?:[A-Z][\\w.]*(?=[\\s/>])|[a-z][\\w]*-[\\w-]*(?=[\\s/>]))/;\nconst LIGHT_DOM_PATTERN = /\\^lightDom\\b|static\\s+lightDom\\s*=\\s*true\\b/;\n\nfunction escapeRegExp(value) {\n return String(value).replace(/[\\\\^$.*+?()[\\]{}|]/g, \"\\\\$&\");\n}\n\nfunction hasCallToLocal(text, localName) {\n return new RegExp(`\\\\b${escapeRegExp(localName)}\\\\s*\\\\(`).test(text);\n}\n\nfunction getImportedLocalNames(importClause) {\n const locals = [];\n const namedMatch = importClause.match(/\\{([^}]*)\\}/);\n const beforeNamed = importClause.split(\"{\", 1)[0].replace(/,$/, \"\").trim();\n\n if (beforeNamed && !beforeNamed.includes(\"*\")) {\n locals.push(beforeNamed);\n }\n\n if (namedMatch) {\n for (const rawSpecifier of namedMatch[1].split(\",\")) {\n const specifier = rawSpecifier.trim();\n if (!specifier || specifier.startsWith(\"type \")) continue;\n const parts = specifier.split(/\\s+as\\s+/);\n const localName = (parts[1] || parts[0]).trim();\n if (localName) {\n locals.push(localName);\n }\n }\n }\n\n return locals.filter((name) => /^use[A-Z0-9][A-Za-z0-9_$]*$/.test(name));\n}\n\nfunction hasImportedCustomHookCall(text) {\n DEFAULT_OR_NAMED_IMPORT_PATTERN.lastIndex = 0;\n let match;\n while ((match = DEFAULT_OR_NAMED_IMPORT_PATTERN.exec(text))) {\n for (const localName of getImportedLocalNames(match[1])) {\n if (hasCallToLocal(text, localName)) {\n return true;\n }\n }\n }\n\n NAMESPACE_IMPORT_PATTERN.lastIndex = 0;\n while ((match = NAMESPACE_IMPORT_PATTERN.exec(text))) {\n const namespaceName = match[1];\n if (\n new RegExp(`\\\\b${escapeRegExp(namespaceName)}\\\\s*\\\\.\\\\s*use[A-Z0-9][A-Za-z0-9_$]*\\\\s*\\\\(`)\n .test(text)\n ) {\n return true;\n }\n }\n\n return false;\n}\n\nexport function normalizeTransformLitsxOptions(options = {}) {\n const transformLitsxOptions = {\n ...(options.transformLitsx || {}),\n };\n\n for (const key of NATIVE_TRANSFORM_OPTION_KEYS) {\n if (Object.prototype.hasOwnProperty.call(options, key)) {\n transformLitsxOptions[key] = options[key];\n }\n }\n\n return transformLitsxOptions;\n}\n\nexport function detectLitsxSourceFeatures(source, options = {}) {\n const text = typeof source === \"string\" ? source : \"\";\n const transformOptions = normalizeTransformLitsxOptions(options);\n\n return {\n hooks:\n HOOK_FEATURE_PATTERN.test(text) ||\n hasImportedCustomHookCall(text),\n domRefs: REF_FEATURE_PATTERN.test(text),\n scopedElements:\n transformOptions.defaultDomMode === \"light\" ||\n LIGHT_DOM_PATTERN.test(text) ||\n SCOPED_ELEMENTS_PATTERN.test(text),\n };\n}\n\nfunction shouldIncludeFeaturePlugin(sourceFeatures, key) {\n if (!sourceFeatures) {\n return true;\n }\n\n return sourceFeatures[key] === true;\n}\n\nexport function createLitsxPresetPlugins(options = {}, sourceFeatures = null) {\n const plugins = [\n [transformLitsxRendererProps, options.transformLitsxRendererProps || {}],\n [transformLitsxComponents, normalizeTransformLitsxOptions(options)],\n ];\n\n if (shouldIncludeFeaturePlugin(sourceFeatures, \"hooks\")) {\n plugins.push([\n transformLitsxHooks,\n {\n ...normalizeTransformLitsxOptions(options),\n ...(options.transformLitsxHooks || {}),\n },\n ]);\n }\n\n if (shouldIncludeFeaturePlugin(sourceFeatures, \"domRefs\")) {\n plugins.push([transformLitsxDomRefs, options.transformLitsxDomRefs || {}]);\n }\n\n if (shouldIncludeFeaturePlugin(sourceFeatures, \"scopedElements\")) {\n plugins.push([transformLitsxScopedElements, options.transformLitsxScopedElements || {}]);\n }\n\n if (options.jsxTemplate !== false) {\n if (options.jsxTemplateOptions && Object.keys(options.jsxTemplateOptions).length > 0) {\n plugins.push([transformJsxHtmlTemplate, options.jsxTemplateOptions]);\n } else {\n plugins.push(transformJsxHtmlTemplate);\n }\n }\n\n return plugins;\n}\n\nexport {\n default as transformLitsxComponents,\n createTransformFunctionToClassPlugin as createTransformLitsxComponentsPlugin,\n} from \"./internal/transform-litsx-components.js\";\nexport {\n setTypescriptModule,\n} from \"./internal/transform-litsx-properties.js\";\n"],"names":["transformLitsxRendererProps","transformLitsxComponents","transformLitsxHooks","transformLitsxDomRefs"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@litsx/babel-preset-litsx",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.1",
|
|
4
4
|
"description": "Canonical native Babel preset for LitSX-authored source",
|
|
5
5
|
"author": "LitSX Team",
|
|
6
6
|
"type": "module",
|
|
@@ -82,7 +82,7 @@
|
|
|
82
82
|
"@babel/traverse": "^7.28.5",
|
|
83
83
|
"@litsx/authoring": "^0.5.0",
|
|
84
84
|
"@litsx/babel-parser": "^0.2.5",
|
|
85
|
-
"@litsx/babel-plugin-shared-hooks": "^0.4.
|
|
85
|
+
"@litsx/babel-plugin-shared-hooks": "^0.4.1",
|
|
86
86
|
"@litsx/babel-plugin-transform-jsx-html-template": "^0.3.6",
|
|
87
87
|
"@litsx/babel-plugin-transform-litsx-scoped-elements": "^0.4.4",
|
|
88
88
|
"@litsx/typescript-session": "^0.2.3"
|
|
@@ -79,8 +79,9 @@ function normalizeInMemoryFiles(files) {
|
|
|
79
79
|
|
|
80
80
|
function createStructuralHookResolver(options = {}) {
|
|
81
81
|
const inMemoryFiles = normalizeInMemoryFiles(options.inMemoryFiles);
|
|
82
|
-
const
|
|
83
|
-
const
|
|
82
|
+
const compilationSession = options.__litsxCompilationSession || null;
|
|
83
|
+
const moduleCache = compilationSession?.importedModuleAnalysisCache || new Map();
|
|
84
|
+
const resolvedImportCache = compilationSession?.resolvedImportCache || new Map();
|
|
84
85
|
const providedTypescriptSession =
|
|
85
86
|
options?.typescriptSession?.projectSession || options?.typescriptSession || null;
|
|
86
87
|
const compilerOptionsCache = new Map();
|
|
@@ -246,6 +247,17 @@ function createStructuralHookResolver(options = {}) {
|
|
|
246
247
|
return resolved;
|
|
247
248
|
}
|
|
248
249
|
|
|
250
|
+
function resolveModuleReference(analysis, reference) {
|
|
251
|
+
if (!analysis || !reference?.source || reference.source === RUNTIME_MODULE) {
|
|
252
|
+
return reference?.resolvedSource || null;
|
|
253
|
+
}
|
|
254
|
+
if (Object.prototype.hasOwnProperty.call(reference, "resolvedSource")) {
|
|
255
|
+
return reference.resolvedSource;
|
|
256
|
+
}
|
|
257
|
+
reference.resolvedSource = resolveImport(analysis.filename, reference.source);
|
|
258
|
+
return reference.resolvedSource;
|
|
259
|
+
}
|
|
260
|
+
|
|
249
261
|
function getParserPluginsForModule(filename, source) {
|
|
250
262
|
if (/\.(?:[cm]?ts|tsx|litsx)$/i.test(filename)) {
|
|
251
263
|
return ["typescript"];
|
|
@@ -326,12 +338,14 @@ function createStructuralHookResolver(options = {}) {
|
|
|
326
338
|
filename: normalizedFilename,
|
|
327
339
|
importBindings: new Map(),
|
|
328
340
|
exportBindings: new Map(),
|
|
341
|
+
exportAllSources: [],
|
|
329
342
|
defineHookLocals: new Set(),
|
|
330
343
|
runtimeNamespaceLocals: new Set(),
|
|
331
344
|
structuralLocals: new Set(),
|
|
332
345
|
structuralLocalInfo: new Map(),
|
|
333
346
|
customHookPaths: new Map(),
|
|
334
347
|
customHookUsageCache: new Map(),
|
|
348
|
+
customHookRuntimeUsageCache: new Map(),
|
|
335
349
|
};
|
|
336
350
|
moduleCache.set(normalizedFilename, analysis);
|
|
337
351
|
|
|
@@ -353,7 +367,6 @@ function createStructuralHookResolver(options = {}) {
|
|
|
353
367
|
|
|
354
368
|
if (statementPath.isImportDeclaration()) {
|
|
355
369
|
const sourceValue = node.source.value;
|
|
356
|
-
const resolvedSource = resolveImport(normalizedFilename, sourceValue);
|
|
357
370
|
for (const specifier of node.specifiers) {
|
|
358
371
|
const localName = specifier.local?.name;
|
|
359
372
|
if (!localName) continue;
|
|
@@ -361,7 +374,6 @@ function createStructuralHookResolver(options = {}) {
|
|
|
361
374
|
analysis.importBindings.set(localName, {
|
|
362
375
|
importedName,
|
|
363
376
|
source: sourceValue,
|
|
364
|
-
resolvedSource,
|
|
365
377
|
});
|
|
366
378
|
if (sourceValue === RUNTIME_MODULE && importedName === "defineHook") {
|
|
367
379
|
analysis.defineHookLocals.add(localName);
|
|
@@ -408,6 +420,13 @@ function createStructuralHookResolver(options = {}) {
|
|
|
408
420
|
}
|
|
409
421
|
}
|
|
410
422
|
|
|
423
|
+
if (statementPath.isExportAllDeclaration()) {
|
|
424
|
+
analysis.exportAllSources.push({
|
|
425
|
+
source: node.source.value,
|
|
426
|
+
});
|
|
427
|
+
continue;
|
|
428
|
+
}
|
|
429
|
+
|
|
411
430
|
if (statementPath.isExportNamedDeclaration()) {
|
|
412
431
|
const exportNode = statementPath.node;
|
|
413
432
|
const declaration = exportNode.declaration;
|
|
@@ -434,7 +453,7 @@ function createStructuralHookResolver(options = {}) {
|
|
|
434
453
|
if (exportNode.source?.value) {
|
|
435
454
|
addExportBinding(analysis, exportedName, {
|
|
436
455
|
importedName: localName,
|
|
437
|
-
|
|
456
|
+
source: exportNode.source.value,
|
|
438
457
|
});
|
|
439
458
|
} else {
|
|
440
459
|
addExportBinding(analysis, exportedName, { localName });
|
|
@@ -450,16 +469,34 @@ function createStructuralHookResolver(options = {}) {
|
|
|
450
469
|
|
|
451
470
|
function isNamespaceStructuralUse(analysis, objectName, propertyName, seen) {
|
|
452
471
|
const importInfo = analysis.importBindings.get(objectName);
|
|
453
|
-
|
|
472
|
+
const resolvedSource = resolveModuleReference(analysis, importInfo);
|
|
473
|
+
if (!resolvedSource || importInfo.importedName !== "*") {
|
|
454
474
|
return false;
|
|
455
475
|
}
|
|
456
|
-
const importedModule = analyzeModule(
|
|
476
|
+
const importedModule = analyzeModule(resolvedSource);
|
|
457
477
|
return (
|
|
458
478
|
isStructuralExport(importedModule, propertyName, seen) ||
|
|
459
479
|
isStructuralCustomExport(importedModule, propertyName, seen)
|
|
460
480
|
);
|
|
461
481
|
}
|
|
462
482
|
|
|
483
|
+
function isNamespaceRuntimeHelperUse(analysis, objectName, propertyName) {
|
|
484
|
+
const importInfo = analysis.importBindings.get(objectName);
|
|
485
|
+
return (
|
|
486
|
+
importInfo?.source === RUNTIME_MODULE &&
|
|
487
|
+
importInfo.importedName === "*" &&
|
|
488
|
+
RUNTIME_HELPERS.includes(propertyName)
|
|
489
|
+
);
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
function isRuntimeHelperImport(analysis, localName) {
|
|
493
|
+
const importInfo = analysis.importBindings.get(localName);
|
|
494
|
+
return (
|
|
495
|
+
importInfo?.source === RUNTIME_MODULE &&
|
|
496
|
+
RUNTIME_HELPERS.includes(importInfo.importedName)
|
|
497
|
+
);
|
|
498
|
+
}
|
|
499
|
+
|
|
463
500
|
function localCustomHookUsesStructural(analysis, localName, seen = new Set()) {
|
|
464
501
|
if (!analysis || !localName) return false;
|
|
465
502
|
const key = `${analysis.filename}:local:${localName}`;
|
|
@@ -500,8 +537,9 @@ function createStructuralHookResolver(options = {}) {
|
|
|
500
537
|
return;
|
|
501
538
|
}
|
|
502
539
|
const importInfo = analysis.importBindings.get(name);
|
|
503
|
-
|
|
504
|
-
|
|
540
|
+
const resolvedSource = resolveModuleReference(analysis, importInfo);
|
|
541
|
+
if (resolvedSource && importInfo.importedName !== "*") {
|
|
542
|
+
const importedModule = analyzeModule(resolvedSource);
|
|
505
543
|
if (
|
|
506
544
|
isStructuralExport(importedModule, importInfo.importedName, nextSeen) ||
|
|
507
545
|
isStructuralCustomExport(importedModule, importInfo.importedName, nextSeen)
|
|
@@ -532,6 +570,85 @@ function createStructuralHookResolver(options = {}) {
|
|
|
532
570
|
return usesStructural;
|
|
533
571
|
}
|
|
534
572
|
|
|
573
|
+
function localCustomHookUsesRuntimeHook(analysis, localName, seen = new Set()) {
|
|
574
|
+
if (!analysis || !localName) return false;
|
|
575
|
+
const key = `${analysis.filename}:runtime-local:${localName}`;
|
|
576
|
+
if (analysis.customHookRuntimeUsageCache.has(localName)) {
|
|
577
|
+
return analysis.customHookRuntimeUsageCache.get(localName);
|
|
578
|
+
}
|
|
579
|
+
if (seen.has(key)) return false;
|
|
580
|
+
const nextSeen = new Set(seen);
|
|
581
|
+
nextSeen.add(key);
|
|
582
|
+
|
|
583
|
+
const fnPath = analysis.customHookPaths.get(localName);
|
|
584
|
+
if (!fnPath?.traverse) {
|
|
585
|
+
analysis.customHookRuntimeUsageCache.set(localName, false);
|
|
586
|
+
return false;
|
|
587
|
+
}
|
|
588
|
+
|
|
589
|
+
let usesRuntimeHook = false;
|
|
590
|
+
fnPath.traverse({
|
|
591
|
+
CallExpression(callPath) {
|
|
592
|
+
if (usesRuntimeHook) {
|
|
593
|
+
callPath.stop();
|
|
594
|
+
return;
|
|
595
|
+
}
|
|
596
|
+
const callee = callPath.get("callee");
|
|
597
|
+
if (callee.isIdentifier()) {
|
|
598
|
+
const name = callee.node.name;
|
|
599
|
+
if (isRuntimeHelperImport(analysis, name)) {
|
|
600
|
+
usesRuntimeHook = true;
|
|
601
|
+
callPath.stop();
|
|
602
|
+
return;
|
|
603
|
+
}
|
|
604
|
+
if (
|
|
605
|
+
analysis.customHookPaths.has(name) &&
|
|
606
|
+
localCustomHookUsesRuntimeHook(analysis, name, nextSeen)
|
|
607
|
+
) {
|
|
608
|
+
usesRuntimeHook = true;
|
|
609
|
+
callPath.stop();
|
|
610
|
+
return;
|
|
611
|
+
}
|
|
612
|
+
const importInfo = analysis.importBindings.get(name);
|
|
613
|
+
const resolvedSource = resolveModuleReference(analysis, importInfo);
|
|
614
|
+
if (resolvedSource && importInfo.importedName !== "*") {
|
|
615
|
+
const importedModule = analyzeModule(resolvedSource);
|
|
616
|
+
if (isRuntimeCustomExport(importedModule, importInfo.importedName, nextSeen)) {
|
|
617
|
+
usesRuntimeHook = true;
|
|
618
|
+
callPath.stop();
|
|
619
|
+
}
|
|
620
|
+
}
|
|
621
|
+
return;
|
|
622
|
+
}
|
|
623
|
+
|
|
624
|
+
if (callee.isMemberExpression({ computed: false })) {
|
|
625
|
+
const object = callee.get("object");
|
|
626
|
+
const property = callee.get("property");
|
|
627
|
+
if (!object.isIdentifier() || !property.isIdentifier()) {
|
|
628
|
+
return;
|
|
629
|
+
}
|
|
630
|
+
if (isNamespaceRuntimeHelperUse(analysis, object.node.name, property.node.name)) {
|
|
631
|
+
usesRuntimeHook = true;
|
|
632
|
+
callPath.stop();
|
|
633
|
+
return;
|
|
634
|
+
}
|
|
635
|
+
const importInfo = analysis.importBindings.get(object.node.name);
|
|
636
|
+
const resolvedSource = resolveModuleReference(analysis, importInfo);
|
|
637
|
+
if (resolvedSource && importInfo.importedName === "*") {
|
|
638
|
+
const importedModule = analyzeModule(resolvedSource);
|
|
639
|
+
if (isRuntimeCustomExport(importedModule, property.node.name, nextSeen)) {
|
|
640
|
+
usesRuntimeHook = true;
|
|
641
|
+
callPath.stop();
|
|
642
|
+
}
|
|
643
|
+
}
|
|
644
|
+
}
|
|
645
|
+
},
|
|
646
|
+
});
|
|
647
|
+
|
|
648
|
+
analysis.customHookRuntimeUsageCache.set(localName, usesRuntimeHook);
|
|
649
|
+
return usesRuntimeHook;
|
|
650
|
+
}
|
|
651
|
+
|
|
535
652
|
function getStructuralExportInfo(analysis, exportedName, seen = new Set()) {
|
|
536
653
|
if (!analysis || !exportedName) return false;
|
|
537
654
|
const key = `${analysis.filename}:${exportedName}`;
|
|
@@ -541,12 +658,23 @@ function createStructuralHookResolver(options = {}) {
|
|
|
541
658
|
|
|
542
659
|
const exportInfo = analysis.exportBindings.get(exportedName);
|
|
543
660
|
if (!exportInfo) {
|
|
661
|
+
for (const exportAll of analysis.exportAllSources || []) {
|
|
662
|
+
const resolvedSource = resolveModuleReference(analysis, exportAll);
|
|
663
|
+
if (!resolvedSource) continue;
|
|
664
|
+
const info = getStructuralExportInfo(
|
|
665
|
+
analyzeModule(resolvedSource),
|
|
666
|
+
exportedName,
|
|
667
|
+
nextSeen
|
|
668
|
+
);
|
|
669
|
+
if (info) return info;
|
|
670
|
+
}
|
|
544
671
|
return false;
|
|
545
672
|
}
|
|
546
673
|
|
|
547
|
-
|
|
674
|
+
const exportSource = resolveModuleReference(analysis, exportInfo);
|
|
675
|
+
if (exportSource) {
|
|
548
676
|
return getStructuralExportInfo(
|
|
549
|
-
analyzeModule(
|
|
677
|
+
analyzeModule(exportSource),
|
|
550
678
|
exportInfo.importedName,
|
|
551
679
|
nextSeen
|
|
552
680
|
);
|
|
@@ -563,9 +691,10 @@ function createStructuralHookResolver(options = {}) {
|
|
|
563
691
|
}
|
|
564
692
|
|
|
565
693
|
const importInfo = analysis.importBindings.get(exportInfo.localName);
|
|
566
|
-
|
|
694
|
+
const importSource = resolveModuleReference(analysis, importInfo);
|
|
695
|
+
if (importSource && importInfo.importedName !== "*") {
|
|
567
696
|
return getStructuralExportInfo(
|
|
568
|
-
analyzeModule(
|
|
697
|
+
analyzeModule(importSource),
|
|
569
698
|
importInfo.importedName,
|
|
570
699
|
nextSeen
|
|
571
700
|
);
|
|
@@ -587,12 +716,26 @@ function createStructuralHookResolver(options = {}) {
|
|
|
587
716
|
|
|
588
717
|
const exportInfo = analysis.exportBindings.get(exportedName);
|
|
589
718
|
if (!exportInfo) {
|
|
719
|
+
for (const exportAll of analysis.exportAllSources || []) {
|
|
720
|
+
const resolvedSource = resolveModuleReference(analysis, exportAll);
|
|
721
|
+
if (!resolvedSource) continue;
|
|
722
|
+
if (
|
|
723
|
+
isStructuralCustomExport(
|
|
724
|
+
analyzeModule(resolvedSource),
|
|
725
|
+
exportedName,
|
|
726
|
+
nextSeen
|
|
727
|
+
)
|
|
728
|
+
) {
|
|
729
|
+
return true;
|
|
730
|
+
}
|
|
731
|
+
}
|
|
590
732
|
return false;
|
|
591
733
|
}
|
|
592
734
|
|
|
593
|
-
|
|
735
|
+
const exportSource = resolveModuleReference(analysis, exportInfo);
|
|
736
|
+
if (exportSource) {
|
|
594
737
|
return isStructuralCustomExport(
|
|
595
|
-
analyzeModule(
|
|
738
|
+
analyzeModule(exportSource),
|
|
596
739
|
exportInfo.importedName,
|
|
597
740
|
nextSeen
|
|
598
741
|
);
|
|
@@ -603,9 +746,91 @@ function createStructuralHookResolver(options = {}) {
|
|
|
603
746
|
}
|
|
604
747
|
|
|
605
748
|
const importInfo = analysis.importBindings.get(exportInfo.localName);
|
|
606
|
-
|
|
749
|
+
const importSource = resolveModuleReference(analysis, importInfo);
|
|
750
|
+
if (importSource && importInfo.importedName !== "*") {
|
|
607
751
|
return isStructuralCustomExport(
|
|
608
|
-
analyzeModule(
|
|
752
|
+
analyzeModule(importSource),
|
|
753
|
+
importInfo.importedName,
|
|
754
|
+
nextSeen
|
|
755
|
+
);
|
|
756
|
+
}
|
|
757
|
+
|
|
758
|
+
return false;
|
|
759
|
+
}
|
|
760
|
+
|
|
761
|
+
function hasExportBinding(analysis, exportedName, seen = new Set()) {
|
|
762
|
+
if (!analysis || !exportedName) return "unresolved";
|
|
763
|
+
const key = `${analysis.filename}:has-export:${exportedName}`;
|
|
764
|
+
if (seen.has(key)) return false;
|
|
765
|
+
const nextSeen = new Set(seen);
|
|
766
|
+
nextSeen.add(key);
|
|
767
|
+
|
|
768
|
+
if (analysis.exportBindings.has(exportedName)) {
|
|
769
|
+
return true;
|
|
770
|
+
}
|
|
771
|
+
|
|
772
|
+
let sawUnresolvedExportAll = false;
|
|
773
|
+
for (const exportAll of analysis.exportAllSources || []) {
|
|
774
|
+
const resolvedSource = resolveModuleReference(analysis, exportAll);
|
|
775
|
+
if (!resolvedSource) {
|
|
776
|
+
sawUnresolvedExportAll = true;
|
|
777
|
+
continue;
|
|
778
|
+
}
|
|
779
|
+
const result = hasExportBinding(
|
|
780
|
+
analyzeModule(resolvedSource),
|
|
781
|
+
exportedName,
|
|
782
|
+
nextSeen
|
|
783
|
+
);
|
|
784
|
+
if (result === true) return true;
|
|
785
|
+
if (result === "unresolved") sawUnresolvedExportAll = true;
|
|
786
|
+
}
|
|
787
|
+
|
|
788
|
+
return sawUnresolvedExportAll ? "unresolved" : false;
|
|
789
|
+
}
|
|
790
|
+
|
|
791
|
+
function isRuntimeCustomExport(analysis, exportedName, seen = new Set()) {
|
|
792
|
+
if (!analysis || !exportedName) return false;
|
|
793
|
+
const key = `${analysis.filename}:runtime-custom:${exportedName}`;
|
|
794
|
+
if (seen.has(key)) return false;
|
|
795
|
+
const nextSeen = new Set(seen);
|
|
796
|
+
nextSeen.add(key);
|
|
797
|
+
|
|
798
|
+
const exportInfo = analysis.exportBindings.get(exportedName);
|
|
799
|
+
if (!exportInfo) {
|
|
800
|
+
for (const exportAll of analysis.exportAllSources || []) {
|
|
801
|
+
const resolvedSource = resolveModuleReference(analysis, exportAll);
|
|
802
|
+
if (!resolvedSource) continue;
|
|
803
|
+
if (
|
|
804
|
+
isRuntimeCustomExport(
|
|
805
|
+
analyzeModule(resolvedSource),
|
|
806
|
+
exportedName,
|
|
807
|
+
nextSeen
|
|
808
|
+
)
|
|
809
|
+
) {
|
|
810
|
+
return true;
|
|
811
|
+
}
|
|
812
|
+
}
|
|
813
|
+
return false;
|
|
814
|
+
}
|
|
815
|
+
|
|
816
|
+
const exportSource = resolveModuleReference(analysis, exportInfo);
|
|
817
|
+
if (exportSource) {
|
|
818
|
+
return isRuntimeCustomExport(
|
|
819
|
+
analyzeModule(exportSource),
|
|
820
|
+
exportInfo.importedName,
|
|
821
|
+
nextSeen
|
|
822
|
+
);
|
|
823
|
+
}
|
|
824
|
+
|
|
825
|
+
if (localCustomHookUsesRuntimeHook(analysis, exportInfo.localName, nextSeen)) {
|
|
826
|
+
return true;
|
|
827
|
+
}
|
|
828
|
+
|
|
829
|
+
const importInfo = analysis.importBindings.get(exportInfo.localName);
|
|
830
|
+
const importSource = resolveModuleReference(analysis, importInfo);
|
|
831
|
+
if (importSource && importInfo.importedName !== "*") {
|
|
832
|
+
return isRuntimeCustomExport(
|
|
833
|
+
analyzeModule(importSource),
|
|
609
834
|
importInfo.importedName,
|
|
610
835
|
nextSeen
|
|
611
836
|
);
|
|
@@ -614,10 +839,22 @@ function createStructuralHookResolver(options = {}) {
|
|
|
614
839
|
return false;
|
|
615
840
|
}
|
|
616
841
|
|
|
617
|
-
return function structuralHookResolver({ filename, source, importedName }) {
|
|
842
|
+
return function structuralHookResolver({ filename, source, importedName, runtimeCustomOnly = false }) {
|
|
618
843
|
const resolved = resolveImport(filename, source);
|
|
619
|
-
if (!resolved) return false;
|
|
844
|
+
if (!resolved) return runtimeCustomOnly ? "unresolved-custom-hook" : false;
|
|
620
845
|
const analysis = analyzeModule(resolved);
|
|
846
|
+
if (!analysis && runtimeCustomOnly) {
|
|
847
|
+
return "unresolved-custom-hook";
|
|
848
|
+
}
|
|
849
|
+
if (runtimeCustomOnly) {
|
|
850
|
+
const exportStatus = hasExportBinding(analysis, importedName);
|
|
851
|
+
if (exportStatus !== true) {
|
|
852
|
+
return "unresolved-custom-hook";
|
|
853
|
+
}
|
|
854
|
+
return isRuntimeCustomExport(analysis, importedName)
|
|
855
|
+
? "runtime-custom-hook"
|
|
856
|
+
: false;
|
|
857
|
+
}
|
|
621
858
|
const structuralInfo = getStructuralExportInfo(analysis, importedName);
|
|
622
859
|
if (structuralInfo) {
|
|
623
860
|
return structuralInfo;
|
|
@@ -661,6 +898,8 @@ function createStableIdCallsiteMetadata(callPath, state, t) {
|
|
|
661
898
|
}
|
|
662
899
|
|
|
663
900
|
export default function transformLitsxHooks(api, options = {}) {
|
|
901
|
+
const structuralHookResolver = createStructuralHookResolver(options);
|
|
902
|
+
const ignoredCustomHookSources = new Set(options.ignoredCustomHookSources || []);
|
|
664
903
|
const plugin = createRuntimeHooksTransform({
|
|
665
904
|
pluginName: "transform-litsx-hooks",
|
|
666
905
|
runtimeModule: RUNTIME_MODULE,
|
|
@@ -673,6 +912,21 @@ export default function transformLitsxHooks(api, options = {}) {
|
|
|
673
912
|
|
|
674
913
|
return plugin(api, {
|
|
675
914
|
...options,
|
|
676
|
-
structuralHookResolver
|
|
915
|
+
structuralHookResolver,
|
|
916
|
+
customHookResolver({ filename, source, importedName }) {
|
|
917
|
+
if (ignoredCustomHookSources.has(source)) {
|
|
918
|
+
return false;
|
|
919
|
+
}
|
|
920
|
+
const result = structuralHookResolver({
|
|
921
|
+
filename,
|
|
922
|
+
source,
|
|
923
|
+
importedName,
|
|
924
|
+
runtimeCustomOnly: true,
|
|
925
|
+
});
|
|
926
|
+
if (result === "unresolved-custom-hook") {
|
|
927
|
+
return result;
|
|
928
|
+
}
|
|
929
|
+
return result === "runtime-custom-hook";
|
|
930
|
+
},
|
|
677
931
|
});
|
|
678
932
|
}
|
package/src/pipeline.js
CHANGED
|
@@ -16,10 +16,69 @@ const NATIVE_TRANSFORM_OPTION_KEYS = [
|
|
|
16
16
|
];
|
|
17
17
|
|
|
18
18
|
const HOOK_FEATURE_PATTERN = /\b(?:defineHook|useOnConnect|useAfterUpdate|useOnCommit|useMemoValue|useStableCallback|useEvent|useEmit|usePrevious|useReducedState|useState|useControlledState|useAsyncState|useOptimistic|useExpose|useExternalStore|useHost|useHostContent|useSlot|useTextContent|useTransition|useDeferredValue|useStyle|useRef|useCallbackRef|useStableId)\b/;
|
|
19
|
+
const DEFAULT_OR_NAMED_IMPORT_PATTERN = /\bimport\s+(?!type\b)([^'";]+?)\s+from\b/g;
|
|
20
|
+
const NAMESPACE_IMPORT_PATTERN = /\bimport\s+(?!type\b)\*\s+as\s+([A-Za-z_$][\w$]*)\s+from\b/g;
|
|
19
21
|
const REF_FEATURE_PATTERN = /\buseRef\b|\bref\s*=/;
|
|
20
22
|
const SCOPED_ELEMENTS_PATTERN = /<\s*(?:[A-Z][\w.]*(?=[\s/>])|[a-z][\w]*-[\w-]*(?=[\s/>]))/;
|
|
21
23
|
const LIGHT_DOM_PATTERN = /\^lightDom\b|static\s+lightDom\s*=\s*true\b/;
|
|
22
24
|
|
|
25
|
+
function escapeRegExp(value) {
|
|
26
|
+
return String(value).replace(/[\\^$.*+?()[\]{}|]/g, "\\$&");
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
function hasCallToLocal(text, localName) {
|
|
30
|
+
return new RegExp(`\\b${escapeRegExp(localName)}\\s*\\(`).test(text);
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
function getImportedLocalNames(importClause) {
|
|
34
|
+
const locals = [];
|
|
35
|
+
const namedMatch = importClause.match(/\{([^}]*)\}/);
|
|
36
|
+
const beforeNamed = importClause.split("{", 1)[0].replace(/,$/, "").trim();
|
|
37
|
+
|
|
38
|
+
if (beforeNamed && !beforeNamed.includes("*")) {
|
|
39
|
+
locals.push(beforeNamed);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
if (namedMatch) {
|
|
43
|
+
for (const rawSpecifier of namedMatch[1].split(",")) {
|
|
44
|
+
const specifier = rawSpecifier.trim();
|
|
45
|
+
if (!specifier || specifier.startsWith("type ")) continue;
|
|
46
|
+
const parts = specifier.split(/\s+as\s+/);
|
|
47
|
+
const localName = (parts[1] || parts[0]).trim();
|
|
48
|
+
if (localName) {
|
|
49
|
+
locals.push(localName);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return locals.filter((name) => /^use[A-Z0-9][A-Za-z0-9_$]*$/.test(name));
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function hasImportedCustomHookCall(text) {
|
|
58
|
+
DEFAULT_OR_NAMED_IMPORT_PATTERN.lastIndex = 0;
|
|
59
|
+
let match;
|
|
60
|
+
while ((match = DEFAULT_OR_NAMED_IMPORT_PATTERN.exec(text))) {
|
|
61
|
+
for (const localName of getImportedLocalNames(match[1])) {
|
|
62
|
+
if (hasCallToLocal(text, localName)) {
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
NAMESPACE_IMPORT_PATTERN.lastIndex = 0;
|
|
69
|
+
while ((match = NAMESPACE_IMPORT_PATTERN.exec(text))) {
|
|
70
|
+
const namespaceName = match[1];
|
|
71
|
+
if (
|
|
72
|
+
new RegExp(`\\b${escapeRegExp(namespaceName)}\\s*\\.\\s*use[A-Z0-9][A-Za-z0-9_$]*\\s*\\(`)
|
|
73
|
+
.test(text)
|
|
74
|
+
) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
|
|
23
82
|
export function normalizeTransformLitsxOptions(options = {}) {
|
|
24
83
|
const transformLitsxOptions = {
|
|
25
84
|
...(options.transformLitsx || {}),
|
|
@@ -39,7 +98,9 @@ export function detectLitsxSourceFeatures(source, options = {}) {
|
|
|
39
98
|
const transformOptions = normalizeTransformLitsxOptions(options);
|
|
40
99
|
|
|
41
100
|
return {
|
|
42
|
-
hooks:
|
|
101
|
+
hooks:
|
|
102
|
+
HOOK_FEATURE_PATTERN.test(text) ||
|
|
103
|
+
hasImportedCustomHookCall(text),
|
|
43
104
|
domRefs: REF_FEATURE_PATTERN.test(text),
|
|
44
105
|
scopedElements:
|
|
45
106
|
transformOptions.defaultDomMode === "light" ||
|