@tamagui/static 1.14.1 → 1.14.2

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 (195) hide show
  1. package/dist/cjs/constants.js +52 -1
  2. package/dist/cjs/constants.js.map +2 -2
  3. package/dist/cjs/extractor/accessSafe.js +52 -1
  4. package/dist/cjs/extractor/accessSafe.js.map +2 -2
  5. package/dist/cjs/extractor/babelParse.js +66 -1
  6. package/dist/cjs/extractor/babelParse.js.map +2 -2
  7. package/dist/cjs/extractor/buildClassName.js +99 -1
  8. package/dist/cjs/extractor/buildClassName.js.map +2 -2
  9. package/dist/cjs/extractor/bundle.js +126 -1
  10. package/dist/cjs/extractor/bundle.js.map +2 -2
  11. package/dist/cjs/extractor/createEvaluator.js +86 -1
  12. package/dist/cjs/extractor/createEvaluator.js.map +2 -2
  13. package/dist/cjs/extractor/createExtractor.js +1630 -15
  14. package/dist/cjs/extractor/createExtractor.js.map +2 -2
  15. package/dist/cjs/extractor/ensureImportingConcat.js +64 -1
  16. package/dist/cjs/extractor/ensureImportingConcat.js.map +2 -2
  17. package/dist/cjs/extractor/evaluateAstNode.js +130 -1
  18. package/dist/cjs/extractor/evaluateAstNode.js.map +2 -2
  19. package/dist/cjs/extractor/extractHelpers.js +207 -1
  20. package/dist/cjs/extractor/extractHelpers.js.map +2 -2
  21. package/dist/cjs/extractor/extractMediaStyle.js +193 -1
  22. package/dist/cjs/extractor/extractMediaStyle.js.map +2 -2
  23. package/dist/cjs/extractor/extractToClassNames.js +413 -13
  24. package/dist/cjs/extractor/extractToClassNames.js.map +2 -2
  25. package/dist/cjs/extractor/findTopmostFunction.js +43 -1
  26. package/dist/cjs/extractor/findTopmostFunction.js.map +2 -2
  27. package/dist/cjs/extractor/generatedUid.js +59 -1
  28. package/dist/cjs/extractor/generatedUid.js.map +2 -2
  29. package/dist/cjs/extractor/getPrefixLogs.js +31 -1
  30. package/dist/cjs/extractor/getPrefixLogs.js.map +2 -2
  31. package/dist/cjs/extractor/getPropValueFromAttributes.js +89 -1
  32. package/dist/cjs/extractor/getPropValueFromAttributes.js.map +2 -2
  33. package/dist/cjs/extractor/getSourceModule.js +103 -1
  34. package/dist/cjs/extractor/getSourceModule.js.map +2 -2
  35. package/dist/cjs/extractor/getStaticBindingsForScope.js +225 -1
  36. package/dist/cjs/extractor/getStaticBindingsForScope.js.map +2 -2
  37. package/dist/cjs/extractor/hoistClassNames.js +74 -1
  38. package/dist/cjs/extractor/hoistClassNames.js.map +2 -2
  39. package/dist/cjs/extractor/literalToAst.js +115 -1
  40. package/dist/cjs/extractor/literalToAst.js.map +2 -2
  41. package/dist/cjs/extractor/loadFile.js +20 -2
  42. package/dist/cjs/extractor/loadFile.js.map +2 -2
  43. package/dist/cjs/extractor/loadTamagui.js +432 -15
  44. package/dist/cjs/extractor/loadTamagui.js.map +2 -2
  45. package/dist/cjs/extractor/logLines.js +43 -3
  46. package/dist/cjs/extractor/logLines.js.map +2 -2
  47. package/dist/cjs/extractor/normalizeTernaries.js +85 -1
  48. package/dist/cjs/extractor/normalizeTernaries.js.map +2 -2
  49. package/dist/cjs/extractor/removeUnusedHooks.js +109 -1
  50. package/dist/cjs/extractor/removeUnusedHooks.js.map +2 -2
  51. package/dist/cjs/extractor/timer.js +52 -1
  52. package/dist/cjs/extractor/timer.js.map +2 -2
  53. package/dist/cjs/extractor/validHTMLAttributes.js +126 -1
  54. package/dist/cjs/extractor/validHTMLAttributes.js.map +2 -2
  55. package/dist/cjs/getPragmaOptions.js +67 -2
  56. package/dist/cjs/getPragmaOptions.js.map +2 -2
  57. package/dist/cjs/helpers/memoize.js +45 -1
  58. package/dist/cjs/helpers/memoize.js.map +2 -2
  59. package/dist/cjs/index.js +42 -1
  60. package/dist/cjs/index.js.map +2 -2
  61. package/dist/cjs/require.js +81 -5
  62. package/dist/cjs/require.js.map +2 -2
  63. package/dist/cjs/types.js +16 -1
  64. package/dist/cjs/types.js.map +2 -2
  65. package/dist/cjs/webpackPlugin.js +34 -1
  66. package/dist/cjs/webpackPlugin.js.map +2 -2
  67. package/dist/esm/constants.js +14 -1
  68. package/dist/esm/constants.js.map +2 -2
  69. package/dist/esm/constants.mjs +14 -1
  70. package/dist/esm/constants.mjs.map +2 -2
  71. package/dist/esm/extractor/accessSafe.js +18 -1
  72. package/dist/esm/extractor/accessSafe.js.map +2 -2
  73. package/dist/esm/extractor/accessSafe.mjs +18 -1
  74. package/dist/esm/extractor/accessSafe.mjs.map +2 -2
  75. package/dist/esm/extractor/babelParse.js +31 -1
  76. package/dist/esm/extractor/babelParse.js.map +2 -2
  77. package/dist/esm/extractor/babelParse.mjs +31 -1
  78. package/dist/esm/extractor/babelParse.mjs.map +2 -2
  79. package/dist/esm/extractor/buildClassName.js +64 -1
  80. package/dist/esm/extractor/buildClassName.js.map +2 -2
  81. package/dist/esm/extractor/buildClassName.mjs +64 -1
  82. package/dist/esm/extractor/buildClassName.mjs.map +2 -2
  83. package/dist/esm/extractor/bundle.js +91 -1
  84. package/dist/esm/extractor/bundle.js.map +2 -2
  85. package/dist/esm/extractor/bundle.mjs +91 -1
  86. package/dist/esm/extractor/bundle.mjs.map +2 -2
  87. package/dist/esm/extractor/createEvaluator.js +51 -1
  88. package/dist/esm/extractor/createEvaluator.js.map +2 -2
  89. package/dist/esm/extractor/createEvaluator.mjs +51 -1
  90. package/dist/esm/extractor/createEvaluator.mjs.map +2 -2
  91. package/dist/esm/extractor/createExtractor.js +1613 -15
  92. package/dist/esm/extractor/createExtractor.js.map +2 -2
  93. package/dist/esm/extractor/createExtractor.mjs +1613 -15
  94. package/dist/esm/extractor/createExtractor.mjs.map +2 -2
  95. package/dist/esm/extractor/ensureImportingConcat.js +30 -1
  96. package/dist/esm/extractor/ensureImportingConcat.js.map +2 -2
  97. package/dist/esm/extractor/ensureImportingConcat.mjs +30 -1
  98. package/dist/esm/extractor/ensureImportingConcat.mjs.map +2 -2
  99. package/dist/esm/extractor/evaluateAstNode.js +96 -1
  100. package/dist/esm/extractor/evaluateAstNode.js.map +2 -2
  101. package/dist/esm/extractor/evaluateAstNode.mjs +96 -1
  102. package/dist/esm/extractor/evaluateAstNode.mjs.map +2 -2
  103. package/dist/esm/extractor/extractHelpers.js +161 -1
  104. package/dist/esm/extractor/extractHelpers.js.map +2 -2
  105. package/dist/esm/extractor/extractHelpers.mjs +161 -1
  106. package/dist/esm/extractor/extractHelpers.mjs.map +2 -2
  107. package/dist/esm/extractor/extractMediaStyle.js +158 -1
  108. package/dist/esm/extractor/extractMediaStyle.js.map +2 -2
  109. package/dist/esm/extractor/extractMediaStyle.mjs +158 -1
  110. package/dist/esm/extractor/extractMediaStyle.mjs.map +2 -2
  111. package/dist/esm/extractor/extractToClassNames.js +379 -13
  112. package/dist/esm/extractor/extractToClassNames.js.map +2 -2
  113. package/dist/esm/extractor/extractToClassNames.mjs +379 -13
  114. package/dist/esm/extractor/extractToClassNames.mjs.map +2 -2
  115. package/dist/esm/extractor/findTopmostFunction.js +19 -1
  116. package/dist/esm/extractor/findTopmostFunction.js.map +2 -2
  117. package/dist/esm/extractor/findTopmostFunction.mjs +19 -1
  118. package/dist/esm/extractor/findTopmostFunction.mjs.map +2 -2
  119. package/dist/esm/extractor/generatedUid.js +25 -1
  120. package/dist/esm/extractor/generatedUid.js.map +2 -2
  121. package/dist/esm/extractor/generatedUid.mjs +25 -1
  122. package/dist/esm/extractor/generatedUid.mjs.map +2 -2
  123. package/dist/esm/extractor/getPrefixLogs.js +7 -1
  124. package/dist/esm/extractor/getPrefixLogs.js.map +2 -2
  125. package/dist/esm/extractor/getPrefixLogs.mjs +7 -1
  126. package/dist/esm/extractor/getPrefixLogs.mjs.map +2 -2
  127. package/dist/esm/extractor/getPropValueFromAttributes.js +55 -1
  128. package/dist/esm/extractor/getPropValueFromAttributes.js.map +2 -2
  129. package/dist/esm/extractor/getPropValueFromAttributes.mjs +55 -1
  130. package/dist/esm/extractor/getPropValueFromAttributes.mjs.map +2 -2
  131. package/dist/esm/extractor/getSourceModule.js +69 -1
  132. package/dist/esm/extractor/getSourceModule.js.map +2 -2
  133. package/dist/esm/extractor/getSourceModule.mjs +69 -1
  134. package/dist/esm/extractor/getSourceModule.mjs.map +2 -2
  135. package/dist/esm/extractor/getStaticBindingsForScope.js +190 -1
  136. package/dist/esm/extractor/getStaticBindingsForScope.js.map +2 -2
  137. package/dist/esm/extractor/getStaticBindingsForScope.mjs +190 -1
  138. package/dist/esm/extractor/getStaticBindingsForScope.mjs.map +2 -2
  139. package/dist/esm/extractor/hoistClassNames.js +40 -1
  140. package/dist/esm/extractor/hoistClassNames.js.map +2 -2
  141. package/dist/esm/extractor/hoistClassNames.mjs +40 -1
  142. package/dist/esm/extractor/hoistClassNames.mjs.map +2 -2
  143. package/dist/esm/extractor/literalToAst.js +80 -1
  144. package/dist/esm/extractor/literalToAst.js.map +2 -2
  145. package/dist/esm/extractor/literalToAst.mjs +80 -1
  146. package/dist/esm/extractor/literalToAst.mjs.map +2 -2
  147. package/dist/esm/extractor/loadFile.js +19 -2
  148. package/dist/esm/extractor/loadFile.js.map +2 -2
  149. package/dist/esm/extractor/loadFile.mjs +19 -2
  150. package/dist/esm/extractor/loadFile.mjs.map +2 -2
  151. package/dist/esm/extractor/loadTamagui.js +396 -15
  152. package/dist/esm/extractor/loadTamagui.js.map +2 -2
  153. package/dist/esm/extractor/loadTamagui.mjs +396 -15
  154. package/dist/esm/extractor/loadTamagui.mjs.map +2 -2
  155. package/dist/esm/extractor/logLines.js +19 -3
  156. package/dist/esm/extractor/logLines.js.map +2 -2
  157. package/dist/esm/extractor/logLines.mjs +19 -3
  158. package/dist/esm/extractor/logLines.mjs.map +2 -2
  159. package/dist/esm/extractor/normalizeTernaries.js +51 -1
  160. package/dist/esm/extractor/normalizeTernaries.js.map +2 -2
  161. package/dist/esm/extractor/normalizeTernaries.mjs +51 -1
  162. package/dist/esm/extractor/normalizeTernaries.mjs.map +2 -2
  163. package/dist/esm/extractor/removeUnusedHooks.js +75 -1
  164. package/dist/esm/extractor/removeUnusedHooks.js.map +2 -2
  165. package/dist/esm/extractor/removeUnusedHooks.mjs +75 -1
  166. package/dist/esm/extractor/removeUnusedHooks.mjs.map +2 -2
  167. package/dist/esm/extractor/timer.js +28 -1
  168. package/dist/esm/extractor/timer.js.map +2 -2
  169. package/dist/esm/extractor/timer.mjs +28 -1
  170. package/dist/esm/extractor/timer.mjs.map +2 -2
  171. package/dist/esm/extractor/validHTMLAttributes.js +101 -1
  172. package/dist/esm/extractor/validHTMLAttributes.js.map +2 -2
  173. package/dist/esm/extractor/validHTMLAttributes.mjs +101 -1
  174. package/dist/esm/extractor/validHTMLAttributes.mjs.map +2 -2
  175. package/dist/esm/getPragmaOptions.js +43 -2
  176. package/dist/esm/getPragmaOptions.js.map +2 -2
  177. package/dist/esm/getPragmaOptions.mjs +43 -2
  178. package/dist/esm/getPragmaOptions.mjs.map +2 -2
  179. package/dist/esm/helpers/memoize.js +21 -1
  180. package/dist/esm/helpers/memoize.js.map +2 -2
  181. package/dist/esm/helpers/memoize.mjs +21 -1
  182. package/dist/esm/helpers/memoize.mjs.map +2 -2
  183. package/dist/esm/index.js +15 -1
  184. package/dist/esm/index.js.map +2 -2
  185. package/dist/esm/index.mjs +15 -1
  186. package/dist/esm/index.mjs.map +2 -2
  187. package/dist/esm/require.js +55 -5
  188. package/dist/esm/require.js.map +2 -2
  189. package/dist/esm/require.mjs +55 -5
  190. package/dist/esm/require.mjs.map +2 -2
  191. package/dist/esm/webpackPlugin.js +10 -1
  192. package/dist/esm/webpackPlugin.js.map +2 -2
  193. package/dist/esm/webpackPlugin.mjs +10 -1
  194. package/dist/esm/webpackPlugin.mjs.map +2 -2
  195. package/package.json +14 -14
