svelte2tsx 0.7.25 → 0.7.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +54 -11
- package/index.mjs +54 -11
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -4752,11 +4752,17 @@ class HoistableInterfaces {
|
|
|
4752
4752
|
});
|
|
4753
4753
|
}
|
|
4754
4754
|
});
|
|
4755
|
-
this.
|
|
4756
|
-
|
|
4757
|
-
|
|
4758
|
-
|
|
4759
|
-
|
|
4755
|
+
if (this.import_type_set.has(interface_name)) {
|
|
4756
|
+
// shadowed; delete because we can't hoist
|
|
4757
|
+
this.import_type_set.delete(interface_name);
|
|
4758
|
+
}
|
|
4759
|
+
else {
|
|
4760
|
+
this.interface_map.set(interface_name, {
|
|
4761
|
+
type_deps: type_dependencies,
|
|
4762
|
+
value_deps: value_dependencies,
|
|
4763
|
+
node
|
|
4764
|
+
});
|
|
4765
|
+
}
|
|
4760
4766
|
}
|
|
4761
4767
|
// Handle Type Alias Declarations
|
|
4762
4768
|
if (ts.isTypeAliasDeclaration(node)) {
|
|
@@ -4765,12 +4771,41 @@ class HoistableInterfaces {
|
|
|
4765
4771
|
const value_dependencies = new Set();
|
|
4766
4772
|
const generics = (_d = (_c = node.typeParameters) === null || _c === void 0 ? void 0 : _c.map((param) => param.name.text)) !== null && _d !== void 0 ? _d : [];
|
|
4767
4773
|
this.collectTypeDependencies(node.type, type_dependencies, value_dependencies, generics);
|
|
4768
|
-
this.
|
|
4769
|
-
|
|
4770
|
-
|
|
4771
|
-
|
|
4774
|
+
if (this.import_type_set.has(alias_name)) {
|
|
4775
|
+
// shadowed; delete because we can't hoist
|
|
4776
|
+
this.import_type_set.delete(alias_name);
|
|
4777
|
+
}
|
|
4778
|
+
else {
|
|
4779
|
+
this.interface_map.set(alias_name, {
|
|
4780
|
+
type_deps: type_dependencies,
|
|
4781
|
+
value_deps: value_dependencies,
|
|
4782
|
+
node
|
|
4783
|
+
});
|
|
4784
|
+
}
|
|
4785
|
+
}
|
|
4786
|
+
// Handle top-level declarations: They could shadow module declarations; delete them from the set of allowed import values
|
|
4787
|
+
if (ts.isVariableStatement(node)) {
|
|
4788
|
+
node.declarationList.declarations.forEach((declaration) => {
|
|
4789
|
+
if (ts.isIdentifier(declaration.name)) {
|
|
4790
|
+
this.import_value_set.delete(declaration.name.text);
|
|
4791
|
+
}
|
|
4772
4792
|
});
|
|
4773
4793
|
}
|
|
4794
|
+
if (ts.isFunctionDeclaration(node) && node.name) {
|
|
4795
|
+
this.import_value_set.delete(node.name.text);
|
|
4796
|
+
}
|
|
4797
|
+
if (ts.isClassDeclaration(node) && node.name) {
|
|
4798
|
+
this.import_value_set.delete(node.name.text);
|
|
4799
|
+
}
|
|
4800
|
+
if (ts.isEnumDeclaration(node)) {
|
|
4801
|
+
this.import_value_set.delete(node.name.text);
|
|
4802
|
+
}
|
|
4803
|
+
if (ts.isTypeAliasDeclaration(node)) {
|
|
4804
|
+
this.import_type_set.delete(node.name.text);
|
|
4805
|
+
}
|
|
4806
|
+
if (ts.isInterfaceDeclaration(node)) {
|
|
4807
|
+
this.import_type_set.delete(node.name.text);
|
|
4808
|
+
}
|
|
4774
4809
|
}
|
|
4775
4810
|
analyze$propsRune(node) {
|
|
4776
4811
|
var _a, _b;
|
|
@@ -4836,9 +4871,12 @@ class HoistableInterfaces {
|
|
|
4836
4871
|
/**
|
|
4837
4872
|
* Moves all interfaces that can be hoisted to the top of the script, if the $props rune's type is hoistable.
|
|
4838
4873
|
*/
|
|
4839
|
-
moveHoistableInterfaces(str, astOffset, scriptStart) {
|
|
4874
|
+
moveHoistableInterfaces(str, astOffset, scriptStart, generics) {
|
|
4840
4875
|
if (!this.props_interface.name)
|
|
4841
4876
|
return;
|
|
4877
|
+
for (const generic of generics) {
|
|
4878
|
+
this.import_type_set.delete(generic);
|
|
4879
|
+
}
|
|
4842
4880
|
const hoistable = this.determineHoistableInterfaces();
|
|
4843
4881
|
if (hoistable.has(this.props_interface.name)) {
|
|
4844
4882
|
for (const [, node] of hoistable) {
|
|
@@ -6345,8 +6383,10 @@ class Generics {
|
|
|
6345
6383
|
var _a, _b, _c, _d;
|
|
6346
6384
|
this.str = str;
|
|
6347
6385
|
this.astOffset = astOffset;
|
|
6386
|
+
/** The whole `T extends boolean` */
|
|
6348
6387
|
this.definitions = [];
|
|
6349
6388
|
this.typeReferences = [];
|
|
6389
|
+
/** The `T` in `T extends boolean` */
|
|
6350
6390
|
this.references = [];
|
|
6351
6391
|
this.genericsAttr = script.attributes.find((attr) => attr.name === 'generics');
|
|
6352
6392
|
const generics = (_b = (_a = this.genericsAttr) === null || _a === void 0 ? void 0 : _a.value[0]) === null || _b === void 0 ? void 0 : _b.raw;
|
|
@@ -6405,6 +6445,9 @@ class Generics {
|
|
|
6405
6445
|
getTypeReferences() {
|
|
6406
6446
|
return this.typeReferences;
|
|
6407
6447
|
}
|
|
6448
|
+
getReferences() {
|
|
6449
|
+
return this.references;
|
|
6450
|
+
}
|
|
6408
6451
|
toDefinitionString(addIgnore = false) {
|
|
6409
6452
|
const surround = addIgnore ? surroundWithIgnoreComments : (str) => str;
|
|
6410
6453
|
return this.definitions.length ? surround(`<${this.definitions.join(',')}>`) : '';
|
|
@@ -6706,7 +6749,7 @@ function processInstanceScriptContent(str, script, events, implicitStoreValues,
|
|
|
6706
6749
|
// break dts generation (file will not be generated).
|
|
6707
6750
|
transformInterfacesToTypes(tsAst, str, astOffset, nodesToMove);
|
|
6708
6751
|
}
|
|
6709
|
-
exportedNames.hoistableInterfaces.moveHoistableInterfaces(str, astOffset, script.start);
|
|
6752
|
+
exportedNames.hoistableInterfaces.moveHoistableInterfaces(str, astOffset, script.start, generics.getReferences());
|
|
6710
6753
|
return {
|
|
6711
6754
|
exportedNames,
|
|
6712
6755
|
events,
|
package/index.mjs
CHANGED
|
@@ -4732,11 +4732,17 @@ class HoistableInterfaces {
|
|
|
4732
4732
|
});
|
|
4733
4733
|
}
|
|
4734
4734
|
});
|
|
4735
|
-
this.
|
|
4736
|
-
|
|
4737
|
-
|
|
4738
|
-
|
|
4739
|
-
|
|
4735
|
+
if (this.import_type_set.has(interface_name)) {
|
|
4736
|
+
// shadowed; delete because we can't hoist
|
|
4737
|
+
this.import_type_set.delete(interface_name);
|
|
4738
|
+
}
|
|
4739
|
+
else {
|
|
4740
|
+
this.interface_map.set(interface_name, {
|
|
4741
|
+
type_deps: type_dependencies,
|
|
4742
|
+
value_deps: value_dependencies,
|
|
4743
|
+
node
|
|
4744
|
+
});
|
|
4745
|
+
}
|
|
4740
4746
|
}
|
|
4741
4747
|
// Handle Type Alias Declarations
|
|
4742
4748
|
if (ts.isTypeAliasDeclaration(node)) {
|
|
@@ -4745,12 +4751,41 @@ class HoistableInterfaces {
|
|
|
4745
4751
|
const value_dependencies = new Set();
|
|
4746
4752
|
const generics = (_d = (_c = node.typeParameters) === null || _c === void 0 ? void 0 : _c.map((param) => param.name.text)) !== null && _d !== void 0 ? _d : [];
|
|
4747
4753
|
this.collectTypeDependencies(node.type, type_dependencies, value_dependencies, generics);
|
|
4748
|
-
this.
|
|
4749
|
-
|
|
4750
|
-
|
|
4751
|
-
|
|
4754
|
+
if (this.import_type_set.has(alias_name)) {
|
|
4755
|
+
// shadowed; delete because we can't hoist
|
|
4756
|
+
this.import_type_set.delete(alias_name);
|
|
4757
|
+
}
|
|
4758
|
+
else {
|
|
4759
|
+
this.interface_map.set(alias_name, {
|
|
4760
|
+
type_deps: type_dependencies,
|
|
4761
|
+
value_deps: value_dependencies,
|
|
4762
|
+
node
|
|
4763
|
+
});
|
|
4764
|
+
}
|
|
4765
|
+
}
|
|
4766
|
+
// Handle top-level declarations: They could shadow module declarations; delete them from the set of allowed import values
|
|
4767
|
+
if (ts.isVariableStatement(node)) {
|
|
4768
|
+
node.declarationList.declarations.forEach((declaration) => {
|
|
4769
|
+
if (ts.isIdentifier(declaration.name)) {
|
|
4770
|
+
this.import_value_set.delete(declaration.name.text);
|
|
4771
|
+
}
|
|
4752
4772
|
});
|
|
4753
4773
|
}
|
|
4774
|
+
if (ts.isFunctionDeclaration(node) && node.name) {
|
|
4775
|
+
this.import_value_set.delete(node.name.text);
|
|
4776
|
+
}
|
|
4777
|
+
if (ts.isClassDeclaration(node) && node.name) {
|
|
4778
|
+
this.import_value_set.delete(node.name.text);
|
|
4779
|
+
}
|
|
4780
|
+
if (ts.isEnumDeclaration(node)) {
|
|
4781
|
+
this.import_value_set.delete(node.name.text);
|
|
4782
|
+
}
|
|
4783
|
+
if (ts.isTypeAliasDeclaration(node)) {
|
|
4784
|
+
this.import_type_set.delete(node.name.text);
|
|
4785
|
+
}
|
|
4786
|
+
if (ts.isInterfaceDeclaration(node)) {
|
|
4787
|
+
this.import_type_set.delete(node.name.text);
|
|
4788
|
+
}
|
|
4754
4789
|
}
|
|
4755
4790
|
analyze$propsRune(node) {
|
|
4756
4791
|
var _a, _b;
|
|
@@ -4816,9 +4851,12 @@ class HoistableInterfaces {
|
|
|
4816
4851
|
/**
|
|
4817
4852
|
* Moves all interfaces that can be hoisted to the top of the script, if the $props rune's type is hoistable.
|
|
4818
4853
|
*/
|
|
4819
|
-
moveHoistableInterfaces(str, astOffset, scriptStart) {
|
|
4854
|
+
moveHoistableInterfaces(str, astOffset, scriptStart, generics) {
|
|
4820
4855
|
if (!this.props_interface.name)
|
|
4821
4856
|
return;
|
|
4857
|
+
for (const generic of generics) {
|
|
4858
|
+
this.import_type_set.delete(generic);
|
|
4859
|
+
}
|
|
4822
4860
|
const hoistable = this.determineHoistableInterfaces();
|
|
4823
4861
|
if (hoistable.has(this.props_interface.name)) {
|
|
4824
4862
|
for (const [, node] of hoistable) {
|
|
@@ -6325,8 +6363,10 @@ class Generics {
|
|
|
6325
6363
|
var _a, _b, _c, _d;
|
|
6326
6364
|
this.str = str;
|
|
6327
6365
|
this.astOffset = astOffset;
|
|
6366
|
+
/** The whole `T extends boolean` */
|
|
6328
6367
|
this.definitions = [];
|
|
6329
6368
|
this.typeReferences = [];
|
|
6369
|
+
/** The `T` in `T extends boolean` */
|
|
6330
6370
|
this.references = [];
|
|
6331
6371
|
this.genericsAttr = script.attributes.find((attr) => attr.name === 'generics');
|
|
6332
6372
|
const generics = (_b = (_a = this.genericsAttr) === null || _a === void 0 ? void 0 : _a.value[0]) === null || _b === void 0 ? void 0 : _b.raw;
|
|
@@ -6385,6 +6425,9 @@ class Generics {
|
|
|
6385
6425
|
getTypeReferences() {
|
|
6386
6426
|
return this.typeReferences;
|
|
6387
6427
|
}
|
|
6428
|
+
getReferences() {
|
|
6429
|
+
return this.references;
|
|
6430
|
+
}
|
|
6388
6431
|
toDefinitionString(addIgnore = false) {
|
|
6389
6432
|
const surround = addIgnore ? surroundWithIgnoreComments : (str) => str;
|
|
6390
6433
|
return this.definitions.length ? surround(`<${this.definitions.join(',')}>`) : '';
|
|
@@ -6686,7 +6729,7 @@ function processInstanceScriptContent(str, script, events, implicitStoreValues,
|
|
|
6686
6729
|
// break dts generation (file will not be generated).
|
|
6687
6730
|
transformInterfacesToTypes(tsAst, str, astOffset, nodesToMove);
|
|
6688
6731
|
}
|
|
6689
|
-
exportedNames.hoistableInterfaces.moveHoistableInterfaces(str, astOffset, script.start);
|
|
6732
|
+
exportedNames.hoistableInterfaces.moveHoistableInterfaces(str, astOffset, script.start, generics.getReferences());
|
|
6690
6733
|
return {
|
|
6691
6734
|
exportedNames,
|
|
6692
6735
|
events,
|