svelte2tsx 0.7.32 → 0.7.34

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.
Files changed (3) hide show
  1. package/index.js +22 -4
  2. package/index.mjs +22 -4
  3. package/package.json +1 -1
package/index.js CHANGED
@@ -6141,6 +6141,17 @@ class HoistableInterfaces {
6141
6141
  if (ts.isIdentifier(declaration.name)) {
6142
6142
  this.disallowed_values.add(declaration.name.text);
6143
6143
  }
6144
+ else {
6145
+ const walk = (node) => {
6146
+ if (ts.isIdentifier(node) &&
6147
+ ts.isBindingElement(node.parent) &&
6148
+ node.parent.name === node) {
6149
+ this.disallowed_values.add(node.text);
6150
+ }
6151
+ ts.forEachChild(node, walk);
6152
+ };
6153
+ walk(declaration.name);
6154
+ }
6144
6155
  });
6145
6156
  }
6146
6157
  if (ts.isFunctionDeclaration(node) && node.name) {
@@ -6200,7 +6211,7 @@ class HoistableInterfaces {
6200
6211
  }
6201
6212
  }
6202
6213
  for (const dep of deps.value_deps) {
6203
- if (this.disallowed_values.has(dep)) {
6214
+ if (!this.isAllowedReference(dep)) {
6204
6215
  this.disallowed_types.add(interface_name);
6205
6216
  can_hoist = false;
6206
6217
  break;
@@ -6217,7 +6228,7 @@ class HoistableInterfaces {
6217
6228
  ...this.props_interface.type_deps,
6218
6229
  ...this.props_interface.value_deps
6219
6230
  ].every((dep) => {
6220
- return !this.disallowed_types.has(dep) && !this.disallowed_values.has(dep);
6231
+ return !this.disallowed_types.has(dep) && this.isAllowedReference(dep);
6221
6232
  });
6222
6233
  if (can_hoist) {
6223
6234
  hoistable_interfaces.set(this.props_interface.name, this.props_interface.node);
@@ -6261,7 +6272,14 @@ class HoistableInterfaces {
6261
6272
  }
6262
6273
  }
6263
6274
  isAllowedReference(reference) {
6264
- return !this.disallowed_values.has(reference);
6275
+ return !(this.disallowed_values.has(reference) ||
6276
+ reference === '$$props' ||
6277
+ reference === '$$restProps' ||
6278
+ reference === '$$slots' ||
6279
+ // could be a $store reference
6280
+ (reference[0] === '$' &&
6281
+ reference[1] !== '$' &&
6282
+ this.disallowed_values.has(reference.slice(1))));
6265
6283
  }
6266
6284
  /**
6267
6285
  * Collects type and value dependencies from a given TypeNode.
@@ -7809,7 +7827,7 @@ function svelte2tsx(svelte, options = { parse: compiler.parse }) {
7809
7827
  if (hoist_to_module) {
7810
7828
  str.move(start, end, scriptTag
7811
7829
  ? scriptTag.start + 1 // +1 because imports are also moved at that position, and we want to move interfaces after imports
7812
- : moduleScriptTag.end);
7830
+ : instanceScriptTarget);
7813
7831
  }
7814
7832
  else if (scriptTag) {
7815
7833
  str.move(start, end, renderFunctionStart);
package/index.mjs CHANGED
@@ -6121,6 +6121,17 @@ class HoistableInterfaces {
6121
6121
  if (ts.isIdentifier(declaration.name)) {
6122
6122
  this.disallowed_values.add(declaration.name.text);
6123
6123
  }
6124
+ else {
6125
+ const walk = (node) => {
6126
+ if (ts.isIdentifier(node) &&
6127
+ ts.isBindingElement(node.parent) &&
6128
+ node.parent.name === node) {
6129
+ this.disallowed_values.add(node.text);
6130
+ }
6131
+ ts.forEachChild(node, walk);
6132
+ };
6133
+ walk(declaration.name);
6134
+ }
6124
6135
  });
6125
6136
  }
6126
6137
  if (ts.isFunctionDeclaration(node) && node.name) {
@@ -6180,7 +6191,7 @@ class HoistableInterfaces {
6180
6191
  }
6181
6192
  }
6182
6193
  for (const dep of deps.value_deps) {
6183
- if (this.disallowed_values.has(dep)) {
6194
+ if (!this.isAllowedReference(dep)) {
6184
6195
  this.disallowed_types.add(interface_name);
6185
6196
  can_hoist = false;
6186
6197
  break;
@@ -6197,7 +6208,7 @@ class HoistableInterfaces {
6197
6208
  ...this.props_interface.type_deps,
6198
6209
  ...this.props_interface.value_deps
6199
6210
  ].every((dep) => {
6200
- return !this.disallowed_types.has(dep) && !this.disallowed_values.has(dep);
6211
+ return !this.disallowed_types.has(dep) && this.isAllowedReference(dep);
6201
6212
  });
6202
6213
  if (can_hoist) {
6203
6214
  hoistable_interfaces.set(this.props_interface.name, this.props_interface.node);
@@ -6241,7 +6252,14 @@ class HoistableInterfaces {
6241
6252
  }
6242
6253
  }
6243
6254
  isAllowedReference(reference) {
6244
- return !this.disallowed_values.has(reference);
6255
+ return !(this.disallowed_values.has(reference) ||
6256
+ reference === '$$props' ||
6257
+ reference === '$$restProps' ||
6258
+ reference === '$$slots' ||
6259
+ // could be a $store reference
6260
+ (reference[0] === '$' &&
6261
+ reference[1] !== '$' &&
6262
+ this.disallowed_values.has(reference.slice(1))));
6245
6263
  }
6246
6264
  /**
6247
6265
  * Collects type and value dependencies from a given TypeNode.
@@ -7789,7 +7807,7 @@ function svelte2tsx(svelte, options = { parse }) {
7789
7807
  if (hoist_to_module) {
7790
7808
  str.move(start, end, scriptTag
7791
7809
  ? scriptTag.start + 1 // +1 because imports are also moved at that position, and we want to move interfaces after imports
7792
- : moduleScriptTag.end);
7810
+ : instanceScriptTarget);
7793
7811
  }
7794
7812
  else if (scriptTag) {
7795
7813
  str.move(start, end, renderFunctionStart);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "svelte2tsx",
3
- "version": "0.7.32",
3
+ "version": "0.7.34",
4
4
  "description": "Convert Svelte components to TSX for type checking",
5
5
  "author": "David Pershouse",
6
6
  "license": "MIT",