@@ -1,2 +1,26 @@
1
- import*as n from"@babel/types";function f(t,r){if(typeof t!="object")throw"generateUid expects a scope object as its first parameter";if(!(typeof r=="string"&&r!==""))throw"generateUid expects a valid name as its second parameter";r=n.toIdentifier(r).replace(/^_+/,"").replace(/[0-9]+$/g,"");let e,i=0;do i>1?e=r+i:e=r,i++;while(t.hasLabel(e)||t.hasBinding(e)||t.hasGlobal(e)||t.hasReference(e));const a=t.getProgramParent();return a.references[e]=!0,a.uids[e]=!0,e}export{f as generateUid};
1
+ import * as t from "@babel/types";
2
+ function generateUid(scope, name) {
3
+ if (!(typeof scope === "object"))
4
+ throw "generateUid expects a scope object as its first parameter";
5
+ if (!(typeof name === "string" && name !== ""))
6
+ throw "generateUid expects a valid name as its second parameter";
7
+ name = t.toIdentifier(name).replace(/^_+/, "").replace(/[0-9]+$/g, "");
8
+ let uid;
9
+ let i = 0;
10
+ do {
11
+ if (i > 1) {
12
+ uid = name + i;
13
+ } else {
14
+ uid = name;
15
+ }
16
+ i++;
17
+ } while (scope.hasLabel(uid) || scope.hasBinding(uid) || scope.hasGlobal(uid) || scope.hasReference(uid));
18
+ const program = scope.getProgramParent();
19
+ program.references[uid] = true;
20
+ program.uids[uid] = true;
21
+ return uid;
22
+ }
23
+ export {
24
+ generateUid
25
+ };
2
26
  //# sourceMappingURL=generatedUid.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/generatedUid.ts"],
4
4
  "sourcesContent": ["import * as t from '@babel/types'\nimport invariant from 'invariant'\n\n// TODO: open a PR upstream\ndeclare module '@babel/types' {\n export function toIdentifier(input: string): string\n}\n\n// A clone of path.scope.generateUid that doesn't prepend underscores\nexport function generateUid(scope: any, name: string): string {\n if (!(typeof scope === 'object'))\n throw 'generateUid expects a scope object as its first parameter'\n if (!(typeof name === 'string' && name !== ''))\n throw 'generateUid expects a valid name as its second parameter'\n\n name = t\n .toIdentifier(name)\n .replace(/^_+/, '')\n .replace(/[0-9]+$/g, '')\n\n let uid\n let i = 0\n do {\n if (i > 1) {\n uid = name + i\n } else {\n uid = name\n }\n i++\n } while (\n scope.hasLabel(uid) ||\n scope.hasBinding(uid) ||\n scope.hasGlobal(uid) ||\n scope.hasReference(uid)\n )\n\n const program = scope.getProgramParent()\n program.references[uid] = true\n program.uids[uid] = true\n\n return uid\n}\n"],
