rn-iconify 2.1.0 → 2.2.0

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 (122) hide show
  1. package/lib/commonjs/IconRenderer.js +54 -12
  2. package/lib/commonjs/IconRenderer.js.map +1 -1
  3. package/lib/commonjs/babel/cache-writer.js +102 -26
  4. package/lib/commonjs/babel/cache-writer.js.map +1 -1
  5. package/lib/commonjs/babel/plugin.js +129 -44
  6. package/lib/commonjs/babel/plugin.js.map +1 -1
  7. package/lib/commonjs/babel/scanner.js +219 -0
  8. package/lib/commonjs/babel/scanner.js.map +1 -0
  9. package/lib/commonjs/babel/types.js.map +1 -1
  10. package/lib/commonjs/cache/CacheManager.js +82 -1
  11. package/lib/commonjs/cache/CacheManager.js.map +1 -1
  12. package/lib/commonjs/cache/DiskCache.js +33 -4
  13. package/lib/commonjs/cache/DiskCache.js.map +1 -1
  14. package/lib/commonjs/cli/CLAUDE.md +7 -0
  15. package/lib/commonjs/cli/commands/bundle.js +37 -6
  16. package/lib/commonjs/cli/commands/bundle.js.map +1 -1
  17. package/lib/commonjs/config/ConfigManager.js +8 -1
  18. package/lib/commonjs/config/ConfigManager.js.map +1 -1
  19. package/lib/commonjs/config/index.js.map +1 -1
  20. package/lib/commonjs/config/types.js +9 -0
  21. package/lib/commonjs/config/types.js.map +1 -1
  22. package/lib/commonjs/index.js.map +1 -1
  23. package/lib/commonjs/metro/devServerMiddleware.js +150 -0
  24. package/lib/commonjs/metro/devServerMiddleware.js.map +1 -0
  25. package/lib/commonjs/metro/index.js +20 -0
  26. package/lib/commonjs/metro/index.js.map +1 -0
  27. package/lib/commonjs/metro/types.js +6 -0
  28. package/lib/commonjs/metro/types.js.map +1 -0
  29. package/lib/commonjs/metro/withRnIconify.js +53 -0
  30. package/lib/commonjs/metro/withRnIconify.js.map +1 -0
  31. package/lib/commonjs/network/IconifyAPI.js +30 -2
  32. package/lib/commonjs/network/IconifyAPI.js.map +1 -1
  33. package/lib/module/IconRenderer.js +54 -12
  34. package/lib/module/IconRenderer.js.map +1 -1
  35. package/lib/module/babel/cache-writer.js +99 -26
  36. package/lib/module/babel/cache-writer.js.map +1 -1
  37. package/lib/module/babel/plugin.js +129 -46
  38. package/lib/module/babel/plugin.js.map +1 -1
  39. package/lib/module/babel/scanner.js +213 -0
  40. package/lib/module/babel/scanner.js.map +1 -0
  41. package/lib/module/babel/types.js.map +1 -1
  42. package/lib/module/cache/CacheManager.js +82 -1
  43. package/lib/module/cache/CacheManager.js.map +1 -1
  44. package/lib/module/cache/DiskCache.js +32 -4
  45. package/lib/module/cache/DiskCache.js.map +1 -1
  46. package/lib/module/cli/CLAUDE.md +7 -0
  47. package/lib/module/cli/commands/bundle.js +37 -6
  48. package/lib/module/cli/commands/bundle.js.map +1 -1
  49. package/lib/module/config/ConfigManager.js +8 -1
  50. package/lib/module/config/ConfigManager.js.map +1 -1
  51. package/lib/module/config/index.js.map +1 -1
  52. package/lib/module/config/types.js +9 -0
  53. package/lib/module/config/types.js.map +1 -1
  54. package/lib/module/index.js.map +1 -1
  55. package/lib/module/metro/devServerMiddleware.js +143 -0
  56. package/lib/module/metro/devServerMiddleware.js.map +1 -0
  57. package/lib/module/metro/index.js +19 -0
  58. package/lib/module/metro/index.js.map +1 -0
  59. package/lib/module/metro/types.js +2 -0
  60. package/lib/module/metro/types.js.map +1 -0
  61. package/lib/module/metro/withRnIconify.js +48 -0
  62. package/lib/module/metro/withRnIconify.js.map +1 -0
  63. package/lib/module/network/IconifyAPI.js +30 -2
  64. package/lib/module/network/IconifyAPI.js.map +1 -1
  65. package/lib/typescript/IconRenderer.d.ts.map +1 -1
  66. package/lib/typescript/babel/cache-writer.d.ts +16 -2
  67. package/lib/typescript/babel/cache-writer.d.ts.map +1 -1
  68. package/lib/typescript/babel/plugin.d.ts +5 -0
  69. package/lib/typescript/babel/plugin.d.ts.map +1 -1
  70. package/lib/typescript/babel/scanner.d.ts +31 -0
  71. package/lib/typescript/babel/scanner.d.ts.map +1 -0
  72. package/lib/typescript/babel/types.d.ts +8 -1
  73. package/lib/typescript/babel/types.d.ts.map +1 -1
  74. package/lib/typescript/cache/CacheManager.d.ts +16 -0
  75. package/lib/typescript/cache/CacheManager.d.ts.map +1 -1
  76. package/lib/typescript/cache/DiskCache.d.ts +2 -0
  77. package/lib/typescript/cache/DiskCache.d.ts.map +1 -1
  78. package/lib/typescript/cli/commands/bundle.d.ts.map +1 -1
  79. package/lib/typescript/components/Charm.d.ts +1 -1
  80. package/lib/typescript/components/Dashicons.d.ts +1 -1
  81. package/lib/typescript/components/Hugeicons.d.ts +1 -1
  82. package/lib/typescript/components/Ix.d.ts +1 -1
  83. package/lib/typescript/components/Tabler.d.ts +1 -1
  84. package/lib/typescript/components/Token.d.ts +1 -1
  85. package/lib/typescript/components/TokenBranded.d.ts +1 -1
  86. package/lib/typescript/config/ConfigManager.d.ts +5 -1
  87. package/lib/typescript/config/ConfigManager.d.ts.map +1 -1
  88. package/lib/typescript/config/index.d.ts +1 -1
  89. package/lib/typescript/config/index.d.ts.map +1 -1
  90. package/lib/typescript/config/types.d.ts +26 -0
  91. package/lib/typescript/config/types.d.ts.map +1 -1
  92. package/lib/typescript/index.d.ts +1 -1
  93. package/lib/typescript/index.d.ts.map +1 -1
  94. package/lib/typescript/metro/devServerMiddleware.d.ts +11 -0
  95. package/lib/typescript/metro/devServerMiddleware.d.ts.map +1 -0
  96. package/lib/typescript/metro/index.d.ts +19 -0
  97. package/lib/typescript/metro/index.d.ts.map +1 -0
  98. package/lib/typescript/metro/types.d.ts +46 -0
  99. package/lib/typescript/metro/types.d.ts.map +1 -0
  100. package/lib/typescript/metro/withRnIconify.d.ts +20 -0
  101. package/lib/typescript/metro/withRnIconify.d.ts.map +1 -0
  102. package/lib/typescript/network/IconifyAPI.d.ts.map +1 -1
  103. package/metro.js +12 -0
  104. package/package.json +13 -6
  105. package/src/IconRenderer.tsx +59 -12
  106. package/src/babel/cache-writer.ts +105 -31
  107. package/src/babel/plugin.ts +157 -34
  108. package/src/babel/scanner.ts +274 -0
  109. package/src/babel/types.ts +9 -1
  110. package/src/cache/CacheManager.ts +83 -1
  111. package/src/cache/DiskCache.ts +43 -4
  112. package/src/cli/CLAUDE.md +7 -0
  113. package/src/cli/commands/bundle.ts +52 -6
  114. package/src/config/ConfigManager.ts +9 -0
  115. package/src/config/index.ts +1 -0
  116. package/src/config/types.ts +35 -0
  117. package/src/index.ts +1 -0
  118. package/src/metro/devServerMiddleware.ts +137 -0
  119. package/src/metro/index.ts +19 -0
  120. package/src/metro/types.ts +52 -0
  121. package/src/metro/withRnIconify.ts +52 -0
  122. package/src/network/IconifyAPI.ts +23 -1
