rn-iconify 2.1.1 → 2.2.1

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 (102) 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/index.js +6 -0
  6. package/lib/commonjs/babel/index.js.map +1 -1
  7. package/lib/commonjs/babel/plugin.js +194 -57
  8. package/lib/commonjs/babel/plugin.js.map +1 -1
  9. package/lib/commonjs/babel/scanner.js +222 -0
  10. package/lib/commonjs/babel/scanner.js.map +1 -0
  11. package/lib/commonjs/babel/types.js +19 -0
  12. package/lib/commonjs/babel/types.js.map +1 -1
  13. package/lib/commonjs/cache/CacheManager.js +70 -1
  14. package/lib/commonjs/cache/CacheManager.js.map +1 -1
  15. package/lib/commonjs/config/ConfigManager.js +8 -1
  16. package/lib/commonjs/config/ConfigManager.js.map +1 -1
  17. package/lib/commonjs/config/index.js.map +1 -1
  18. package/lib/commonjs/config/types.js +9 -0
  19. package/lib/commonjs/config/types.js.map +1 -1
  20. package/lib/commonjs/index.js.map +1 -1
  21. package/lib/commonjs/metro/devServerMiddleware.js +150 -0
  22. package/lib/commonjs/metro/devServerMiddleware.js.map +1 -0
  23. package/lib/commonjs/metro/index.js +20 -0
  24. package/lib/commonjs/metro/index.js.map +1 -0
  25. package/lib/commonjs/metro/types.js +6 -0
  26. package/lib/commonjs/metro/types.js.map +1 -0
  27. package/lib/commonjs/metro/withRnIconify.js +53 -0
  28. package/lib/commonjs/metro/withRnIconify.js.map +1 -0
  29. package/lib/module/IconRenderer.js +54 -12
  30. package/lib/module/IconRenderer.js.map +1 -1
  31. package/lib/module/babel/cache-writer.js +99 -26
  32. package/lib/module/babel/cache-writer.js.map +1 -1
  33. package/lib/module/babel/index.js +1 -1
  34. package/lib/module/babel/index.js.map +1 -1
  35. package/lib/module/babel/plugin.js +193 -60
  36. package/lib/module/babel/plugin.js.map +1 -1
  37. package/lib/module/babel/scanner.js +216 -0
  38. package/lib/module/babel/scanner.js.map +1 -0
  39. package/lib/module/babel/types.js +18 -0
  40. package/lib/module/babel/types.js.map +1 -1
  41. package/lib/module/cache/CacheManager.js +70 -1
  42. package/lib/module/cache/CacheManager.js.map +1 -1
  43. package/lib/module/config/ConfigManager.js +8 -1
  44. package/lib/module/config/ConfigManager.js.map +1 -1
  45. package/lib/module/config/index.js.map +1 -1
  46. package/lib/module/config/types.js +9 -0
  47. package/lib/module/config/types.js.map +1 -1
  48. package/lib/module/index.js.map +1 -1
  49. package/lib/module/metro/devServerMiddleware.js +143 -0
  50. package/lib/module/metro/devServerMiddleware.js.map +1 -0
  51. package/lib/module/metro/index.js +19 -0
  52. package/lib/module/metro/index.js.map +1 -0
  53. package/lib/module/metro/types.js +2 -0
  54. package/lib/module/metro/types.js.map +1 -0
  55. package/lib/module/metro/withRnIconify.js +48 -0
  56. package/lib/module/metro/withRnIconify.js.map +1 -0
  57. package/lib/typescript/IconRenderer.d.ts.map +1 -1
  58. package/lib/typescript/babel/cache-writer.d.ts +16 -2
  59. package/lib/typescript/babel/cache-writer.d.ts.map +1 -1
  60. package/lib/typescript/babel/index.d.ts +1 -1
  61. package/lib/typescript/babel/index.d.ts.map +1 -1
  62. package/lib/typescript/babel/plugin.d.ts +19 -0
  63. package/lib/typescript/babel/plugin.d.ts.map +1 -1
  64. package/lib/typescript/babel/scanner.d.ts +31 -0
  65. package/lib/typescript/babel/scanner.d.ts.map +1 -0
  66. package/lib/typescript/babel/types.d.ts +13 -1
  67. package/lib/typescript/babel/types.d.ts.map +1 -1
  68. package/lib/typescript/cache/CacheManager.d.ts +16 -0
  69. package/lib/typescript/cache/CacheManager.d.ts.map +1 -1
  70. package/lib/typescript/config/ConfigManager.d.ts +5 -1
  71. package/lib/typescript/config/ConfigManager.d.ts.map +1 -1
  72. package/lib/typescript/config/index.d.ts +1 -1
  73. package/lib/typescript/config/index.d.ts.map +1 -1
  74. package/lib/typescript/config/types.d.ts +26 -0
  75. package/lib/typescript/config/types.d.ts.map +1 -1
  76. package/lib/typescript/index.d.ts +1 -1
  77. package/lib/typescript/index.d.ts.map +1 -1
  78. package/lib/typescript/metro/devServerMiddleware.d.ts +11 -0
  79. package/lib/typescript/metro/devServerMiddleware.d.ts.map +1 -0
  80. package/lib/typescript/metro/index.d.ts +19 -0
  81. package/lib/typescript/metro/index.d.ts.map +1 -0
  82. package/lib/typescript/metro/types.d.ts +46 -0
  83. package/lib/typescript/metro/types.d.ts.map +1 -0
  84. package/lib/typescript/metro/withRnIconify.d.ts +20 -0
  85. package/lib/typescript/metro/withRnIconify.d.ts.map +1 -0
  86. package/metro.js +12 -0
  87. package/package.json +8 -4
  88. package/src/IconRenderer.tsx +59 -12
  89. package/src/babel/cache-writer.ts +105 -31
  90. package/src/babel/index.ts +1 -0
  91. package/src/babel/plugin.ts +219 -47
  92. package/src/babel/scanner.ts +277 -0
  93. package/src/babel/types.ts +35 -1
  94. package/src/cache/CacheManager.ts +70 -1
  95. package/src/config/ConfigManager.ts +9 -0
  96. package/src/config/index.ts +1 -0
  97. package/src/config/types.ts +35 -0
  98. package/src/index.ts +1 -0
  99. package/src/metro/devServerMiddleware.ts +137 -0
  100. package/src/metro/index.ts +19 -0
  101. package/src/metro/types.ts +52 -0
  102. package/src/metro/withRnIconify.ts +52 -0
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Metro configuration types
3
+ * Minimal type definitions for Metro config integration
4
+ */
5
+
6
+ import type { IncomingMessage, ServerResponse } from 'http';
7
+
8
+ /**
9
+ * Metro middleware function
10
+ */
11
+ export type MetroMiddleware = (req: IncomingMessage, res: ServerResponse, next: () => void) => void;
12
+
13
+ /**
14
+ * Metro server configuration
15
+ */
16
+ export interface MetroServerConfig {
17
+ enhanceMiddleware?: (middleware: MetroMiddleware, server: unknown) => MetroMiddleware;
18
+ }
19
+
20
+ /**
21
+ * Metro configuration object (partial, only what we need)
22
+ */
23
+ export interface MetroConfig {
24
+ server?: MetroServerConfig;
25
+ [key: string]: unknown;
26
+ }
27
+
28
+ /**
29
+ * rn-iconify Metro plugin options
30
+ */
31
+ export interface RnIconifyMetroOptions {
32
+ /**
33
+ * Directory to store usage data
34
+ * @default '.rn-iconify'
35
+ */
36
+ outputDir?: string;
37
+
38
+ /**
39
+ * Enable verbose logging
40
+ * @default false
41
+ */
42
+ verbose?: boolean;
43
+ }
44
+
45
+ /**
46
+ * Usage file structure
47
+ */
48
+ export interface UsageFile {
49
+ version: string;
50
+ icons: string[];
51
+ updatedAt: string;
52
+ }
@@ -0,0 +1,52 @@
1
+ /**
2
+ * Metro Config Wrapper
3
+ * Adds rn-iconify middleware to the Metro dev server
4
+ *
5
+ * @example
6
+ * ```js
7
+ * // metro.config.js
8
+ * const { withRnIconify } = require('rn-iconify/metro');
9
+ *
10
+ * const config = getDefaultConfig(__dirname);
11
+ * module.exports = withRnIconify(config);
12
+ * ```
13
+ */
14
+
15
+ import type { MetroConfig, MetroMiddleware, RnIconifyMetroOptions } from './types';
16
+ import { createDevServerMiddleware } from './devServerMiddleware';
17
+
18
+ /**
19
+ * Wrap a Metro config to add rn-iconify dev server middleware
20
+ * This enables runtime icon usage learning during development
21
+ */
22
+ export function withRnIconify(config: MetroConfig, options?: RnIconifyMetroOptions): MetroConfig {
23
+ const middleware = createDevServerMiddleware(options);
24
+
25
+ const existingEnhance = config.server?.enhanceMiddleware;
26
+
27
+ return {
28
+ ...config,
29
+ server: {
30
+ ...config.server,
31
+ enhanceMiddleware: (metroMiddleware: MetroMiddleware, server: unknown): MetroMiddleware => {
32
+ // Apply existing enhanceMiddleware if present
33
+ const enhanced = existingEnhance
34
+ ? existingEnhance(metroMiddleware, server)
35
+ : metroMiddleware;
36
+
37
+ // Wrap with our middleware
38
+ return (req, res, next) => {
39
+ // Check if this is our endpoint
40
+ const url = req.url;
41
+ if (url === '/__rn_iconify_log' || url === '/__rn_iconify_status') {
42
+ middleware(req, res, next);
43
+ return;
44
+ }
45
+
46
+ // Otherwise pass through
47
+ enhanced(req, res, next);
48
+ };
49
+ },
50
+ },
51
+ };
52
+ }