5
- "mappings": "AAAA,UAAYA,MAAO,eASZ,SAASC,EAAYC,EAAYC,EAAsB,CAC5D,GAAM,OAAOD,GAAU,SACrB,KAAM,4DACR,GAAI,EAAE,OAAOC,GAAS,UAAYA,IAAS,IACzC,KAAM,2DAERA,EAAOH,EACJ,aAAaG,CAAI,EACjB,QAAQ,MAAO,EAAE,EACjB,QAAQ,WAAY,EAAE,EAEzB,IAAIC,EACA,EAAI,EACR,GACM,EAAI,EACNA,EAAMD,EAAO,EAEbC,EAAMD,EAER,UAEAD,EAAM,SAASE,CAAG,GAClBF,EAAM,WAAWE,CAAG,GACpBF,EAAM,UAAUE,CAAG,GACnBF,EAAM,aAAaE,CAAG,GAGxB,MAAMC,EAAUH,EAAM,iBAAiB,EACvC,OAAAG,EAAQ,WAAWD,CAAG,EAAI,GAC1BC,EAAQ,KAAKD,CAAG,EAAI,GAEbA,CACT",
6
- "names": ["t", "generateUid", "scope", "name", "uid", "program"]
5
+ "mappings": "AAAA,YAAY,OAAO;AASZ,SAAS,YAAY,OAAY,MAAsB;AAC5D,MAAI,EAAE,OAAO,UAAU;AACrB,UAAM;AACR,MAAI,EAAE,OAAO,SAAS,YAAY,SAAS;AACzC,UAAM;AAER,SAAO,EACJ,aAAa,IAAI,EACjB,QAAQ,OAAO,EAAE,EACjB,QAAQ,YAAY,EAAE;AAEzB,MAAI;AACJ,MAAI,IAAI;AACR,KAAG;AACD,QAAI,IAAI,GAAG;AACT,YAAM,OAAO;AAAA,IACf,OAAO;AACL,YAAM;AAAA,IACR;AACA;AAAA,EACF,SACE,MAAM,SAAS,GAAG,KAClB,MAAM,WAAW,GAAG,KACpB,MAAM,UAAU,GAAG,KACnB,MAAM,aAAa,GAAG;AAGxB,QAAM,UAAU,MAAM,iBAAiB;AACvC,UAAQ,WAAW,GAAG,IAAI;AAC1B,UAAQ,KAAK,GAAG,IAAI;AAEpB,SAAO;AACT;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,8 @@
1
- function a(r){const{TAMAGUI_TARGET:e}=process.env;return(r==null?void 0:r.prefixLogs)??` ${e} | `}export{a as getPrefixLogs};
1
+ function getPrefixLogs(options) {
2
+ const { TAMAGUI_TARGET } = process.env;
3
+ return (options == null ? void 0 : options.prefixLogs) ?? ` ${TAMAGUI_TARGET} | `;
4
+ }
5
+ export {
6
+ getPrefixLogs
7
+ };
2
8
  //# sourceMappingURL=getPrefixLogs.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/getPrefixLogs.ts"],
4
4
  "sourcesContent": ["import { TamaguiOptions } from '../types.js'\n\nexport function getPrefixLogs(options?: TamaguiOptions) {\n const { TAMAGUI_TARGET } = process.env\n return options?.prefixLogs ?? ` ${TAMAGUI_TARGET} | `\n}\n"],
5
- "mappings": "AAEO,SAASA,EAAcC,EAA0B,CACtD,KAAM,CAAE,eAAAC,CAAe,EAAI,QAAQ,IACnC,OAAOD,GAAA,YAAAA,EAAS,aAAc,IAAIC,OACpC",
6
- "names": ["getPrefixLogs", "options", "TAMAGUI_TARGET"]
5
+ "mappings": "AAEO,SAAS,cAAc,SAA0B;AACtD,QAAM,EAAE,eAAe,IAAI,QAAQ;AACnC,UAAO,mCAAS,eAAc,IAAI;AACpC;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,8 @@
1
- function a(r){const{TAMAGUI_TARGET:e}=process.env;return(r==null?void 0:r.prefixLogs)??` ${e} | `}export{a as getPrefixLogs};
1
+ function getPrefixLogs(options) {
2
+ const { TAMAGUI_TARGET } = process.env;
3
+ return (options == null ? void 0 : options.prefixLogs) ?? ` ${TAMAGUI_TARGET} | `;
4
+ }
5
+ export {
6
+ getPrefixLogs
7
+ };
2
8
  //# sourceMappingURL=getPrefixLogs.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/getPrefixLogs.ts"],
4
4
  "sourcesContent": ["import { TamaguiOptions } from '../types.js'\n\nexport function getPrefixLogs(options?: TamaguiOptions) {\n const { TAMAGUI_TARGET } = process.env\n return options?.prefixLogs ?? ` ${TAMAGUI_TARGET} | `\n}\n"],
5
- "mappings": "AAEO,SAASA,EAAcC,EAA0B,CACtD,KAAM,CAAE,eAAAC,CAAe,EAAI,QAAQ,IACnC,OAAOD,GAAA,YAAAA,EAAS,aAAc,IAAIC,OACpC",
6
- "names": ["getPrefixLogs", "options", "TAMAGUI_TARGET"]
5
+ "mappings": "AAEO,SAAS,cAAc,SAA0B;AACtD,QAAM,EAAE,eAAe,IAAI,QAAQ;AACnC,UAAO,mCAAS,eAAc,IAAI;AACpC;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,56 @@
1
- import a from"@babel/generator";import*as r from"@babel/types";import{accessSafe as m}from"./accessSafe.js";function x(l,o){let p=-1,i=null;for(let e=-1,n=o.length;++e<n;){const s=o[e];if(r.isJSXAttribute(s)&&s.name&&s.name.name===l){p=e,i=s;break}}if(!i||i.value==null)return null;let t=i.value;if(r.isJSXExpressionContainer(t)&&(t=t.expression),r.isJSXEmptyExpression(t))return console.error("encountered JSXEmptyExpression"),null;const u=o.filter((e,n)=>{if(r.isJSXSpreadAttribute(e)){if(r.isIdentifier(e.argument)||r.isMemberExpression(e.argument))return n>p;if(r.isLogicalExpression(e.argument))return!1;throw new Error(`unsupported spread of type "${e.argument.type}": ${a(e).code}`)}return!1}).map(e=>e.argument);return u.length>0&&(t=u.reduce((e,n)=>r.logicalExpression("||",m(n,l),e),t)),t}export{x as getPropValueFromAttributes};
1
+ import generate from "@babel/generator";
2
+ import * as t from "@babel/types";
3
+ import { accessSafe } from "./accessSafe.js";
4
+ function getPropValueFromAttributes(propName, attrs) {
5
+ let propIndex = -1;
6
+ let jsxAttr = null;
7
+ for (let idx = -1, len = attrs.length; ++idx < len; ) {
8
+ const attr = attrs[idx];
9
+ if (t.isJSXAttribute(attr) && attr.name && attr.name.name === propName) {
10
+ propIndex = idx;
11
+ jsxAttr = attr;
12
+ break;
13
+ }
14
+ }
15
+ if (!jsxAttr || jsxAttr.value == null) {
16
+ return null;
17
+ }
18
+ let propValue = jsxAttr.value;
19
+ if (t.isJSXExpressionContainer(propValue)) {
20
+ propValue = propValue.expression;
21
+ }
22
+ if (t.isJSXEmptyExpression(propValue)) {
23
+ console.error("encountered JSXEmptyExpression");
24
+ return null;
25
+ }
26
+ const applicableSpreads = attrs.filter(
27
+ // 1. idx is greater than propValue prop index
28
+ // 2. attr is a spread operator
29
+ (attr, idx) => {
30
+ if (t.isJSXSpreadAttribute(attr)) {
31
+ if (t.isIdentifier(attr.argument) || t.isMemberExpression(attr.argument)) {
32
+ return idx > propIndex;
33
+ }
34
+ if (t.isLogicalExpression(attr.argument)) {
35
+ return false;
36
+ }
37
+ throw new Error(
38
+ `unsupported spread of type "${attr.argument.type}": ${// @ts-ignore
39
+ generate(attr).code}`
40
+ );
41
+ }
42
+ return false;
43
+ }
44
+ ).map((attr) => attr.argument);
45
+ if (applicableSpreads.length > 0) {
46
+ propValue = applicableSpreads.reduce(
47
+ (acc, val) => t.logicalExpression("||", accessSafe(val, propName), acc),
48
+ propValue
49
+ );
50
+ }
51
+ return propValue;
52
+ }
53
+ export {
54
+ getPropValueFromAttributes
55
+ };
2
56
  //# sourceMappingURL=getPropValueFromAttributes.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/getPropValueFromAttributes.ts"],