@@ -1 +1 @@
1
- {"version":3,"names":["fs","path","ICONIFY_API_BASE","DEFAULT_TIMEOUT_MS","MAX_RETRIES","RETRY_DELAY_MS","BATCH_SIZE","fetchWithTimeout","url","timeoutMs","controller","AbortController","timeoutId","setTimeout","abort","response","fetch","signal","clearTimeout","buildSvg","data","defaultWidth","defaultHeight","width","height","left","top","viewBox","transform","transforms","rotate","rotation","push","hFlip","vFlip","scaleX","scaleY","translateX","translateY","length","join","body","svg","fetchIconBatch","prefix","iconNames","verbose","results","Map","sortedNames","sort","namesString","lastError","attempt","console","log","ok","Error","status","json","icons","name","iconData","set","warn","error","String","Promise","resolve","message","groupIconsByPrefix","grouped","iconName","split","has","get","fetchAndCreateBundle","options","startTime","Date","now","allIcons","fetchedCount","names","i","batch","slice","bundle","version","generatedAt","toISOString","count","elapsed","writeBundleToFile","outputPath","dir","dirname","existsSync","mkdirSync","recursive","content","JSON","stringify","writeFileSync","sizeKB","toFixed","generateBundle","projectRoot","bundleFile","isAbsolute","jsContent","jsFile","replace","isBundleValid","readFileSync","parse"],"sourceRoot":"../../../src","sources":["babel/cache-writer.ts"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA,OAAO,KAAKA,EAAE,MAAM,IAAI;AACxB,OAAO,KAAKC,IAAI,MAAM,MAAM;AAG5B;AACA;AACA;AACA,MAAMC,gBAAgB,GAAG,4BAA4B;AACrD,MAAMC,kBAAkB,GAAG,KAAK;AAChC,MAAMC,WAAW,GAAG,CAAC;AACrB,MAAMC,cAAc,GAAG,IAAI;AAC3B,MAAMC,UAAU,GAAG,EAAE;;AAErB;AACA;AACA;;AAoBA;AACA;AACA;AACA,eAAeC,gBAAgBA,CAC7BC,GAAW,EACXC,SAAiB,GAAGN,kBAAkB,EACnB;EACnB,MAAMO,UAAU,GAAG,IAAIC,eAAe,CAAC,CAAC;EACxC,MAAMC,SAAS,GAAGC,UAAU,CAAC,MAAMH,UAAU,CAACI,KAAK,CAAC,CAAC,EAAEL,SAAS,CAAC;EAEjE,IAAI;IACF,MAAMM,QAAQ,GAAG,MAAMC,KAAK,CAACR,GAAG,EAAE;MAAES,MAAM,EAAEP,UAAU,CAACO;IAAO,CAAC,CAAC;IAChE,OAAOF,QAAQ;EACjB,CAAC,SAAS;IACRG,YAAY,CAACN,SAAS,CAAC;EACzB;AACF;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASO,QAAQA,CACtBC,IAAyC,EACzCC,YAAY,GAAG,EAAE,EACjBC,aAAa,GAAG,EAAE,EAC8B;EAChD,MAAMC,KAAK,GAAGH,IAAI,CAACG,KAAK,IAAIF,YAAY;EACxC,MAAMG,MAAM,GAAGJ,IAAI,CAACI,MAAM,IAAIF,aAAa;EAC3C,MAAMG,IAAI,GAAGL,IAAI,CAACK,IAAI,IAAI,CAAC;EAC3B,MAAMC,GAAG,GAAGN,IAAI,CAACM,GAAG,IAAI,CAAC;EACzB,MAAMC,OAAO,GAAG,GAAGF,IAAI,IAAIC,GAAG,IAAIH,KAAK,IAAIC,MAAM,EAAE;;EAEnD;EACA,IAAII,SAAS,GAAG,EAAE;EAClB,MAAMC,UAAoB,GAAG,EAAE;EAE/B,IAAIT,IAAI,CAACU,MAAM,EAAE;IACf,MAAMC,QAAQ,GAAGX,IAAI,CAACU,MAAM,GAAG,EAAE;IACjCD,UAAU,CAACG,IAAI,CAAC,UAAUD,QAAQ,IAAIR,KAAK,GAAG,CAAC,IAAIC,MAAM,GAAG,CAAC,GAAG,CAAC;EACnE;EAEA,IAAIJ,IAAI,CAACa,KAAK,IAAIb,IAAI,CAACc,KAAK,EAAE;IAC5B,MAAMC,MAAM,GAAGf,IAAI,CAACa,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;IAClC,MAAMG,MAAM,GAAGhB,IAAI,CAACc,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC;IAClC,MAAMG,UAAU,GAAGjB,IAAI,CAACa,KAAK,GAAGV,KAAK,GAAG,CAAC;IACzC,MAAMe,UAAU,GAAGlB,IAAI,CAACc,KAAK,GAAGV,MAAM,GAAG,CAAC;IAC1CK,UAAU,CAACG,IAAI,CAAC,aAAaK,UAAU,IAAIC,UAAU,WAAWH,MAAM,IAAIC,MAAM,GAAG,CAAC;EACtF;EAEA,IAAIP,UAAU,CAACU,MAAM,GAAG,CAAC,EAAE;IACzBX,SAAS,GAAG,eAAeC,UAAU,CAACW,IAAI,CAAC,GAAG,CAAC,GAAG;EACpD;EAEA,MAAMC,IAAI,GAAGb,SAAS,GAAG,KAAKA,SAAS,IAAIR,IAAI,CAACqB,IAAI,MAAM,GAAGrB,IAAI,CAACqB,IAAI;EACtE,MAAMC,GAAG,GAAG,oDAAoDf,OAAO,YAAYJ,KAAK,aAAaC,MAAM,KAAKiB,IAAI,QAAQ;EAE5H,OAAO;IAAEC,GAAG;IAAEnB,KAAK;IAAEC;EAAO,CAAC;AAC/B;;AAEA;AACA;AACA;AACA,eAAemB,cAAcA,CAC3BC,MAAc,EACdC,SAAmB,EACnBC,OAAgB,EACsD;EACtE,MAAMC,OAAO,GAAG,IAAIC,GAAG,CAAyD,CAAC;;EAEjF;EACA,MAAMC,WAAW,GAAG,CAAC,GAAGJ,SAAS,CAAC,CAACK,IAAI,CAAC,CAAC;EACzC,MAAMC,WAAW,GAAGF,WAAW,CAACT,IAAI,CAAC,GAAG,CAAC;EAEzC,IAAIY,SAAuB,GAAG,IAAI;EAElC,KAAK,IAAIC,OAAO,GAAG,CAAC,EAAEA,OAAO,IAAIjD,WAAW,EAAEiD,OAAO,EAAE,EAAE;IACvD,IAAI;MACF,MAAM7C,GAAG,GAAG,GAAGN,gBAAgB,IAAI0C,MAAM,eAAeO,WAAW,EAAE;MAErE,IAAIL,OAAO,EAAE;QACXQ,OAAO,CAACC,GAAG,CAAC,yBAAyBX,MAAM,mBAAmBS,OAAO,GAAG,CAAC,MAAM,CAAC;MAClF;MAEA,MAAMtC,QAAQ,GAAG,MAAMR,gBAAgB,CAACC,GAAG,CAAC;MAE5C,IAAI,CAACO,QAAQ,CAACyC,EAAE,EAAE;QAChB,MAAM,IAAIC,KAAK,CAAC,QAAQ1C,QAAQ,CAAC2C,MAAM,qBAAqBd,MAAM,QAAQ,CAAC;MAC7E;MAEA,MAAMxB,IAAwB,GAAG,MAAML,QAAQ,CAAC4C,IAAI,CAAC,CAAC;MAEtD,IAAI,CAACvC,IAAI,IAAI,OAAOA,IAAI,KAAK,QAAQ,IAAI,CAACA,IAAI,CAACwC,KAAK,EAAE;QACpD,MAAM,IAAIH,KAAK,CAAC,4BAA4Bb,MAAM,QAAQ,CAAC;MAC7D;;MAEA;MACA,KAAK,MAAMiB,IAAI,IAAIZ,WAAW,EAAE;QAC9B,MAAMa,QAAQ,GAAG1C,IAAI,CAACwC,KAAK,CAACC,IAAI,CAAC;QACjC,IAAIC,QAAQ,EAAE;UACZ,MAAM;YAAEpB,GAAG;YAAEnB,KAAK;YAAEC;UAAO,CAAC,GAAGL,QAAQ,CAAC2C,QAAQ,EAAE1C,IAAI,CAACG,KAAK,EAAEH,IAAI,CAACI,MAAM,CAAC;UAC1EuB,OAAO,CAACgB,GAAG,CAAC,GAAGnB,MAAM,IAAIiB,IAAI,EAAE,EAAE;YAAEnB,GAAG;YAAEnB,KAAK;YAAEC;UAAO,CAAC,CAAC;QAC1D,CAAC,MAAM,IAAIsB,OAAO,EAAE;UAClBQ,OAAO,CAACU,IAAI,CAAC,gCAAgCpB,MAAM,IAAIiB,IAAI,EAAE,CAAC;QAChE;MACF;MAEA,OAAOd,OAAO;IAChB,CAAC,CAAC,OAAOkB,KAAK,EAAE;MACdb,SAAS,GAAGa,KAAK,YAAYR,KAAK,GAAGQ,KAAK,GAAG,IAAIR,KAAK,CAACS,MAAM,CAACD,KAAK,CAAC,CAAC;MAErE,IAAIZ,OAAO,GAAGjD,WAAW,EAAE;QACzB,MAAM,IAAI+D,OAAO,CAAEC,OAAO,IAAKvD,UAAU,CAACuD,OAAO,EAAE/D,cAAc,IAAIgD,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;MACrF;IACF;EACF;;EAEA;EACAC,OAAO,CAACW,KAAK,CACX,gCAAgCrB,MAAM,gBAAgBxC,WAAW,GAAG,CAAC,YAAY,EACjFgD,SAAS,EAAEiB,OACb,CAAC;EACD,OAAOtB,OAAO;AAChB;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASuB,kBAAkBA,CAACzB,SAAmB,EAAyB;EAC7E,MAAM0B,OAAO,GAAG,IAAIvB,GAAG,CAAmB,CAAC;EAE3C,KAAK,MAAMwB,QAAQ,IAAI3B,SAAS,EAAE;IAChC,MAAM,CAACD,MAAM,EAAEiB,IAAI,CAAC,GAAGW,QAAQ,CAACC,KAAK,CAAC,GAAG,CAAC;IAC1C,IAAI7B,MAAM,IAAIiB,IAAI,EAAE;MAClB,IAAI,CAACU,OAAO,CAACG,GAAG,CAAC9B,MAAM,CAAC,EAAE;QACxB2B,OAAO,CAACR,GAAG,CAACnB,MAAM,EAAE,EAAE,CAAC;MACzB;MACA2B,OAAO,CAACI,GAAG,CAAC/B,MAAM,CAAC,CAAEZ,IAAI,CAAC6B,IAAI,CAAC;IACjC;EACF;EAEA,OAAOU,OAAO;AAChB;;AAEA;AACA;AACA;AACA,OAAO,eAAeK,oBAAoBA,CACxC/B,SAAmB,EACnBgC,OAA2B,EACN;EACrB,MAAM;IAAE/B,OAAO,GAAG;EAAM,CAAC,GAAG+B,OAAO;EACnC,MAAMC,SAAS,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;EAE5B,IAAIlC,OAAO,EAAE;IACXQ,OAAO,CAACC,GAAG,CAAC,yBAAyBV,SAAS,CAACN,MAAM,WAAW,CAAC;EACnE;;EAEA;EACA,MAAMgC,OAAO,GAAGD,kBAAkB,CAACzB,SAAS,CAAC;EAC7C,MAAMoC,QAA6B,GAAG,CAAC,CAAC;EACxC,IAAIC,YAAY,GAAG,CAAC;;EAEpB;EACA,KAAK,MAAM,CAACtC,MAAM,EAAEuC,KAAK,CAAC,IAAIZ,OAAO,EAAE;IACrC;IACA,KAAK,IAAIa,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,KAAK,CAAC5C,MAAM,EAAE6C,CAAC,IAAI9E,UAAU,EAAE;MACjD,MAAM+E,KAAK,GAAGF,KAAK,CAACG,KAAK,CAACF,CAAC,EAAEA,CAAC,GAAG9E,UAAU,CAAC;MAC5C,MAAMyC,OAAO,GAAG,MAAMJ,cAAc,CAACC,MAAM,EAAEyC,KAAK,EAAEvC,OAAO,CAAC;MAE5D,KAAK,MAAM,CAAC0B,QAAQ,EAAEpD,IAAI,CAAC,IAAI2B,OAAO,EAAE;QACtCkC,QAAQ,CAACT,QAAQ,CAAC,GAAGpD,IAAI;QACzB8D,YAAY,EAAE;MAChB;IACF;EACF;EAEA,MAAMK,MAAkB,GAAG;IACzBC,OAAO,EAAE,OAAO;IAChBC,WAAW,EAAE,IAAIV,IAAI,CAAC,CAAC,CAACW,WAAW,CAAC,CAAC;IACrC9B,KAAK,EAAEqB,QAAQ;IACfU,KAAK,EAAET;EACT,CAAC;EAED,IAAIpC,OAAO,EAAE;IACX,MAAM8C,OAAO,GAAGb,IAAI,CAACC,GAAG,CAAC,CAAC,GAAGF,SAAS;IACtCxB,OAAO,CAACC,GAAG,CAAC,wBAAwB2B,YAAY,IAAIrC,SAAS,CAACN,MAAM,aAAaqD,OAAO,IAAI,CAAC;EAC/F;EAEA,OAAOL,MAAM;AACf;;AAEA;AACA;AACA;AACA,OAAO,SAASM,iBAAiBA,CAACN,MAAkB,EAAEO,UAAkB,EAAEhD,OAAgB,EAAQ;EAChG;EACA,MAAMiD,GAAG,GAAG9F,IAAI,CAAC+F,OAAO,CAACF,UAAU,CAAC;EACpC,IAAI,CAAC9F,EAAE,CAACiG,UAAU,CAACF,GAAG,CAAC,EAAE;IACvB/F,EAAE,CAACkG,SAAS,CAACH,GAAG,EAAE;MAAEI,SAAS,EAAE;IAAK,CAAC,CAAC;EACxC;;EAEA;EACA,MAAMC,OAAO,GAAGC,IAAI,CAACC,SAAS,CAACf,MAAM,CAAC;EACtCvF,EAAE,CAACuG,aAAa,CAACT,UAAU,EAAEM,OAAO,EAAE,OAAO,CAAC;EAE9C,IAAItD,OAAO,EAAE;IACX,MAAM0D,MAAM,GAAG,CAACJ,OAAO,CAAC7D,MAAM,GAAG,IAAI,EAAEkE,OAAO,CAAC,CAAC,CAAC;IACjDnD,OAAO,CAACC,GAAG,CAAC,kCAAkCuC,UAAU,KAAKU,MAAM,MAAM,CAAC;EAC5E;AACF;;AAEA;AACA;AACA;AACA,OAAO,eAAeE,cAAcA,CAClC7D,SAAmB,EACnBgC,OAA2B,EAC3B8B,WAAmB,EACJ;EACf,MAAM;IAAEb,UAAU,GAAG,gCAAgC;IAAEhD,OAAO,GAAG;EAAM,CAAC,GAAG+B,OAAO;EAElF,IAAIhC,SAAS,CAACN,MAAM,KAAK,CAAC,EAAE;IAC1B,IAAIO,OAAO,EAAE;MACXQ,OAAO,CAACC,GAAG,CAAC,iCAAiC,CAAC;IAChD;IACA;EACF;EAEA,IAAI;IACF;IACA,MAAMgC,MAAM,GAAG,MAAMX,oBAAoB,CAAC/B,SAAS,EAAEgC,OAAO,CAAC;;IAE7D;IACA,MAAM+B,UAAU,GAAG3G,IAAI,CAAC4G,UAAU,CAACf,UAAU,CAAC,GAC1C7F,IAAI,CAACuC,IAAI,CAACsD,UAAU,EAAE,YAAY,CAAC,GACnC7F,IAAI,CAACuC,IAAI,CAACmE,WAAW,EAAEb,UAAU,EAAE,YAAY,CAAC;;IAEpD;IACAD,iBAAiB,CAACN,MAAM,EAAEqB,UAAU,EAAE9D,OAAO,CAAC;;IAE9C;IACA,MAAMgE,SAAS,GAAG;AACtB;AACA,mBAAmBT,IAAI,CAACC,SAAS,CAACf,MAAM,CAAC;AACzC,CAAC;IACG,MAAMwB,MAAM,GAAGH,UAAU,CAACI,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;IACjDhH,EAAE,CAACuG,aAAa,CAACQ,MAAM,EAAED,SAAS,EAAE,OAAO,CAAC;IAE5C,IAAIhE,OAAO,EAAE;MACXQ,OAAO,CAACC,GAAG,CAAC,0CAA0C,CAAC;IACzD;EACF,CAAC,CAAC,OAAOU,KAAK,EAAE;IACd;IACAX,OAAO,CAACW,KAAK,CACX,wCAAwC,EACxCA,KAAK,YAAYR,KAAK,GAAGQ,KAAK,CAACI,OAAO,GAAGJ,KAC3C,CAAC;EACH;AACF;;AAEA;AACA;AACA;AACA,OAAO,SAASgD,aAAaA,CAACnB,UAAkB,EAAEa,WAAmB,EAAW;EAC9E,MAAMC,UAAU,GAAG3G,IAAI,CAAC4G,UAAU,CAACf,UAAU,CAAC,GAC1C7F,IAAI,CAACuC,IAAI,CAACsD,UAAU,EAAE,YAAY,CAAC,GACnC7F,IAAI,CAACuC,IAAI,CAACmE,WAAW,EAAEb,UAAU,EAAE,YAAY,CAAC;EAEpD,IAAI,CAAC9F,EAAE,CAACiG,UAAU,CAACW,UAAU,CAAC,EAAE;IAC9B,OAAO,KAAK;EACd;EAEA,IAAI;IACF,MAAMR,OAAO,GAAGpG,EAAE,CAACkH,YAAY,CAACN,UAAU,EAAE,OAAO,CAAC;IACpD,MAAMrB,MAAM,GAAGc,IAAI,CAACc,KAAK,CAACf,OAAO,CAAe;IAChD,OAAOb,MAAM,CAACC,OAAO,KAAK,OAAO,IAAI,OAAOD,MAAM,CAACI,KAAK,KAAK,QAAQ;EACvE,CAAC,CAAC,MAAM;IACN,OAAO,KAAK;EACd;AACF","ignoreList":[]}
1
+ {"version":3,"names":["fs","path","ICONIFY_API_BASE","DEFAULT_TIMEOUT_MS","MAX_RETRIES","RETRY_DELAY_MS","BATCH_SIZE","fetchWithTimeout","url","timeoutMs","controller","AbortController","timeoutId","setTimeout","abort","response","fetch","signal","clearTimeout","buildSvg","data","defaultWidth","defaultHeight","width","height","left","top","viewBox","transform","transforms","rotate","rotation","push","hFlip","vFlip","scaleX","scaleY","translateX","translateY","length","join","body","svg","fetchIconBatch","prefix","iconNames","verbose","results","Map","sortedNames","sort","namesString","lastError","attempt","console","log","ok","Error","status","json","icons","name","iconData","set","warn","error","String","Promise","resolve","message","groupIconsByPrefix","grouped","iconName","split","has","get","fetchAndCreateBundle","options","startTime","Date","now","allIcons","fetchedCount","names","i","batch","slice","bundle","version","generatedAt","toISOString","count","elapsed","readExistingBundle","bundlePath","existsSync","content","readFileSync","JSON","parse","getNewIconNames","existingBundle","filter","writeBundleToFile","outputPath","dir","dirname","mkdirSync","recursive","stringify","existing","existingKeys","Object","keys","newKeys","writeFileSync","sizeKB","toFixed","resolveBundleDir","projectRoot","isAbsolute","generateBundle","bundleDir","bundleFile","undefined","newIconNames","newBundle","mergedIcons","jsContent","jsFile","newCount","existingCount","isBundleValid"],"sourceRoot":"../../../src","sources":["babel/cache-writer.ts"],"mappings":"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","ignoreList":[]}
@@ -1,13 +1,19 @@
1
1
  /**
2
2
  * Babel Plugin Visitor
3
3
  * Main visitor logic for the rn-iconify Babel plugin
4
+ *
5
+ * Auto-inject flow:
6
+ * 1. pre hook: scan project → detect icons → check if bundle exists
7
+ * 2. ImportDeclaration visitor: inject loadOfflineBundle + bundle import when bundle exists
8
+ * 3. post hook: generate/update bundle incrementally
4
9
  */
5
10
 
11
+ import * as nodePath from 'path';
6
12
  import { COMPONENT_PREFIX_MAP, VALID_COMPONENTS, getFilenameFromState, getFilenameFromFile } from './types';
7
13
  import { getComponentName, getNameAttribute, isCallTo, extractArrayStrings, getNodeLocation } from './ast-utils';
8
14
  import { collector } from './collector';
9
- import { generateBundle } from './cache-writer';
10
-
15
+ import { generateBundle, readExistingBundle, resolveBundleDir } from './cache-writer';
16
+ import { scanProjectForIcons } from './scanner';
11
17
  /**
12
18
  * Type guard to safely extract plugin options from 'this' context
13
19
  */
@@ -45,6 +51,31 @@ let bundleTimer = null;
45
51
  */
46
52
  let projectRoot = '';
47
53
 
54
+ /**
55
+ * Whether bundle exists at build start (set in pre hook)
56
+ */
57
+ let bundleExists = false;
58
+
59
+ /**
60
+ * Path to the existing bundle directory
61
+ */
62
+ let bundleDirPath = '';
63
+
64
+ /**
65
+ * Whether auto-inject has already been done for this build
66
+ */
67
+ let hasInjected = false;
68
+
69
+ /**
70
+ * Scanned icon names from the pre hook
71
+ */
72
+ let scannedIcons = [];
73
+
74
+ /**
75
+ * Existing bundle loaded during pre hook
76
+ */
77
+ let existingBundle = null;
78
+
48
79
  /**
49
80
  * Create the rn-iconify Babel plugin
50
81
  */
@@ -53,10 +84,7 @@ export function createRnIconifyPlugin(babel) {
53
84
  return {
54
85
  name: 'rn-iconify',
55
86
  pre(file) {
56
- // Access plugin options through 'this' using type guard approach
57
87
  const opts = getPluginOptions(this);
58
-
59
- // Skip if disabled
60
88
  if (opts.disabled) {
61
89
  return;
62
90
  }
@@ -64,12 +92,12 @@ export function createRnIconifyPlugin(babel) {
64
92
  // Initialize collector on first file
65
93
  if (!buildInProgress) {
66
94
  buildInProgress = true;
95
+ hasInjected = false;
67
96
  collector.initialize(opts);
68
97
 
69
- // Detect project root from file - uses type guards for safe access
98
+ // Detect project root from file
70
99
  const filename = getFilenameFromFile(file);
71
100
  if (filename) {
72
- // Try to find project root by looking for package.json
73
101
  let dir = filename;
74
102
  while (dir !== '/') {
75
103
  dir = dir.substring(0, dir.lastIndexOf('/'));
@@ -85,15 +113,37 @@ export function createRnIconifyPlugin(babel) {
85
113
  projectRoot = process.cwd();
86
114
  }
87
115
  }
116
+ const outputPath = opts.outputPath || '.rn-iconify';
117
+ bundleDirPath = resolveBundleDir(outputPath, projectRoot);
118
+ const bundleJsonPath = nodePath.join(bundleDirPath, 'icons.json');
119
+
120
+ // Check if bundle exists
121
+ existingBundle = readExistingBundle(bundleJsonPath);
122
+ bundleExists = existingBundle !== null;
123
+
124
+ // Run sync scanner to discover all icons in the project
125
+ try {
126
+ scannedIcons = scanProjectForIcons(projectRoot, {
127
+ verbose: opts.verbose
128
+ });
129
+ } catch (error) {
130
+ if (opts.verbose) {
131
+ console.warn('[rn-iconify] Scanner failed:', error);
132
+ }
133
+ scannedIcons = [];
134
+ }
88
135
  if (opts.verbose) {
89
136
  console.log(`[rn-iconify] Build started. Project root: ${projectRoot}`);
137
+ console.log(`[rn-iconify] Bundle exists: ${bundleExists}`);
138
+ console.log(`[rn-iconify] Scanner found ${scannedIcons.length} icons`);
90
139
  }
91
140
  }
92
141
  },
93
142
  visitor: {
94
143
  /**
95
- * Visit import declarations to track which icon components are imported
96
- * This helps us know which JSX elements to look for
144
+ * Visit import declarations to:
145
+ * 1. Track which icon components are imported
146
+ * 2. Auto-inject loadOfflineBundle when bundle exists
97
147
  */
98
148
  ImportDeclaration(path, state) {
99
149
  const opts = state.opts || {};
@@ -105,29 +155,70 @@ export function createRnIconifyPlugin(babel) {
105
155
  return;
106
156
  }
107
157
 
108
- // Track imported icon components for this file
109
- // (Not strictly necessary since we check COMPONENT_PREFIX_MAP, but could be optimized)
158
+ // Auto-inject: when bundle exists and we haven't injected yet
159
+ const autoInject = opts.autoInject !== false;
160
+ if (autoInject && bundleExists && !hasInjected && source === 'rn-iconify') {
161
+ // Check if this file already has a manual loadOfflineBundle import
162
+ const program = path.findParent(p => p.isProgram());
163
+ if (program && program.isProgram()) {
164
+ let hasManualLoad = false;
165
+ for (const stmt of program.node.body) {
166
+ if (t.isImportDeclaration(stmt)) {
167
+ for (const spec of stmt.specifiers) {
168
+ if (t.isImportSpecifier(spec) && t.isIdentifier(spec.imported) && spec.imported.name === 'loadOfflineBundle') {
169
+ hasManualLoad = true;
170
+ break;
171
+ }
172
+ }
173
+ }
174
+ if (hasManualLoad) break;
175
+ }
176
+ if (!hasManualLoad) {
177
+ hasInjected = true;
178
+
179
+ // Compute relative path from this file to the bundle
180
+ const filename = getFilenameFromState(state) || '';
181
+ const bundleJsPath = nodePath.join(bundleDirPath, 'icons.js');
182
+ let relativeBundlePath;
183
+ if (filename) {
184
+ const fileDir = nodePath.dirname(filename);
185
+ relativeBundlePath = nodePath.relative(fileDir, bundleJsPath);
186
+ if (!relativeBundlePath.startsWith('.')) {
187
+ relativeBundlePath = './' + relativeBundlePath;
188
+ }
189
+ } else {
190
+ relativeBundlePath = bundleJsPath;
191
+ }
192
+
193
+ // Import loadOfflineBundle from 'rn-iconify'
194
+ const loadBundleImport = t.importDeclaration([t.importSpecifier(t.identifier('_rnIconifyLoadBundle'), t.identifier('loadOfflineBundle'))], t.stringLiteral('rn-iconify'));
195
+
196
+ // Import bundle data
197
+ const bundleDataImport = t.importDeclaration([t.importDefaultSpecifier(t.identifier('_rnIconifyBundle'))], t.stringLiteral(relativeBundlePath));
198
+
199
+ // Call: _rnIconifyLoadBundle(_rnIconifyBundle)
200
+ const loadCall = t.expressionStatement(t.callExpression(t.identifier('_rnIconifyLoadBundle'), [t.identifier('_rnIconifyBundle')]));
201
+
202
+ // Insert after the current import
203
+ path.insertAfter([loadBundleImport, bundleDataImport, loadCall]);
204
+ if (opts.verbose) {
205
+ console.log(`[rn-iconify] Auto-injected bundle loading in ${filename}`);
206
+ }
207
+ }
208
+ }
209
+ }
110
210
  },
111
211
  /**
112
212
  * Visit JSX opening elements to find icon usage
113
- * Handles: <Mdi name="home" />, <Heroicons name="user" />, etc.
114
213
  */
115
214
  JSXOpeningElement(path, state) {
116
215
  const opts = state.opts || {};
117
216
  if (opts.disabled) return;
118
217
  const filename = getFilenameFromState(state) || 'unknown';
119
-
120
- // Get component name
121
218
  const componentName = getComponentName(path.node, t);
122
219
  if (!componentName) return;
123
-
124
- // Check if it's a valid icon component
125
220
  if (!VALID_COMPONENTS.has(componentName)) return;
126
-
127
- // Get the icon name from the 'name' attribute
128
221
  const iconName = getNameAttribute(path.node, t);
129
-
130
- // Skip dynamic names
131
222
  if (!iconName) {
132
223
  if (opts.verbose) {
133
224
  const loc = getNodeLocation(path.node);
@@ -135,35 +226,22 @@ export function createRnIconifyPlugin(babel) {
135
226
  }
136
227
  return;
137
228
  }
138
-
139
- // Get prefix from component name
140
229
  const prefix = COMPONENT_PREFIX_MAP[componentName];
141
230
  if (!prefix) return;
142
-
143
- // Build full icon name
144
231
  const fullIconName = `${prefix}:${iconName}`;
145
-
146
- // Add to collector
147
232
  const loc = getNodeLocation(path.node);
148
233
  collector.add(fullIconName, filename, loc.line, loc.column);
149
234
  },
150
235
  /**
151
236
  * Visit call expressions to find prefetchIcons usage
152
- * Handles: prefetchIcons(['mdi:home', 'mdi:settings'])
153
237
  */
154
238
  CallExpression(path, state) {
155
239
  const opts = state.opts || {};
156
240
  if (opts.disabled) return;
157
241
  const filename = getFilenameFromState(state) || 'unknown';
158
-
159
- // Check if this is a call to prefetchIcons
160
242
  if (!isCallTo(path, 'prefetchIcons', t)) return;
161
-
162
- // Get the first argument (should be an array of icon names)
163
243
  const firstArg = path.node.arguments[0];
164
244
  const iconNames = extractArrayStrings(firstArg, t);
165
-
166
- // Add each icon to collector
167
245
  const loc = getNodeLocation(path.node);
168
246
  for (const iconName of iconNames) {
169
247
  collector.add(iconName, filename, loc.line, loc.column);
@@ -174,33 +252,33 @@ export function createRnIconifyPlugin(babel) {
174
252
  const opts = getPluginOptions(this);
175
253
  if (opts.disabled) return;
176
254
  const filename = getFilenameFromFile(file);
177
-
178
- // Mark file as processed
179
255
  if (filename) {
180
256
  processedFiles.add(filename);
181
257
  collector.markFileProcessed(filename);
182
258
  }
183
259
 
184
260
  // Debounce bundle generation
185
- // Metro processes files in parallel, so we wait for a quiet period
186
261
  if (bundleTimer) {
187
262
  clearTimeout(bundleTimer);
188
263
  }
189
264
  bundleTimer = setTimeout(async () => {
190
- // Only generate if we have icons and haven't already generated
191
- if (collector.hasIcons() && !collector.isBundleGenerated()) {
265
+ if (!collector.isBundleGenerated()) {
192
266
  collector.markBundleGenerated();
193
- collector.printSummary();
194
- try {
195
- await generateBundle(collector.getIconNames(), opts, projectRoot);
196
- } catch (error) {
197
- console.error('[rn-iconify] Bundle generation error:', error);
198
- }
199
267
 
200
- // Reset for next build
268
+ // Merge AST-collected icons with scanner-collected icons
269
+ const astIcons = collector.getIconNames();
270
+ const allIcons = Array.from(new Set([...astIcons, ...scannedIcons]));
271
+ if (allIcons.length > 0) {
272
+ collector.printSummary();
273
+ try {
274
+ await generateBundle(allIcons, opts, projectRoot, existingBundle);
275
+ } catch (error) {
276
+ console.error('[rn-iconify] Bundle generation error:', error);
277
+ }
278
+ }
201
279
  buildInProgress = false;
202
280
  }
203
- }, 500); // Wait 500ms after last file to ensure all files are processed
281
+ }, 500);
204
282
  }
205
283
  };
206
284
  }
@@ -211,6 +289,11 @@ export function createRnIconifyPlugin(babel) {
211
289
  export function resetPluginState() {
212
290
  processedFiles.clear();
213
291
  buildInProgress = false;
292
+ hasInjected = false;
293
+ bundleExists = false;
294
+ bundleDirPath = '';
295
+ scannedIcons = [];
296
+ existingBundle = null;
214
297
  if (bundleTimer) {
215
298
  clearTimeout(bundleTimer);
216
299
  bundleTimer = null;
@@ -1 +1 @@
1
- {"version":3,"names":["COMPONENT_PREFIX_MAP","VALID_COMPONENTS","getFilenameFromState","getFilenameFromFile","getComponentName","getNameAttribute","isCallTo","extractArrayStrings","getNodeLocation","collector","generateBundle","hasPluginOpts","obj","opts","getPluginOptions","context","processedFiles","Set","buildInProgress","bundleTimer","projectRoot","createRnIconifyPlugin","babel","t","types","name","pre","file","disabled","initialize","filename","dir","substring","lastIndexOf","require","resolve","process","cwd","verbose","console","log","visitor","ImportDeclaration","path","state","source","node","value","startsWith","JSXOpeningElement","componentName","has","iconName","loc","line","prefix","fullIconName","add","column","CallExpression","firstArg","arguments","iconNames","post","markFileProcessed","clearTimeout","setTimeout","hasIcons","isBundleGenerated","markBundleGenerated","printSummary","getIconNames","error","resetPluginState","clear","reset"],"sourceRoot":"../../../src","sources":["babel/plugin.ts"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["nodePath","COMPONENT_PREFIX_MAP","VALID_COMPONENTS","getFilenameFromState","getFilenameFromFile","getComponentName","getNameAttribute","isCallTo","extractArrayStrings","getNodeLocation","collector","generateBundle","readExistingBundle","resolveBundleDir","scanProjectForIcons","hasPluginOpts","obj","opts","getPluginOptions","context","processedFiles","Set","buildInProgress","bundleTimer","projectRoot","bundleExists","bundleDirPath","hasInjected","scannedIcons","existingBundle","createRnIconifyPlugin","babel","t","types","name","pre","file","disabled","initialize","filename","dir","substring","lastIndexOf","require","resolve","process","cwd","outputPath","bundleJsonPath","join","verbose","error","console","warn","log","length","visitor","ImportDeclaration","path","state","source","node","value","startsWith","autoInject","program","findParent","p","isProgram","hasManualLoad","stmt","body","isImportDeclaration","spec","specifiers","isImportSpecifier","isIdentifier","imported","bundleJsPath","relativeBundlePath","fileDir","dirname","relative","loadBundleImport","importDeclaration","importSpecifier","identifier","stringLiteral","bundleDataImport","importDefaultSpecifier","loadCall","expressionStatement","callExpression","insertAfter","JSXOpeningElement","componentName","has","iconName","loc","line","prefix","fullIconName","add","column","CallExpression","firstArg","arguments","iconNames","post","markFileProcessed","clearTimeout","setTimeout","isBundleGenerated","markBundleGenerated","astIcons","getIconNames","allIcons","Array","from","printSummary","resetPluginState","clear","reset"],"sourceRoot":"../../../src","sources":["babel/plugin.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,213 @@
1
+ /**
2
+ * Project File Scanner
3
+ * Synchronously scans project source files for icon usage using regex
4
+ * Used by the Babel plugin to discover all icons before the build
5
+ */
6
+
7
+ import * as fs from 'fs';
8
+ import * as path from 'path';
9
+ import { COMPONENT_PREFIX_MAP } from './types';
10
+
11
+ /**
12
+ * Scanner options
13
+ */
14
+
15
+ const DEFAULT_EXTENSIONS = ['.tsx', '.jsx', '.ts', '.js'];
16
+ const DEFAULT_EXCLUDE_DIRS = new Set(['node_modules', 'lib', '.rn-iconify', '__tests__', '__mocks__', 'dist', '.expo', '.git', 'android', 'ios', 'coverage']);
17
+
18
+ /**
19
+ * Usage.json file structure (from Metro dev server learning)
20
+ */
21
+
22
+ /**
23
+ * Build regex patterns for icon component detection
24
+ * Matches: <Ion name="home" /> or <Ion name={'home'} /> or <Ion name={`home`} />
25
+ */
26
+ function buildComponentRegex() {
27
+ const componentNames = Object.keys(COMPONENT_PREFIX_MAP).join('|');
28
+ return new RegExp(`<(?:${componentNames})\\s[^>]*?name=(?:"([^"]+)"|\\{'([^']+)'\\}|\\{"([^"]+)"\\}|\\\`([^\`]+)\\\`)`, 'g');
29
+ }
30
+
31
+ /**
32
+ * Build regex to extract component name from JSX
33
+ */
34
+ function buildComponentNameRegex() {
35
+ const componentNames = Object.keys(COMPONENT_PREFIX_MAP).join('|');
36
+ return new RegExp(`<(${componentNames})\\s`, 'g');
37
+ }
38
+
39
+ /**
40
+ * Regex to match prefetchIcons calls
41
+ * Matches: prefetchIcons(['ion:home', 'mdi:settings'])
42
+ */
43
+ const PREFETCH_REGEX = /prefetchIcons\(\s*\[([^\]]*)\]/g;
44
+
45
+ /**
46
+ * Regex to extract string items from array
47
+ */
48
+ const STRING_ITEM_REGEX = /['"]([^'"]+)['"]/g;
49
+
50
+ /**
51
+ * Scan a single file for icon usage
52
+ */
53
+ function scanFile(filePath, componentRegex, componentNameRegex, verbose) {
54
+ const icons = [];
55
+ let content;
56
+ try {
57
+ content = fs.readFileSync(filePath, 'utf-8');
58
+ } catch {
59
+ return icons;
60
+ }
61
+
62
+ // Skip files that don't import from rn-iconify
63
+ if (!content.includes('rn-iconify') && !content.includes('prefetchIcons')) {
64
+ return icons;
65
+ }
66
+
67
+ // Scan for JSX component usage: <Ion name="home" />
68
+ componentRegex.lastIndex = 0;
69
+ componentNameRegex.lastIndex = 0;
70
+
71
+ // Find all component usages with name attribute
72
+ const fullPattern = new RegExp(componentRegex.source, 'g');
73
+ let match;
74
+ while ((match = fullPattern.exec(content)) !== null) {
75
+ const iconName = match[1] || match[2] || match[3] || match[4];
76
+ if (!iconName) continue;
77
+
78
+ // Find the component name for this match by searching backwards
79
+ const beforeMatch = content.substring(0, match.index + 20);
80
+ const namePattern = new RegExp(componentNameRegex.source, 'g');
81
+ let nameMatch;
82
+ let lastNameMatch = null;
83
+ while ((nameMatch = namePattern.exec(beforeMatch)) !== null) {
84
+ if (nameMatch.index <= match.index) {
85
+ lastNameMatch = nameMatch;
86
+ }
87
+ }
88
+ if (lastNameMatch) {
89
+ const componentName = lastNameMatch[1];
90
+ const prefix = COMPONENT_PREFIX_MAP[componentName];
91
+ if (prefix) {
92
+ icons.push(`${prefix}:${iconName}`);
93
+ if (verbose) {
94
+ console.log(`[rn-iconify:scanner] Found ${prefix}:${iconName} in ${filePath}`);
95
+ }
96
+ }
97
+ }
98
+ }
99
+
100
+ // Scan for prefetchIcons calls
101
+ PREFETCH_REGEX.lastIndex = 0;
102
+ while ((match = PREFETCH_REGEX.exec(content)) !== null) {
103
+ const arrayContent = match[1];
104
+ if (!arrayContent) continue;
105
+ STRING_ITEM_REGEX.lastIndex = 0;
106
+ let itemMatch;
107
+ while ((itemMatch = STRING_ITEM_REGEX.exec(arrayContent)) !== null) {
108
+ const iconName = itemMatch[1];
109
+ if (iconName && iconName.includes(':')) {
110
+ icons.push(iconName);
111
+ if (verbose) {
112
+ console.log(`[rn-iconify:scanner] Found prefetch ${iconName} in ${filePath}`);
113
+ }
114
+ }
115
+ }
116
+ }
117
+ return icons;
118
+ }
119
+
120
+ /**
121
+ * Recursively walk a directory synchronously
122
+ */
123
+ function walkDirSync(dir, extensions, excludeDirs, files) {
124
+ let entries;
125
+ try {
126
+ entries = fs.readdirSync(dir, {
127
+ withFileTypes: true
128
+ });
129
+ } catch {
130
+ return;
131
+ }
132
+ for (const entry of entries) {
133
+ if (entry.isDirectory()) {
134
+ if (excludeDirs.has(entry.name)) continue;
135
+ walkDirSync(path.join(dir, entry.name), extensions, excludeDirs, files);
136
+ } else if (entry.isFile()) {
137
+ const ext = path.extname(entry.name);
138
+ if (extensions.includes(ext)) {
139
+ files.push(path.join(dir, entry.name));
140
+ }
141
+ }
142
+ }
143
+ }
144
+
145
+ /**
146
+ * Read usage.json from the .rn-iconify directory
147
+ */
148
+ function readUsageFile(projectRoot, verbose) {
149
+ const usagePath = path.join(projectRoot, '.rn-iconify', 'usage.json');
150
+ try {
151
+ if (!fs.existsSync(usagePath)) return [];
152
+ const content = fs.readFileSync(usagePath, 'utf-8');
153
+ const usage = JSON.parse(content);
154
+ if (usage.version === '1.0.0' && Array.isArray(usage.icons)) {
155
+ if (verbose) {
156
+ console.log(`[rn-iconify:scanner] Read ${usage.icons.length} icons from usage.json`);
157
+ }
158
+ return usage.icons;
159
+ }
160
+ } catch {
161
+ if (verbose) {
162
+ console.log('[rn-iconify:scanner] Could not read usage.json');
163
+ }
164
+ }
165
+ return [];
166
+ }
167
+
168
+ /**
169
+ * Scan the entire project for icon usage
170
+ * Returns a deduplicated array of full icon names (e.g., ['ion:home', 'mdi:settings'])
171
+ */
172
+ export function scanProjectForIcons(projectRoot, options = {}) {
173
+ const {
174
+ extensions = DEFAULT_EXTENSIONS,
175
+ excludeDirs,
176
+ verbose = false
177
+ } = options;
178
+ const excludeSet = excludeDirs ? new Set(excludeDirs) : DEFAULT_EXCLUDE_DIRS;
179
+ const startTime = Date.now();
180
+
181
+ // 1. Walk the project directory
182
+ const files = [];
183
+ walkDirSync(projectRoot, extensions, excludeSet, files);
184
+ if (verbose) {
185
+ console.log(`[rn-iconify:scanner] Found ${files.length} source files to scan`);
186
+ }
187
+
188
+ // 2. Build regex patterns once
189
+ const componentRegex = buildComponentRegex();
190
+ const componentNameRegex = buildComponentNameRegex();
191
+
192
+ // 3. Scan each file
193
+ const allIcons = new Set();
194
+ for (const file of files) {
195
+ const icons = scanFile(file, componentRegex, componentNameRegex, verbose);
196
+ for (const icon of icons) {
197
+ allIcons.add(icon);
198
+ }
199
+ }
200
+
201
+ // 4. Merge with usage.json (dev-learned icons)
202
+ const usageIcons = readUsageFile(projectRoot, verbose);
203
+ for (const icon of usageIcons) {
204
+ allIcons.add(icon);
205
+ }
206
+ const result = Array.from(allIcons);
207
+ const elapsed = Date.now() - startTime;
208
+ if (verbose) {
209
+ console.log(`[rn-iconify:scanner] Scan complete: ${result.length} unique icons from ${files.length} files in ${elapsed}ms`);
210
+ }
211
+ return result;
212
+ }
213
+ //# sourceMappingURL=scanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["fs","path","COMPONENT_PREFIX_MAP","DEFAULT_EXTENSIONS","DEFAULT_EXCLUDE_DIRS","Set","buildComponentRegex","componentNames","Object","keys","join","RegExp","buildComponentNameRegex","PREFETCH_REGEX","STRING_ITEM_REGEX","scanFile","filePath","componentRegex","componentNameRegex","verbose","icons","content","readFileSync","includes","lastIndex","fullPattern","source","match","exec","iconName","beforeMatch","substring","index","namePattern","nameMatch","lastNameMatch","componentName","prefix","push","console","log","arrayContent","itemMatch","walkDirSync","dir","extensions","excludeDirs","files","entries","readdirSync","withFileTypes","entry","isDirectory","has","name","isFile","ext","extname","readUsageFile","projectRoot","usagePath","existsSync","usage","JSON","parse","version","Array","isArray","length","scanProjectForIcons","options","excludeSet","startTime","Date","now","allIcons","file","icon","add","usageIcons","result","from","elapsed"],"sourceRoot":"../../../src","sources":["babel/scanner.ts"],"mappings":"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","ignoreList":[]}