zshy 0.3.2 → 0.3.3

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.
@@ -58,6 +58,10 @@ const analyzeExports = (sourceFile) => {
58
58
  else if (ts.isExportDeclaration(node) && node.exportClause) {
59
59
  hasNamedExports = true;
60
60
  }
61
+ // 3a) export * from "module" - also counts as named exports
62
+ else if (ts.isExportDeclaration(node) && !node.exportClause && node.moduleSpecifier) {
63
+ hasNamedExports = true;
64
+ }
61
65
  // 4) named `export const/let/var …`
62
66
  else if (ts.isVariableStatement(node) && node.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)) {
63
67
  hasNamedExports = true;
@@ -1 +1 @@
1
- {"version":3,"file":"tx-analyze-exports.js","sourceRoot":"","sources":["../src/tx-analyze-exports.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tx-analyze-exports.js","sourceRoot":"","sources":["../src/tx-analyze-exports.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tx-analyze-exports.d.ts","sourceRoot":"","sources":["../src/tx-analyze-exports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,eAAO,MAAM,cAAc,GACzB,YAAY,EAAE,CAAC,UAAU,KACxB;IAAE,iBAAiB,EAAE,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAmDpE,CAAC"}
1
+ {"version":3,"file":"tx-analyze-exports.d.ts","sourceRoot":"","sources":["../src/tx-analyze-exports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,eAAO,MAAM,cAAc,GACzB,YAAY,EAAE,CAAC,UAAU,KACxB;IAAE,iBAAiB,EAAE,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAuDpE,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tx-analyze-exports.d.ts","sourceRoot":"","sources":["../src/tx-analyze-exports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,eAAO,MAAM,cAAc,GACzB,YAAY,EAAE,CAAC,UAAU,KACxB;IAAE,iBAAiB,EAAE,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAmDpE,CAAC"}
1
+ {"version":3,"file":"tx-analyze-exports.d.ts","sourceRoot":"","sources":["../src/tx-analyze-exports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAGjC,eAAO,MAAM,cAAc,GACzB,YAAY,EAAE,CAAC,UAAU,KACxB;IAAE,iBAAiB,EAAE,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAuDpE,CAAC"}
@@ -22,6 +22,10 @@ export const analyzeExports = (sourceFile) => {
22
22
  else if (ts.isExportDeclaration(node) && node.exportClause) {
23
23
  hasNamedExports = true;
24
24
  }
25
+ // 3a) export * from "module" - also counts as named exports
26
+ else if (ts.isExportDeclaration(node) && !node.exportClause && node.moduleSpecifier) {
27
+ hasNamedExports = true;
28
+ }
25
29
  // 4) named `export const/let/var …`
26
30
  else if (ts.isVariableStatement(node) && node.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)) {
27
31
  hasNamedExports = true;
@@ -1 +1 @@
1
- {"version":3,"file":"tx-analyze-exports.js","sourceRoot":"","sources":["../src/tx-analyze-exports.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,sDAAsD;AACtD,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,UAAyB,EAC6C,EAAE;IACxE,IAAI,iBAAiB,GAAwB,IAAI,CAAC;IAClD,IAAI,eAAe,GAAG,KAAK,CAAC;IAE5B,MAAM,OAAO,GAAG,CAAC,IAAa,EAAQ,EAAE;QACtC,4BAA4B;QAC5B,IAAI,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACxD,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,yDAAyD;aACpD,IACH,CAAC,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC7B,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAC3B,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC;YAC/B,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC;YAC/B,EAAE,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;YACnE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EACnE,CAAC;YACD,iBAAiB,GAAG,IAAI,CAAC;QAC3B,CAAC;QACD,mEAAmE;aAC9D,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC3D,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,oCAAoC;aAC/B,IAAI,EAAE,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YAC7G,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,mDAAmD;aAC9C,IACH,EAAE,CAAC,qBAAqB,CAAC,IAAI,CAAC;YAC9B,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;YACnE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EACpE,CAAC;YACD,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;QACD,gDAAgD;aAC3C,IACH,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC;YAC3B,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;YACnE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EACpE,CAAC;YACD,eAAe,GAAG,IAAI,CAAC;QACzB,CAAC;QAED,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC,CAAC;IAEF,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC;AAChD,CAAC,CAAC"}
1
+ {"version":3,"file":"tx-analyze-exports.js","sourceRoot":"","sources":["../src/tx-analyze-exports.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "zshy",
3
- "version": "0.3.2",
3
+ "version": "0.3.3",
4
4
  "type": "module",
5
5
  "description": "Gold-standard build tool for TypeScript libraries",
6
6
  "keywords": [