4
4
  "sourcesContent": ["import generate from '@babel/generator'\nimport * as t from '@babel/types'\n\nimport { accessSafe } from './accessSafe.js'\n\n/**\n * getPropValueFromAttributes gets a prop by name from a list of attributes and accounts for potential spread operators.\n * Here's an example. Given this component:\n * ```\n * <Block coolProp=\"wow\" {...spread1} neatProp=\"ok\" {...spread2} />```\n * getPropValueFromAttributes will return the following:\n * - for propName `coolProp`:\n * ```\n * accessSafe(spread1, 'coolProp') || accessSafe(spread2, 'coolProp') || 'wow'```\n * - for propName `neatProp`:\n * ```\n * accessSafe(spread2, 'neatProp') || 'ok'```\n * - for propName `notPresent`: `null`\n *\n * The returned value should (obviously) be placed after spread operators.\n */\nexport function getPropValueFromAttributes(\n propName: string,\n attrs: (t.JSXAttribute | t.JSXSpreadAttribute)[]\n): t.Expression | null {\n let propIndex = -1\n let jsxAttr: t.JSXAttribute | null = null\n for (let idx = -1, len = attrs.length; ++idx < len; ) {\n const attr = attrs[idx]\n if (t.isJSXAttribute(attr) && attr.name && attr.name.name === propName) {\n propIndex = idx\n jsxAttr = attr\n break\n }\n }\n\n if (!jsxAttr || jsxAttr.value == null) {\n return null\n }\n\n let propValue:\n | t.JSXElement\n | t.JSXFragment\n | t.StringLiteral\n | t.JSXExpressionContainer\n | t.JSXEmptyExpression\n | t.Expression = jsxAttr.value\n\n if (t.isJSXExpressionContainer(propValue)) {\n propValue = propValue.expression\n }\n\n // TODO how to handle this??\n if (t.isJSXEmptyExpression(propValue)) {\n // eslint-disable-next-line no-console\n console.error('encountered JSXEmptyExpression')\n return null\n }\n\n // filter out spread props that occur before propValue\n const applicableSpreads = attrs\n .filter(\n // 1. idx is greater than propValue prop index\n // 2. attr is a spread operator\n (attr, idx): attr is t.JSXSpreadAttribute => {\n if (t.isJSXSpreadAttribute(attr)) {\n if (t.isIdentifier(attr.argument) || t.isMemberExpression(attr.argument)) {\n return idx > propIndex\n }\n if (t.isLogicalExpression(attr.argument)) {\n return false\n }\n throw new Error(\n `unsupported spread of type \"${attr.argument.type}\": ${\n // @ts-ignore\n generate(attr as any).code\n }`\n )\n }\n return false\n }\n )\n .map((attr) => attr.argument)\n\n // if spread operators occur after propValue, create a binary expression for each operator\n // i.e. before1.propValue || before2.propValue || propValue\n // TODO: figure out how to do this without all the extra parens\n if (applicableSpreads.length > 0) {\n propValue = applicableSpreads.reduce<t.Expression>(\n (acc, val) => t.logicalExpression('||', accessSafe(val, propName), acc),\n propValue\n )\n }\n\n return propValue\n}\n"],
5
- "mappings": "AAAA,OAAOA,MAAc,mBACrB,UAAYC,MAAO,eAEnB,OAAS,cAAAC,MAAkB,kBAkBpB,SAASC,EACdC,EACAC,EACqB,CACrB,IAAIC,EAAY,GACZC,EAAiC,KACrC,QAASC,EAAM,GAAIC,EAAMJ,EAAM,OAAQ,EAAEG,EAAMC,GAAO,CACpD,MAAMC,EAAOL,EAAMG,CAAG,EACtB,GAAIP,EAAE,eAAeS,CAAI,GAAKA,EAAK,MAAQA,EAAK,KAAK,OAASN,EAAU,CACtEE,EAAYE,EACZD,EAAUG,EACV,KACF,CACF,CAEA,GAAI,CAACH,GAAWA,EAAQ,OAAS,KAC/B,OAAO,KAGT,IAAII,EAMeJ,EAAQ,MAO3B,GALIN,EAAE,yBAAyBU,CAAS,IACtCA,EAAYA,EAAU,YAIpBV,EAAE,qBAAqBU,CAAS,EAElC,eAAQ,MAAM,gCAAgC,EACvC,KAIT,MAAMC,EAAoBP,EACvB,OAGC,CAACK,EAAMF,IAAsC,CAC3C,GAAIP,EAAE,qBAAqBS,CAAI,EAAG,CAChC,GAAIT,EAAE,aAAaS,EAAK,QAAQ,GAAKT,EAAE,mBAAmBS,EAAK,QAAQ,EACrE,OAAOF,EAAMF,EAEf,GAAIL,EAAE,oBAAoBS,EAAK,QAAQ,EACrC,MAAO,GAET,MAAM,IAAI,MACR,+BAA+BA,EAAK,SAAS,UAE3CV,EAASU,CAAW,EAAE,MAE1B,CACF,CACA,MAAO,EACT,CACF,EACC,IAAKA,GAASA,EAAK,QAAQ,EAK9B,OAAIE,EAAkB,OAAS,IAC7BD,EAAYC,EAAkB,OAC5B,CAACC,EAAKC,IAAQb,EAAE,kBAAkB,KAAMC,EAAWY,EAAKV,CAAQ,EAAGS,CAAG,EACtEF,CACF,GAGKA,CACT",
6
- "names": ["generate", "t", "accessSafe", "getPropValueFromAttributes", "propName", "attrs", "propIndex", "jsxAttr", "idx", "len", "attr", "propValue", "applicableSpreads", "acc", "val"]
5
+ "mappings": "AAAA,OAAO,cAAc;AACrB,YAAY,OAAO;AAEnB,SAAS,kBAAkB;AAkBpB,SAAS,2BACd,UACA,OACqB;AACrB,MAAI,YAAY;AAChB,MAAI,UAAiC;AACrC,WAAS,MAAM,IAAI,MAAM,MAAM,QAAQ,EAAE,MAAM,OAAO;AACpD,UAAM,OAAO,MAAM,GAAG;AACtB,QAAI,EAAE,eAAe,IAAI,KAAK,KAAK,QAAQ,KAAK,KAAK,SAAS,UAAU;AACtE,kBAAY;AACZ,gBAAU;AACV;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,WAAW,QAAQ,SAAS,MAAM;AACrC,WAAO;AAAA,EACT;AAEA,MAAI,YAMe,QAAQ;AAE3B,MAAI,EAAE,yBAAyB,SAAS,GAAG;AACzC,gBAAY,UAAU;AAAA,EACxB;AAGA,MAAI,EAAE,qBAAqB,SAAS,GAAG;AAErC,YAAQ,MAAM,gCAAgC;AAC9C,WAAO;AAAA,EACT;AAGA,QAAM,oBAAoB,MACvB;AAAA;AAAA;AAAA,IAGC,CAAC,MAAM,QAAsC;AAC3C,UAAI,EAAE,qBAAqB,IAAI,GAAG;AAChC,YAAI,EAAE,aAAa,KAAK,QAAQ,KAAK,EAAE,mBAAmB,KAAK,QAAQ,GAAG;AACxE,iBAAO,MAAM;AAAA,QACf;AACA,YAAI,EAAE,oBAAoB,KAAK,QAAQ,GAAG;AACxC,iBAAO;AAAA,QACT;AACA,cAAM,IAAI;AAAA,UACR,+BAA+B,KAAK,SAAS;AAAA,UAE3C,SAAS,IAAW,EAAE;AAAA,QAE1B;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,EACF,EACC,IAAI,CAAC,SAAS,KAAK,QAAQ;AAK9B,MAAI,kBAAkB,SAAS,GAAG;AAChC,gBAAY,kBAAkB;AAAA,MAC5B,CAAC,KAAK,QAAQ,EAAE,kBAAkB,MAAM,WAAW,KAAK,QAAQ,GAAG,GAAG;AAAA,MACtE;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,56 @@
1
- import a from"@babel/generator";import*as r from"@babel/types";import{accessSafe as m}from"./accessSafe.js";function x(l,o){let p=-1,i=null;for(let e=-1,n=o.length;++e<n;){const s=o[e];if(r.isJSXAttribute(s)&&s.name&&s.name.name===l){p=e,i=s;break}}if(!i||i.value==null)return null;let t=i.value;if(r.isJSXExpressionContainer(t)&&(t=t.expression),r.isJSXEmptyExpression(t))return console.error("encountered JSXEmptyExpression"),null;const u=o.filter((e,n)=>{if(r.isJSXSpreadAttribute(e)){if(r.isIdentifier(e.argument)||r.isMemberExpression(e.argument))return n>p;if(r.isLogicalExpression(e.argument))return!1;throw new Error(`unsupported spread of type "${e.argument.type}": ${a(e).code}`)}return!1}).map(e=>e.argument);return u.length>0&&(t=u.reduce((e,n)=>r.logicalExpression("||",m(n,l),e),t)),t}export{x as getPropValueFromAttributes};
1
+ import generate from "@babel/generator";
2
+ import * as t from "@babel/types";
3
+ import { accessSafe } from "./accessSafe.js";
4
+ function getPropValueFromAttributes(propName, attrs) {
5
+ let propIndex = -1;
6
+ let jsxAttr = null;
7
+ for (let idx = -1, len = attrs.length; ++idx < len; ) {
8
+ const attr = attrs[idx];
9
+ if (t.isJSXAttribute(attr) && attr.name && attr.name.name === propName) {
10
+ propIndex = idx;
11
+ jsxAttr = attr;
12
+ break;
13
+ }
14
+ }
15
+ if (!jsxAttr || jsxAttr.value == null) {
16
+ return null;
17
+ }
18
+ let propValue = jsxAttr.value;
19
+ if (t.isJSXExpressionContainer(propValue)) {
20
+ propValue = propValue.expression;
21
+ }
22
+ if (t.isJSXEmptyExpression(propValue)) {
23
+ console.error("encountered JSXEmptyExpression");
24
+ return null;
25
+ }
26
+ const applicableSpreads = attrs.filter(
27
+ // 1. idx is greater than propValue prop index
28
+ // 2. attr is a spread operator
29
+ (attr, idx) => {
30
+ if (t.isJSXSpreadAttribute(attr)) {
31
+ if (t.isIdentifier(attr.argument) || t.isMemberExpression(attr.argument)) {
32
+ return idx > propIndex;
33
+ }
34
+ if (t.isLogicalExpression(attr.argument)) {
35
+ return false;
36
+ }
37
+ throw new Error(
38
+ `unsupported spread of type "${attr.argument.type}": ${// @ts-ignore
39
+ generate(attr).code}`
40
+ );
41
+ }
42
+ return false;
43
+ }
44
+ ).map((attr) => attr.argument);
45
+ if (applicableSpreads.length > 0) {
46
+ propValue = applicableSpreads.reduce(
47
+ (acc, val) => t.logicalExpression("||", accessSafe(val, propName), acc),
48
+ propValue
49
+ );
50
+ }
51
+ return propValue;
52
+ }
53
+ export {
54
+ getPropValueFromAttributes
55
+ };
2
56
  //# sourceMappingURL=getPropValueFromAttributes.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/getPropValueFromAttributes.ts"],
4
4
  "sourcesContent": ["import generate from '@babel/generator'\nimport * as t from '@babel/types'\n\nimport { accessSafe } from './accessSafe.js'\n\n/**\n * getPropValueFromAttributes gets a prop by name from a list of attributes and accounts for potential spread operators.\n * Here's an example. Given this component:\n * ```\n * <Block coolProp=\"wow\" {...spread1} neatProp=\"ok\" {...spread2} />```\n * getPropValueFromAttributes will return the following:\n * - for propName `coolProp`:\n * ```\n * accessSafe(spread1, 'coolProp') || accessSafe(spread2, 'coolProp') || 'wow'```\n * - for propName `neatProp`:\n * ```\n * accessSafe(spread2, 'neatProp') || 'ok'```\n * - for propName `notPresent`: `null`\n *\n * The returned value should (obviously) be placed after spread operators.\n */\nexport function getPropValueFromAttributes(\n propName: string,\n attrs: (t.JSXAttribute | t.JSXSpreadAttribute)[]\n): t.Expression | null {\n let propIndex = -1\n let jsxAttr: t.JSXAttribute | null = null\n for (let idx = -1, len = attrs.length; ++idx < len; ) {\n const attr = attrs[idx]\n if (t.isJSXAttribute(attr) && attr.name && attr.name.name === propName) {\n propIndex = idx\n jsxAttr = attr\n break\n }\n }\n\n if (!jsxAttr || jsxAttr.value == null) {\n return null\n }\n\n let propValue:\n | t.JSXElement\n | t.JSXFragment\n | t.StringLiteral\n | t.JSXExpressionContainer\n | t.JSXEmptyExpression\n | t.Expression = jsxAttr.value\n\n if (t.isJSXExpressionContainer(propValue)) {\n propValue = propValue.expression\n }\n\n // TODO how to handle this??\n if (t.isJSXEmptyExpression(propValue)) {\n // eslint-disable-next-line no-console\n console.error('encountered JSXEmptyExpression')\n return null\n }\n\n // filter out spread props that occur before propValue\n const applicableSpreads = attrs\n .filter(\n // 1. idx is greater than propValue prop index\n // 2. attr is a spread operator\n (attr, idx): attr is t.JSXSpreadAttribute => {\n if (t.isJSXSpreadAttribute(attr)) {\n if (t.isIdentifier(attr.argument) || t.isMemberExpression(attr.argument)) {\n return idx > propIndex\n }\n if (t.isLogicalExpression(attr.argument)) {\n return false\n }\n throw new Error(\n `unsupported spread of type \"${attr.argument.type}\": ${\n // @ts-ignore\n generate(attr as any).code\n }`\n )\n }\n return false\n }\n )\n .map((attr) => attr.argument)\n\n // if spread operators occur after propValue, create a binary expression for each operator\n // i.e. before1.propValue || before2.propValue || propValue\n // TODO: figure out how to do this without all the extra parens\n if (applicableSpreads.length > 0) {\n propValue = applicableSpreads.reduce<t.Expression>(\n (acc, val) => t.logicalExpression('||', accessSafe(val, propName), acc),\n propValue\n )\n }\n\n return propValue\n}\n"],
5
- "mappings": "AAAA,OAAOA,MAAc,mBACrB,UAAYC,MAAO,eAEnB,OAAS,cAAAC,MAAkB,kBAkBpB,SAASC,EACdC,EACAC,EACqB,CACrB,IAAIC,EAAY,GACZC,EAAiC,KACrC,QAASC,EAAM,GAAIC,EAAMJ,EAAM,OAAQ,EAAEG,EAAMC,GAAO,CACpD,MAAMC,EAAOL,EAAMG,CAAG,EACtB,GAAIP,EAAE,eAAeS,CAAI,GAAKA,EAAK,MAAQA,EAAK,KAAK,OAASN,EAAU,CACtEE,EAAYE,EACZD,EAAUG,EACV,KACF,CACF,CAEA,GAAI,CAACH,GAAWA,EAAQ,OAAS,KAC/B,OAAO,KAGT,IAAII,EAMeJ,EAAQ,MAO3B,GALIN,EAAE,yBAAyBU,CAAS,IACtCA,EAAYA,EAAU,YAIpBV,EAAE,qBAAqBU,CAAS,EAElC,eAAQ,MAAM,gCAAgC,EACvC,KAIT,MAAMC,EAAoBP,EACvB,OAGC,CAACK,EAAMF,IAAsC,CAC3C,GAAIP,EAAE,qBAAqBS,CAAI,EAAG,CAChC,GAAIT,EAAE,aAAaS,EAAK,QAAQ,GAAKT,EAAE,mBAAmBS,EAAK,QAAQ,EACrE,OAAOF,EAAMF,EAEf,GAAIL,EAAE,oBAAoBS,EAAK,QAAQ,EACrC,MAAO,GAET,MAAM,IAAI,MACR,+BAA+BA,EAAK,SAAS,UAE3CV,EAASU,CAAW,EAAE,MAE1B,CACF,CACA,MAAO,EACT,CACF,EACC,IAAKA,GAASA,EAAK,QAAQ,EAK9B,OAAIE,EAAkB,OAAS,IAC7BD,EAAYC,EAAkB,OAC5B,CAACC,EAAKC,IAAQb,EAAE,kBAAkB,KAAMC,EAAWY,EAAKV,CAAQ,EAAGS,CAAG,EACtEF,CACF,GAGKA,CACT",
6
- "names": ["generate", "t", "accessSafe", "getPropValueFromAttributes", "propName", "attrs", "propIndex", "jsxAttr", "idx", "len", "attr", "propValue", "applicableSpreads", "acc", "val"]
5
+ "mappings": "AAAA,OAAO,cAAc;AACrB,YAAY,OAAO;AAEnB,SAAS,kBAAkB;AAkBpB,SAAS,2BACd,UACA,OACqB;AACrB,MAAI,YAAY;AAChB,MAAI,UAAiC;AACrC,WAAS,MAAM,IAAI,MAAM,MAAM,QAAQ,EAAE,MAAM,OAAO;AACpD,UAAM,OAAO,MAAM,GAAG;AACtB,QAAI,EAAE,eAAe,IAAI,KAAK,KAAK,QAAQ,KAAK,KAAK,SAAS,UAAU;AACtE,kBAAY;AACZ,gBAAU;AACV;AAAA,IACF;AAAA,EACF;AAEA,MAAI,CAAC,WAAW,QAAQ,SAAS,MAAM;AACrC,WAAO;AAAA,EACT;AAEA,MAAI,YAMe,QAAQ;AAE3B,MAAI,EAAE,yBAAyB,SAAS,GAAG;AACzC,gBAAY,UAAU;AAAA,EACxB;AAGA,MAAI,EAAE,qBAAqB,SAAS,GAAG;AAErC,YAAQ,MAAM,gCAAgC;AAC9C,WAAO;AAAA,EACT;AAGA,QAAM,oBAAoB,MACvB;AAAA;AAAA;AAAA,IAGC,CAAC,MAAM,QAAsC;AAC3C,UAAI,EAAE,qBAAqB,IAAI,GAAG;AAChC,YAAI,EAAE,aAAa,KAAK,QAAQ,KAAK,EAAE,mBAAmB,KAAK,QAAQ,GAAG;AACxE,iBAAO,MAAM;AAAA,QACf;AACA,YAAI,EAAE,oBAAoB,KAAK,QAAQ,GAAG;AACxC,iBAAO;AAAA,QACT;AACA,cAAM,IAAI;AAAA,UACR,+BAA+B,KAAK,SAAS;AAAA,UAE3C,SAAS,IAAW,EAAE;AAAA,QAE1B;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAAA,EACF,EACC,IAAI,CAAC,SAAS,KAAK,QAAQ;AAK9B,MAAI,kBAAkB,SAAS,GAAG;AAChC,gBAAY,kBAAkB;AAAA,MAC5B,CAAC,KAAK,QAAQ,EAAE,kBAAkB,MAAM,WAAW,KAAK,QAAQ,GAAG,GAAG;AAAA,MACtE;AAAA,IACF;AAAA,EACF;AAEA,SAAO;AACT;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,70 @@
1
- import*as r from"@babel/types";function c(s,o){if(!o.constant)return null;let a,t,n,i,u=!1;const e=o.path.node;if(r.isImportDefaultSpecifier(e)||r.isImportSpecifier(e))r.isImportDeclaration(o.path.parent)&&(a=o.path.parent.source.value,n=e.local.name,u=!0,r.isImportSpecifier(e)?(t=e.imported.name,i=!0):(t=e.local.name,i=!1));else if(r.isVariableDeclarator(e)&&e.init!=null&&r.isCallExpression(e.init)&&r.isIdentifier(e.init.callee)&&e.init.callee.name==="require"&&e.init.arguments.length===1){const d=e.init.arguments[0];if(!r.isStringLiteral(d))return null;if(a=d.value,r.isIdentifier(e.id))n=e.id.name,t=e.id.name,i=!1;else if(r.isObjectPattern(e.id)){for(const l of e.id.properties)if(r.isObjectProperty(l)&&r.isIdentifier(l.value)&&l.value.name===s){n=l.value.name,t=l.key.name,i=!0;break}if(!n||!t)return console.error("could not find prop with value `%s`",s),null}else return console.error("Unhandled id type: %s",e.id.type),null}else return null;return{destructured:i,imported:t,local:n,sourceModule:a,usesImportSyntax:u}}export{c as getSourceModule};
1
+ import * as t from "@babel/types";
2
+ function getSourceModule(itemName, itemBinding) {
3
+ if (!itemBinding.constant) {
4
+ return null;
5
+ }
6
+ let sourceModule;
7
+ let imported;
8
+ let local;
9
+ let destructured;
10
+ let usesImportSyntax = false;
11
+ const itemNode = itemBinding.path.node;
12
+ if (
13
+ // import x from 'y';
14
+ t.isImportDefaultSpecifier(itemNode) || // import {x} from 'y';
15
+ t.isImportSpecifier(itemNode)
16
+ ) {
17
+ if (t.isImportDeclaration(itemBinding.path.parent)) {
18
+ sourceModule = itemBinding.path.parent.source.value;
19
+ local = itemNode.local.name;
20
+ usesImportSyntax = true;
21
+ if (t.isImportSpecifier(itemNode)) {
22
+ imported = itemNode.imported["name"];
23
+ destructured = true;
24
+ } else {
25
+ imported = itemNode.local.name;
26
+ destructured = false;
27
+ }
28
+ }
29
+ } else if (t.isVariableDeclarator(itemNode) && itemNode.init != null && t.isCallExpression(itemNode.init) && t.isIdentifier(itemNode.init.callee) && itemNode.init.callee.name === "require" && itemNode.init.arguments.length === 1) {
30
+ const firstArg = itemNode.init.arguments[0];
31
+ if (!t.isStringLiteral(firstArg)) {
32
+ return null;
33
+ }
34
+ sourceModule = firstArg.value;
35
+ if (t.isIdentifier(itemNode.id)) {
36
+ local = itemNode.id.name;
37
+ imported = itemNode.id.name;
38
+ destructured = false;
39
+ } else if (t.isObjectPattern(itemNode.id)) {
40
+ for (const objProp of itemNode.id.properties) {
41
+ if (t.isObjectProperty(objProp) && t.isIdentifier(objProp.value) && objProp.value.name === itemName) {
42
+ local = objProp.value.name;
43
+ imported = objProp.key.name;
44
+ destructured = true;
45
+ break;
46
+ }
47
+ }
48
+ if (!local || !imported) {
49
+ console.error("could not find prop with value `%s`", itemName);
50
+ return null;
51
+ }
52
+ } else {
53
+ console.error("Unhandled id type: %s", itemNode.id.type);
54
+ return null;
55
+ }
56
+ } else {
57
+ return null;
58
+ }
59
+ return {
60
+ destructured,
61
+ imported,
62
+ local,
63
+ sourceModule,
64
+ usesImportSyntax
65
+ };
66
+ }
67
+ export {
68
+ getSourceModule
69
+ };
2
70
  //# sourceMappingURL=getSourceModule.js.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/getSourceModule.ts"],
4
4
  "sourcesContent": ["import * as t from '@babel/types'\n\nexport interface SourceModule {\n sourceModule?: string\n imported?: string\n local?: string\n destructured?: boolean\n usesImportSyntax: boolean\n}\n\nexport function getSourceModule(\n itemName: string,\n itemBinding: {\n constant?: boolean\n path: { node: t.Node; parent: any }\n }\n): SourceModule | null {\n // TODO: deal with reassignment\n if (!itemBinding.constant) {\n return null\n }\n\n let sourceModule: string | undefined\n let imported: string | undefined\n let local: string | undefined\n let destructured: boolean | undefined\n let usesImportSyntax = false\n\n const itemNode = itemBinding.path.node\n\n if (\n // import x from 'y';\n t.isImportDefaultSpecifier(itemNode) ||\n // import {x} from 'y';\n t.isImportSpecifier(itemNode)\n ) {\n if (t.isImportDeclaration(itemBinding.path.parent)) {\n sourceModule = itemBinding.path.parent.source.value\n local = itemNode.local.name\n usesImportSyntax = true\n if (t.isImportSpecifier(itemNode)) {\n imported = itemNode.imported['name']\n destructured = true\n } else {\n imported = itemNode.local.name\n destructured = false\n }\n }\n } else if (\n t.isVariableDeclarator(itemNode) &&\n itemNode.init != null &&\n t.isCallExpression(itemNode.init) &&\n t.isIdentifier(itemNode.init.callee) &&\n itemNode.init.callee.name === 'require' &&\n itemNode.init.arguments.length === 1\n ) {\n const firstArg = itemNode.init.arguments[0]\n if (!t.isStringLiteral(firstArg)) {\n return null\n }\n sourceModule = firstArg.value\n\n if (t.isIdentifier(itemNode.id)) {\n local = itemNode.id.name\n imported = itemNode.id.name\n destructured = false\n } else if (t.isObjectPattern(itemNode.id)) {\n for (const objProp of itemNode.id.properties) {\n if (\n t.isObjectProperty(objProp) &&\n t.isIdentifier(objProp.value) &&\n objProp.value.name === itemName\n ) {\n local = objProp.value.name\n // @ts-ignore TODO remove this is only an issue on CI\n imported = objProp.key.name\n destructured = true\n break\n }\n }\n\n if (!local || !imported) {\n // eslint-disable-next-line no-console\n console.error('could not find prop with value `%s`', itemName)\n return null\n }\n } else {\n // eslint-disable-next-line no-console\n console.error('Unhandled id type: %s', itemNode.id.type)\n return null\n }\n } else {\n return null\n }\n\n return {\n destructured,\n imported,\n local,\n sourceModule,\n usesImportSyntax,\n }\n}\n"],
5
- "mappings": "AAAA,UAAYA,MAAO,eAUZ,SAASC,EACdC,EACAC,EAIqB,CAErB,GAAI,CAACA,EAAY,SACf,OAAO,KAGT,IAAIC,EACAC,EACAC,EACAC,EACAC,EAAmB,GAEvB,MAAMC,EAAWN,EAAY,KAAK,KAElC,GAEEH,EAAE,yBAAyBS,CAAQ,GAEnCT,EAAE,kBAAkBS,CAAQ,EAExBT,EAAE,oBAAoBG,EAAY,KAAK,MAAM,IAC/CC,EAAeD,EAAY,KAAK,OAAO,OAAO,MAC9CG,EAAQG,EAAS,MAAM,KACvBD,EAAmB,GACfR,EAAE,kBAAkBS,CAAQ,GAC9BJ,EAAWI,EAAS,SAAS,KAC7BF,EAAe,KAEfF,EAAWI,EAAS,MAAM,KAC1BF,EAAe,aAInBP,EAAE,qBAAqBS,CAAQ,GAC/BA,EAAS,MAAQ,MACjBT,EAAE,iBAAiBS,EAAS,IAAI,GAChCT,EAAE,aAAaS,EAAS,KAAK,MAAM,GACnCA,EAAS,KAAK,OAAO,OAAS,WAC9BA,EAAS,KAAK,UAAU,SAAW,EACnC,CACA,MAAMC,EAAWD,EAAS,KAAK,UAAU,CAAC,EAC1C,GAAI,CAACT,EAAE,gBAAgBU,CAAQ,EAC7B,OAAO,KAIT,GAFAN,EAAeM,EAAS,MAEpBV,EAAE,aAAaS,EAAS,EAAE,EAC5BH,EAAQG,EAAS,GAAG,KACpBJ,EAAWI,EAAS,GAAG,KACvBF,EAAe,WACNP,EAAE,gBAAgBS,EAAS,EAAE,EAAG,CACzC,UAAWE,KAAWF,EAAS,GAAG,WAChC,GACET,EAAE,iBAAiBW,CAAO,GAC1BX,EAAE,aAAaW,EAAQ,KAAK,GAC5BA,EAAQ,MAAM,OAAST,EACvB,CACAI,EAAQK,EAAQ,MAAM,KAEtBN,EAAWM,EAAQ,IAAI,KACvBJ,EAAe,GACf,KACF,CAGF,GAAI,CAACD,GAAS,CAACD,EAEb,eAAQ,MAAM,sCAAuCH,CAAQ,EACtD,IAEX,KAEE,gBAAQ,MAAM,wBAAyBO,EAAS,GAAG,IAAI,EAChD,IAEX,KACE,QAAO,KAGT,MAAO,CACL,aAAAF,EACA,SAAAF,EACA,MAAAC,EACA,aAAAF,EACA,iBAAAI,CACF,CACF",
6
- "names": ["t", "getSourceModule", "itemName", "itemBinding", "sourceModule", "imported", "local", "destructured", "usesImportSyntax", "itemNode", "firstArg", "objProp"]
5
+ "mappings": "AAAA,YAAY,OAAO;AAUZ,SAAS,gBACd,UACA,aAIqB;AAErB,MAAI,CAAC,YAAY,UAAU;AACzB,WAAO;AAAA,EACT;AAEA,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,mBAAmB;AAEvB,QAAM,WAAW,YAAY,KAAK;AAElC;AAAA;AAAA,IAEE,EAAE,yBAAyB,QAAQ;AAAA,IAEnC,EAAE,kBAAkB,QAAQ;AAAA,IAC5B;AACA,QAAI,EAAE,oBAAoB,YAAY,KAAK,MAAM,GAAG;AAClD,qBAAe,YAAY,KAAK,OAAO,OAAO;AAC9C,cAAQ,SAAS,MAAM;AACvB,yBAAmB;AACnB,UAAI,EAAE,kBAAkB,QAAQ,GAAG;AACjC,mBAAW,SAAS,SAAS,MAAM;AACnC,uBAAe;AAAA,MACjB,OAAO;AACL,mBAAW,SAAS,MAAM;AAC1B,uBAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF,WACE,EAAE,qBAAqB,QAAQ,KAC/B,SAAS,QAAQ,QACjB,EAAE,iBAAiB,SAAS,IAAI,KAChC,EAAE,aAAa,SAAS,KAAK,MAAM,KACnC,SAAS,KAAK,OAAO,SAAS,aAC9B,SAAS,KAAK,UAAU,WAAW,GACnC;AACA,UAAM,WAAW,SAAS,KAAK,UAAU,CAAC;AAC1C,QAAI,CAAC,EAAE,gBAAgB,QAAQ,GAAG;AAChC,aAAO;AAAA,IACT;AACA,mBAAe,SAAS;AAExB,QAAI,EAAE,aAAa,SAAS,EAAE,GAAG;AAC/B,cAAQ,SAAS,GAAG;AACpB,iBAAW,SAAS,GAAG;AACvB,qBAAe;AAAA,IACjB,WAAW,EAAE,gBAAgB,SAAS,EAAE,GAAG;AACzC,iBAAW,WAAW,SAAS,GAAG,YAAY;AAC5C,YACE,EAAE,iBAAiB,OAAO,KAC1B,EAAE,aAAa,QAAQ,KAAK,KAC5B,QAAQ,MAAM,SAAS,UACvB;AACA,kBAAQ,QAAQ,MAAM;AAEtB,qBAAW,QAAQ,IAAI;AACvB,yBAAe;AACf;AAAA,QACF;AAAA,MACF;AAEA,UAAI,CAAC,SAAS,CAAC,UAAU;AAEvB,gBAAQ,MAAM,uCAAuC,QAAQ;AAC7D,eAAO;AAAA,MACT;AAAA,IACF,OAAO;AAEL,cAAQ,MAAM,yBAAyB,SAAS,GAAG,IAAI;AACvD,aAAO;AAAA,IACT;AAAA,EACF,OAAO;AACL,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
6
+ "names": []
7
7
  }
@@ -1,2 +1,70 @@
1
- import*as r from"@babel/types";function c(s,o){if(!o.constant)return null;let a,t,n,i,u=!1;const e=o.path.node;if(r.isImportDefaultSpecifier(e)||r.isImportSpecifier(e))r.isImportDeclaration(o.path.parent)&&(a=o.path.parent.source.value,n=e.local.name,u=!0,r.isImportSpecifier(e)?(t=e.imported.name,i=!0):(t=e.local.name,i=!1));else if(r.isVariableDeclarator(e)&&e.init!=null&&r.isCallExpression(e.init)&&r.isIdentifier(e.init.callee)&&e.init.callee.name==="require"&&e.init.arguments.length===1){const d=e.init.arguments[0];if(!r.isStringLiteral(d))return null;if(a=d.value,r.isIdentifier(e.id))n=e.id.name,t=e.id.name,i=!1;else if(r.isObjectPattern(e.id)){for(const l of e.id.properties)if(r.isObjectProperty(l)&&r.isIdentifier(l.value)&&l.value.name===s){n=l.value.name,t=l.key.name,i=!0;break}if(!n||!t)return console.error("could not find prop with value `%s`",s),null}else return console.error("Unhandled id type: %s",e.id.type),null}else return null;return{destructured:i,imported:t,local:n,sourceModule:a,usesImportSyntax:u}}export{c as getSourceModule};
1
+ import * as t from "@babel/types";
2
+ function getSourceModule(itemName, itemBinding) {
3
+ if (!itemBinding.constant) {
4
+ return null;
5
+ }
6
+ let sourceModule;
7
+ let imported;
8
+ let local;
9
+ let destructured;
10
+ let usesImportSyntax = false;
11
+ const itemNode = itemBinding.path.node;
12
+ if (
13
+ // import x from 'y';
14
+ t.isImportDefaultSpecifier(itemNode) || // import {x} from 'y';
15
+ t.isImportSpecifier(itemNode)
16
+ ) {
17
+ if (t.isImportDeclaration(itemBinding.path.parent)) {
18
+ sourceModule = itemBinding.path.parent.source.value;
19
+ local = itemNode.local.name;
20
+ usesImportSyntax = true;
21
+ if (t.isImportSpecifier(itemNode)) {
22
+ imported = itemNode.imported["name"];
23
+ destructured = true;
24
+ } else {
25
+ imported = itemNode.local.name;
26
+ destructured = false;
27
+ }
28
+ }
29
+ } else if (t.isVariableDeclarator(itemNode) && itemNode.init != null && t.isCallExpression(itemNode.init) && t.isIdentifier(itemNode.init.callee) && itemNode.init.callee.name === "require" && itemNode.init.arguments.length === 1) {
30
+ const firstArg = itemNode.init.arguments[0];
31
+ if (!t.isStringLiteral(firstArg)) {
32
+ return null;
33
+ }
34
+ sourceModule = firstArg.value;
35
+ if (t.isIdentifier(itemNode.id)) {
36
+ local = itemNode.id.name;
37
+ imported = itemNode.id.name;
38
+ destructured = false;
39
+ } else if (t.isObjectPattern(itemNode.id)) {
40
+ for (const objProp of itemNode.id.properties) {
41
+ if (t.isObjectProperty(objProp) && t.isIdentifier(objProp.value) && objProp.value.name === itemName) {
42
+ local = objProp.value.name;
43
+ imported = objProp.key.name;
44
+ destructured = true;
45
+ break;
46
+ }
47
+ }
48
+ if (!local || !imported) {
49
+ console.error("could not find prop with value `%s`", itemName);
50
+ return null;
51
+ }
52
+ } else {
53
+ console.error("Unhandled id type: %s", itemNode.id.type);
54
+ return null;
55
+ }
56
+ } else {
57
+ return null;
58
+ }
59
+ return {
60
+ destructured,
61
+ imported,
62
+ local,
63
+ sourceModule,
64
+ usesImportSyntax
65
+ };
66
+ }
67
+ export {
68
+ getSourceModule
69
+ };
2
70
  //# sourceMappingURL=getSourceModule.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/extractor/getSourceModule.ts"],
4
4
  "sourcesContent": ["import * as t from '@babel/types'\n\nexport interface SourceModule {\n sourceModule?: string\n imported?: string\n local?: string\n destructured?: boolean\n usesImportSyntax: boolean\n}\n\nexport function getSourceModule(\n itemName: string,\n itemBinding: {\n constant?: boolean\n path: { node: t.Node; parent: any }\n }\n): SourceModule | null {\n // TODO: deal with reassignment\n if (!itemBinding.constant) {\n return null\n }\n\n let sourceModule: string | undefined\n let imported: string | undefined\n let local: string | undefined\n let destructured: boolean | undefined\n let usesImportSyntax = false\n\n const itemNode = itemBinding.path.node\n\n if (\n // import x from 'y';\n t.isImportDefaultSpecifier(itemNode) ||\n // import {x} from 'y';\n t.isImportSpecifier(itemNode)\n ) {\n if (t.isImportDeclaration(itemBinding.path.parent)) {\n sourceModule = itemBinding.path.parent.source.value\n local = itemNode.local.name\n usesImportSyntax = true\n if (t.isImportSpecifier(itemNode)) {\n imported = itemNode.imported['name']\n destructured = true\n } else {\n imported = itemNode.local.name\n destructured = false\n }\n }\n } else if (\n t.isVariableDeclarator(itemNode) &&\n itemNode.init != null &&\n t.isCallExpression(itemNode.init) &&\n t.isIdentifier(itemNode.init.callee) &&\n itemNode.init.callee.name === 'require' &&\n itemNode.init.arguments.length === 1\n ) {\n const firstArg = itemNode.init.arguments[0]\n if (!t.isStringLiteral(firstArg)) {\n return null\n }\n sourceModule = firstArg.value\n\n if (t.isIdentifier(itemNode.id)) {\n local = itemNode.id.name\n imported = itemNode.id.name\n destructured = false\n } else if (t.isObjectPattern(itemNode.id)) {\n for (const objProp of itemNode.id.properties) {\n if (\n t.isObjectProperty(objProp) &&\n t.isIdentifier(objProp.value) &&\n objProp.value.name === itemName\n ) {\n local = objProp.value.name\n // @ts-ignore TODO remove this is only an issue on CI\n imported = objProp.key.name\n destructured = true\n break\n }\n }\n\n if (!local || !imported) {\n // eslint-disable-next-line no-console\n console.error('could not find prop with value `%s`', itemName)\n return null\n }\n } else {\n // eslint-disable-next-line no-console\n console.error('Unhandled id type: %s', itemNode.id.type)\n return null\n }\n } else {\n return null\n }\n\n return {\n destructured,\n imported,\n local,\n sourceModule,\n usesImportSyntax,\n }\n}\n"],
5
- "mappings": "AAAA,UAAYA,MAAO,eAUZ,SAASC,EACdC,EACAC,EAIqB,CAErB,GAAI,CAACA,EAAY,SACf,OAAO,KAGT,IAAIC,EACAC,EACAC,EACAC,EACAC,EAAmB,GAEvB,MAAMC,EAAWN,EAAY,KAAK,KAElC,GAEEH,EAAE,yBAAyBS,CAAQ,GAEnCT,EAAE,kBAAkBS,CAAQ,EAExBT,EAAE,oBAAoBG,EAAY,KAAK,MAAM,IAC/CC,EAAeD,EAAY,KAAK,OAAO,OAAO,MAC9CG,EAAQG,EAAS,MAAM,KACvBD,EAAmB,GACfR,EAAE,kBAAkBS,CAAQ,GAC9BJ,EAAWI,EAAS,SAAS,KAC7BF,EAAe,KAEfF,EAAWI,EAAS,MAAM,KAC1BF,EAAe,aAInBP,EAAE,qBAAqBS,CAAQ,GAC/BA,EAAS,MAAQ,MACjBT,EAAE,iBAAiBS,EAAS,IAAI,GAChCT,EAAE,aAAaS,EAAS,KAAK,MAAM,GACnCA,EAAS,KAAK,OAAO,OAAS,WAC9BA,EAAS,KAAK,UAAU,SAAW,EACnC,CACA,MAAMC,EAAWD,EAAS,KAAK,UAAU,CAAC,EAC1C,GAAI,CAACT,EAAE,gBAAgBU,CAAQ,EAC7B,OAAO,KAIT,GAFAN,EAAeM,EAAS,MAEpBV,EAAE,aAAaS,EAAS,EAAE,EAC5BH,EAAQG,EAAS,GAAG,KACpBJ,EAAWI,EAAS,GAAG,KACvBF,EAAe,WACNP,EAAE,gBAAgBS,EAAS,EAAE,EAAG,CACzC,UAAWE,KAAWF,EAAS,GAAG,WAChC,GACET,EAAE,iBAAiBW,CAAO,GAC1BX,EAAE,aAAaW,EAAQ,KAAK,GAC5BA,EAAQ,MAAM,OAAST,EACvB,CACAI,EAAQK,EAAQ,MAAM,KAEtBN,EAAWM,EAAQ,IAAI,KACvBJ,EAAe,GACf,KACF,CAGF,GAAI,CAACD,GAAS,CAACD,EAEb,eAAQ,MAAM,sCAAuCH,CAAQ,EACtD,IAEX,KAEE,gBAAQ,MAAM,wBAAyBO,EAAS,GAAG,IAAI,EAChD,IAEX,KACE,QAAO,KAGT,MAAO,CACL,aAAAF,EACA,SAAAF,EACA,MAAAC,EACA,aAAAF,EACA,iBAAAI,CACF,CACF",
6
- "names": ["t", "getSourceModule", "itemName", "itemBinding", "sourceModule", "imported", "local", "destructured", "usesImportSyntax", "itemNode", "firstArg", "objProp"]
5
+ "mappings": "AAAA,YAAY,OAAO;AAUZ,SAAS,gBACd,UACA,aAIqB;AAErB,MAAI,CAAC,YAAY,UAAU;AACzB,WAAO;AAAA,EACT;AAEA,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,mBAAmB;AAEvB,QAAM,WAAW,YAAY,KAAK;AAElC;AAAA;AAAA,IAEE,EAAE,yBAAyB,QAAQ;AAAA,IAEnC,EAAE,kBAAkB,QAAQ;AAAA,IAC5B;AACA,QAAI,EAAE,oBAAoB,YAAY,KAAK,MAAM,GAAG;AAClD,qBAAe,YAAY,KAAK,OAAO,OAAO;AAC9C,cAAQ,SAAS,MAAM;AACvB,yBAAmB;AACnB,UAAI,EAAE,kBAAkB,QAAQ,GAAG;AACjC,mBAAW,SAAS,SAAS,MAAM;AACnC,uBAAe;AAAA,MACjB,OAAO;AACL,mBAAW,SAAS,MAAM;AAC1B,uBAAe;AAAA,MACjB;AAAA,IACF;AAAA,EACF,WACE,EAAE,qBAAqB,QAAQ,KAC/B,SAAS,QAAQ,QACjB,EAAE,iBAAiB,SAAS,IAAI,KAChC,EAAE,aAAa,SAAS,KAAK,MAAM,KACnC,SAAS,KAAK,OAAO,SAAS,aAC9B,SAAS,KAAK,UAAU,WAAW,GACnC;AACA,UAAM,WAAW,SAAS,KAAK,UAAU,CAAC;AAC1C,QAAI,CAAC,EAAE,gBAAgB,QAAQ,GAAG;AAChC,aAAO;AAAA,IACT;AACA,mBAAe,SAAS;AAExB,QAAI,EAAE,aAAa,SAAS,EAAE,GAAG;AAC/B,cAAQ,SAAS,GAAG;AACpB,iBAAW,SAAS,GAAG;AACvB,qBAAe;AAAA,IACjB,WAAW,EAAE,gBAAgB,SAAS,EAAE,GAAG;AACzC,iBAAW,WAAW,SAAS,GAAG,YAAY;AAC5C,YACE,EAAE,iBAAiB,OAAO,KAC1B,EAAE,aAAa,QAAQ,KAAK,KAC5B,QAAQ,MAAM,SAAS,UACvB;AACA,kBAAQ,QAAQ,MAAM;AAEtB,qBAAW,QAAQ,IAAI;AACvB,yBAAe;AACf;AAAA,QACF;AAAA,MACF;AAEA,UAAI,CAAC,SAAS,CAAC,UAAU;AAEvB,gBAAQ,MAAM,uCAAuC,QAAQ;AAC7D,eAAO;AAAA,MACT;AAAA,IACF,OAAO;AAEL,cAAQ,MAAM,yBAAyB,SAAS,GAAG,IAAI;AACvD,aAAO;AAAA,IACT;AAAA,EACF,OAAO;AACL,WAAO;AAAA,EACT;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF;AACF;",
6
+ "names": []
7
7
  }