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.
- package/lib/commonjs/IconRenderer.js +54 -12
- package/lib/commonjs/IconRenderer.js.map +1 -1
- package/lib/commonjs/babel/cache-writer.js +102 -26
- package/lib/commonjs/babel/cache-writer.js.map +1 -1
- package/lib/commonjs/babel/plugin.js +129 -44
- package/lib/commonjs/babel/plugin.js.map +1 -1
- package/lib/commonjs/babel/scanner.js +219 -0
- package/lib/commonjs/babel/scanner.js.map +1 -0
- package/lib/commonjs/babel/types.js.map +1 -1
- package/lib/commonjs/cache/CacheManager.js +82 -1
- package/lib/commonjs/cache/CacheManager.js.map +1 -1
- package/lib/commonjs/cache/DiskCache.js +33 -4
- package/lib/commonjs/cache/DiskCache.js.map +1 -1
- package/lib/commonjs/cli/CLAUDE.md +7 -0
- package/lib/commonjs/cli/commands/bundle.js +37 -6
- package/lib/commonjs/cli/commands/bundle.js.map +1 -1
- package/lib/commonjs/config/ConfigManager.js +8 -1
- package/lib/commonjs/config/ConfigManager.js.map +1 -1
- package/lib/commonjs/config/index.js.map +1 -1
- package/lib/commonjs/config/types.js +9 -0
- package/lib/commonjs/config/types.js.map +1 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/metro/devServerMiddleware.js +150 -0
- package/lib/commonjs/metro/devServerMiddleware.js.map +1 -0
- package/lib/commonjs/metro/index.js +20 -0
- package/lib/commonjs/metro/index.js.map +1 -0
- package/lib/commonjs/metro/types.js +6 -0
- package/lib/commonjs/metro/types.js.map +1 -0
- package/lib/commonjs/metro/withRnIconify.js +53 -0
- package/lib/commonjs/metro/withRnIconify.js.map +1 -0
- package/lib/commonjs/network/IconifyAPI.js +30 -2
- package/lib/commonjs/network/IconifyAPI.js.map +1 -1
- package/lib/module/IconRenderer.js +54 -12
- package/lib/module/IconRenderer.js.map +1 -1
- package/lib/module/babel/cache-writer.js +99 -26
- package/lib/module/babel/cache-writer.js.map +1 -1
- package/lib/module/babel/plugin.js +129 -46
- package/lib/module/babel/plugin.js.map +1 -1
- package/lib/module/babel/scanner.js +213 -0
- package/lib/module/babel/scanner.js.map +1 -0
- package/lib/module/babel/types.js.map +1 -1
- package/lib/module/cache/CacheManager.js +82 -1
- package/lib/module/cache/CacheManager.js.map +1 -1
- package/lib/module/cache/DiskCache.js +32 -4
- package/lib/module/cache/DiskCache.js.map +1 -1
- package/lib/module/cli/CLAUDE.md +7 -0
- package/lib/module/cli/commands/bundle.js +37 -6
- package/lib/module/cli/commands/bundle.js.map +1 -1
- package/lib/module/config/ConfigManager.js +8 -1
- package/lib/module/config/ConfigManager.js.map +1 -1
- package/lib/module/config/index.js.map +1 -1
- package/lib/module/config/types.js +9 -0
- package/lib/module/config/types.js.map +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/metro/devServerMiddleware.js +143 -0
- package/lib/module/metro/devServerMiddleware.js.map +1 -0
- package/lib/module/metro/index.js +19 -0
- package/lib/module/metro/index.js.map +1 -0
- package/lib/module/metro/types.js +2 -0
- package/lib/module/metro/types.js.map +1 -0
- package/lib/module/metro/withRnIconify.js +48 -0
- package/lib/module/metro/withRnIconify.js.map +1 -0
- package/lib/module/network/IconifyAPI.js +30 -2
- package/lib/module/network/IconifyAPI.js.map +1 -1
- package/lib/typescript/IconRenderer.d.ts.map +1 -1
- package/lib/typescript/babel/cache-writer.d.ts +16 -2
- package/lib/typescript/babel/cache-writer.d.ts.map +1 -1
- package/lib/typescript/babel/plugin.d.ts +5 -0
- package/lib/typescript/babel/plugin.d.ts.map +1 -1
- package/lib/typescript/babel/scanner.d.ts +31 -0
- package/lib/typescript/babel/scanner.d.ts.map +1 -0
- package/lib/typescript/babel/types.d.ts +8 -1
- package/lib/typescript/babel/types.d.ts.map +1 -1
- package/lib/typescript/cache/CacheManager.d.ts +16 -0
- package/lib/typescript/cache/CacheManager.d.ts.map +1 -1
- package/lib/typescript/cache/DiskCache.d.ts +2 -0
- package/lib/typescript/cache/DiskCache.d.ts.map +1 -1
- package/lib/typescript/cli/commands/bundle.d.ts.map +1 -1
- package/lib/typescript/components/Charm.d.ts +1 -1
- package/lib/typescript/components/Dashicons.d.ts +1 -1
- package/lib/typescript/components/Hugeicons.d.ts +1 -1
- package/lib/typescript/components/Ix.d.ts +1 -1
- package/lib/typescript/components/Tabler.d.ts +1 -1
- package/lib/typescript/components/Token.d.ts +1 -1
- package/lib/typescript/components/TokenBranded.d.ts +1 -1
- package/lib/typescript/config/ConfigManager.d.ts +5 -1
- package/lib/typescript/config/ConfigManager.d.ts.map +1 -1
- package/lib/typescript/config/index.d.ts +1 -1
- package/lib/typescript/config/index.d.ts.map +1 -1
- package/lib/typescript/config/types.d.ts +26 -0
- package/lib/typescript/config/types.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +1 -1
- package/lib/typescript/index.d.ts.map +1 -1
- package/lib/typescript/metro/devServerMiddleware.d.ts +11 -0
- package/lib/typescript/metro/devServerMiddleware.d.ts.map +1 -0
- package/lib/typescript/metro/index.d.ts +19 -0
- package/lib/typescript/metro/index.d.ts.map +1 -0
- package/lib/typescript/metro/types.d.ts +46 -0
- package/lib/typescript/metro/types.d.ts.map +1 -0
- package/lib/typescript/metro/withRnIconify.d.ts +20 -0
- package/lib/typescript/metro/withRnIconify.d.ts.map +1 -0
- package/lib/typescript/network/IconifyAPI.d.ts.map +1 -1
- package/metro.js +12 -0
- package/package.json +13 -6
- package/src/IconRenderer.tsx +59 -12
- package/src/babel/cache-writer.ts +105 -31
- package/src/babel/plugin.ts +157 -34
- package/src/babel/scanner.ts +274 -0
- package/src/babel/types.ts +9 -1
- package/src/cache/CacheManager.ts +83 -1
- package/src/cache/DiskCache.ts +43 -4
- package/src/cli/CLAUDE.md +7 -0
- package/src/cli/commands/bundle.ts +52 -6
- package/src/config/ConfigManager.ts +9 -0
- package/src/config/index.ts +1 -0
- package/src/config/types.ts +35 -0
- package/src/index.ts +1 -0
- package/src/metro/devServerMiddleware.ts +137 -0
- package/src/metro/index.ts +19 -0
- package/src/metro/types.ts +52 -0
- package/src/metro/withRnIconify.ts +52 -0
- package/src/network/IconifyAPI.ts +23 -1
|
@@ -39,6 +39,11 @@ class CacheManagerImpl {
|
|
|
39
39
|
*/
|
|
40
40
|
bundledIconsInitialized = false;
|
|
41
41
|
|
|
42
|
+
/**
|
|
43
|
+
* Guard to prevent reporting icons during bundle load
|
|
44
|
+
*/
|
|
45
|
+
isLoadingBundle = false;
|
|
46
|
+
|
|
42
47
|
/**
|
|
43
48
|
* Initialize bundled icons from the Babel plugin cache
|
|
44
49
|
* This should be called automatically on first access
|
|
@@ -65,11 +70,27 @@ class CacheManagerImpl {
|
|
|
65
70
|
if (!bundle || !bundle.icons || bundle.version !== '1.0.0') {
|
|
66
71
|
return 0;
|
|
67
72
|
}
|
|
73
|
+
this.isLoadingBundle = true;
|
|
68
74
|
this.bundledIcons = new Map();
|
|
75
|
+
let skippedCount = 0;
|
|
69
76
|
for (const [iconName, data] of Object.entries(bundle.icons)) {
|
|
70
|
-
|
|
77
|
+
if (data && typeof data.svg === 'string' && data.svg.length > 0) {
|
|
78
|
+
this.bundledIcons.set(iconName, data.svg);
|
|
79
|
+
} else {
|
|
80
|
+
skippedCount++;
|
|
81
|
+
if (__DEV__) {
|
|
82
|
+
console.warn(`[rn-iconify] Skipping invalid icon in bundle: ${iconName}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (__DEV__ && skippedCount > 0) {
|
|
87
|
+
console.warn(`[rn-iconify] Skipped ${skippedCount} invalid icons in bundle`);
|
|
71
88
|
}
|
|
72
89
|
this.bundledIconsInitialized = true;
|
|
90
|
+
|
|
91
|
+
// Warmup memory cache from disk cache
|
|
92
|
+
this.warmup();
|
|
93
|
+
this.isLoadingBundle = false;
|
|
73
94
|
return this.bundledIcons.size;
|
|
74
95
|
}
|
|
75
96
|
|
|
@@ -131,6 +152,11 @@ class CacheManagerImpl {
|
|
|
131
152
|
set(iconName, svg) {
|
|
132
153
|
_MemoryCache.MemoryCache.set(iconName, svg);
|
|
133
154
|
_DiskCache.DiskCache.set(iconName, svg);
|
|
155
|
+
|
|
156
|
+
// Report to Metro dev server for dynamic icon learning
|
|
157
|
+
if (!this.isLoadingBundle) {
|
|
158
|
+
this.reportIconUsage(iconName);
|
|
159
|
+
}
|
|
134
160
|
}
|
|
135
161
|
|
|
136
162
|
/**
|
|
@@ -305,6 +331,61 @@ class CacheManagerImpl {
|
|
|
305
331
|
}
|
|
306
332
|
}
|
|
307
333
|
}
|
|
334
|
+
|
|
335
|
+
/**
|
|
336
|
+
* Warmup memory cache by loading recent disk cache entries
|
|
337
|
+
* Called automatically at the end of loadBundle()
|
|
338
|
+
*
|
|
339
|
+
* @param maxIcons Maximum number of icons to load into memory
|
|
340
|
+
*/
|
|
341
|
+
warmup(maxIcons = 100) {
|
|
342
|
+
try {
|
|
343
|
+
const keys = _DiskCache.DiskCache.keys();
|
|
344
|
+
const toLoad = keys.slice(0, maxIcons);
|
|
345
|
+
let loaded = 0;
|
|
346
|
+
for (const key of toLoad) {
|
|
347
|
+
if (!_MemoryCache.MemoryCache.has(key)) {
|
|
348
|
+
const svg = _DiskCache.DiskCache.get(key);
|
|
349
|
+
if (svg) {
|
|
350
|
+
_MemoryCache.MemoryCache.set(key, svg);
|
|
351
|
+
loaded++;
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
if (__DEV__ && loaded > 0) {
|
|
356
|
+
console.log(`[rn-iconify] Warmed up ${loaded} icons from disk cache`);
|
|
357
|
+
}
|
|
358
|
+
} catch {
|
|
359
|
+
// Warmup is best-effort, don't fail
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
|
|
363
|
+
/**
|
|
364
|
+
* Report icon usage to Metro dev server (DEV only)
|
|
365
|
+
* Fire-and-forget POST to the Metro middleware
|
|
366
|
+
*/
|
|
367
|
+
reportIconUsage(iconName) {
|
|
368
|
+
if (typeof __DEV__ === 'undefined' || !__DEV__) return;
|
|
369
|
+
if (this.isLoadingBundle) return;
|
|
370
|
+
try {
|
|
371
|
+
// Use global fetch if available (React Native)
|
|
372
|
+
if (typeof fetch === 'function') {
|
|
373
|
+
fetch('http://localhost:8081/__rn_iconify_log', {
|
|
374
|
+
method: 'POST',
|
|
375
|
+
headers: {
|
|
376
|
+
'Content-Type': 'application/json'
|
|
377
|
+
},
|
|
378
|
+
body: JSON.stringify({
|
|
379
|
+
icon: iconName
|
|
380
|
+
})
|
|
381
|
+
}).catch(() => {
|
|
382
|
+
// Silently ignore - Metro server might not have the plugin
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
} catch {
|
|
386
|
+
// Silently ignore
|
|
387
|
+
}
|
|
388
|
+
}
|
|
308
389
|
}
|
|
309
390
|
|
|
310
391
|
// Singleton instance
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_MemoryCache","require","_DiskCache","_native","CacheManagerImpl","prefetchingIcons","Set","bundledIcons","bundledIconsInitialized","initBundledIcons","loadBundle","bundle","icons","version","Map","iconName","data","Object","entries","set","
|
|
1
|
+
{"version":3,"names":["_MemoryCache","require","_DiskCache","_native","CacheManagerImpl","prefetchingIcons","Set","bundledIcons","bundledIconsInitialized","isLoadingBundle","initBundledIcons","loadBundle","bundle","icons","version","Map","skippedCount","iconName","data","Object","entries","svg","length","set","__DEV__","console","warn","warmup","size","hasBundled","has","getBundledCount","get","memoryCached","MemoryCache","bundledSvg","diskCached","DiskCache","reportIconUsage","delete","clear","clearMemory","getStats","diskStats","memoryCount","bundledCount","diskCount","iconCount","diskSizeBytes","sizeBytes","prefetch","iconNames","fetchFn","toFetch","filter","name","success","failed","forEach","add","isNativeModuleAvailable","nativeModule","getNativeIconify","result","prefetchIcons","error","prefetchWithJS","CONCURRENCY","i","batch","slice","results","Promise","allSettled","map","j","status","push","value","isNativeAvailable","getNativeStats","getCacheStats","clearNative","clearCache","maxIcons","keys","toLoad","loaded","key","log","fetch","method","headers","body","JSON","stringify","icon","catch","CacheManager","exports"],"sourceRoot":"../../../src","sources":["cache/CacheManager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -4,16 +4,45 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.DiskCache = void 0;
|
|
7
|
-
var
|
|
7
|
+
var MMKVModule = _interopRequireWildcard(require("react-native-mmkv"));
|
|
8
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
8
9
|
/**
|
|
9
10
|
* Disk cache using MMKV for persistent icon storage
|
|
10
11
|
* Provides fast synchronous access via JSI
|
|
12
|
+
*
|
|
13
|
+
* Supports both react-native-mmkv v3.x and v4.x
|
|
11
14
|
*/
|
|
12
15
|
|
|
16
|
+
/**
|
|
17
|
+
* MMKV storage interface (compatible with both v3 and v4)
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Create MMKV instance compatible with both v3.x and v4.x
|
|
22
|
+
*
|
|
23
|
+
* v3.x: import { MMKV } from 'react-native-mmkv' → new MMKV({ id: '...' })
|
|
24
|
+
* v4.x: import { createMMKV } from 'react-native-mmkv' → createMMKV({ id: '...' })
|
|
25
|
+
*/
|
|
26
|
+
function createStorage(id) {
|
|
27
|
+
const config = {
|
|
28
|
+
id
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
// v4.x: createMMKV function exists
|
|
32
|
+
if ('createMMKV' in MMKVModule && typeof MMKVModule.createMMKV === 'function') {
|
|
33
|
+
return MMKVModule.createMMKV(config);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
// v3.x: MMKV is a constructor
|
|
37
|
+
if ('MMKV' in MMKVModule && typeof MMKVModule.MMKV === 'function') {
|
|
38
|
+
const MMKVClass = MMKVModule.MMKV;
|
|
39
|
+
return new MMKVClass(config);
|
|
40
|
+
}
|
|
41
|
+
throw new Error('[rn-iconify] Could not initialize MMKV storage. ' + 'Please ensure react-native-mmkv (v3.x or v4.x) is properly installed.');
|
|
42
|
+
}
|
|
43
|
+
|
|
13
44
|
// MMKV instance for icon cache
|
|
14
|
-
const storage =
|
|
15
|
-
id: 'rn-iconify-cache'
|
|
16
|
-
});
|
|
45
|
+
const storage = createStorage('rn-iconify-cache');
|
|
17
46
|
|
|
18
47
|
// Cache metadata storage
|
|
19
48
|
const META_KEY_PREFIX = '__meta:';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["
|
|
1
|
+
{"version":3,"names":["MMKVModule","_interopRequireWildcard","require","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","createStorage","id","config","createMMKV","MMKV","MMKVClass","Error","storage","META_KEY_PREFIX","CACHE_VERSION","CACHE_VERSION_KEY","DiskCacheImpl","initialized","accessTimes","Map","pendingMetadataSync","metadataSyncTimerId","METADATA_SYNC_INTERVAL","constructor","initialize","version","getNumber","clear","iconName","svg","getString","Date","now","scheduleMetadataSync","setTimeout","syncMetadataToDisk","cancelPendingMetadataSync","clearTimeout","timestamp","contains","delete","clearAll","keys","getAllKeys","filter","key","startsWith","getStats","totalSize","value","length","iconCount","sizeBytes","evictToSize","maxSizeBytes","stats","entries","size","push","sort","a","b","currentSize","entry","DiskCache","exports"],"sourceRoot":"../../../src","sources":["cache/DiskCache.ts"],"mappings":";;;;;;AAOA,IAAAA,UAAA,GAAAC,uBAAA,CAAAC,OAAA;AAAgD,SAAAD,wBAAAE,CAAA,EAAAC,CAAA,6BAAAC,OAAA,MAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAJ,uBAAA,YAAAA,CAAAE,CAAA,EAAAC,CAAA,SAAAA,CAAA,IAAAD,CAAA,IAAAA,CAAA,CAAAK,UAAA,SAAAL,CAAA,MAAAM,CAAA,EAAAC,CAAA,EAAAC,CAAA,KAAAC,SAAA,QAAAC,OAAA,EAAAV,CAAA,iBAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,SAAAQ,CAAA,MAAAF,CAAA,GAAAL,CAAA,GAAAG,CAAA,GAAAD,CAAA,QAAAG,CAAA,CAAAK,GAAA,CAAAX,CAAA,UAAAM,CAAA,CAAAM,GAAA,CAAAZ,CAAA,GAAAM,CAAA,CAAAO,GAAA,CAAAb,CAAA,EAAAQ,CAAA,gBAAAP,CAAA,IAAAD,CAAA,gBAAAC,CAAA,OAAAa,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAC,CAAA,OAAAM,CAAA,IAAAD,CAAA,GAAAU,MAAA,CAAAC,cAAA,KAAAD,MAAA,CAAAE,wBAAA,CAAAlB,CAAA,EAAAC,CAAA,OAAAM,CAAA,CAAAK,GAAA,IAAAL,CAAA,CAAAM,GAAA,IAAAP,CAAA,CAAAE,CAAA,EAAAP,CAAA,EAAAM,CAAA,IAAAC,CAAA,CAAAP,CAAA,IAAAD,CAAA,CAAAC,CAAA,WAAAO,CAAA,KAAAR,CAAA,EAAAC,CAAA;AAPhD;AACA;AACA;AACA;AACA;AACA;;AAIA;AACA;AACA;;AAWA;AACA;AACA;AACA;AACA;AACA;AACA,SAASkB,aAAaA,CAACC,EAAU,EAAe;EAC9C,MAAMC,MAAM,GAAG;IAAED;EAAG,CAAC;;EAErB;EACA,IAAI,YAAY,IAAIvB,UAAU,IAAI,OAAOA,UAAU,CAACyB,UAAU,KAAK,UAAU,EAAE;IAC7E,OAAOzB,UAAU,CAACyB,UAAU,CAACD,MAAM,CAAC;EACtC;;EAEA;EACA,IAAI,MAAM,IAAIxB,UAAU,IAAI,OAAOA,UAAU,CAAC0B,IAAI,KAAK,UAAU,EAAE;IACjE,MAAMC,SAAS,GAAG3B,UAAU,CAAC0B,IAAmD;IAChF,OAAO,IAAIC,SAAS,CAACH,MAAM,CAAC;EAC9B;EAEA,MAAM,IAAII,KAAK,CACb,kDAAkD,GAChD,uEACJ,CAAC;AACH;;AAEA;AACA,MAAMC,OAAO,GAAGP,aAAa,CAAC,kBAAkB,CAAC;;AAEjD;AACA,MAAMQ,eAAe,GAAG,SAAS;AACjC,MAAMC,aAAa,GAAG,CAAC;AACvB,MAAMC,iBAAiB,GAAG,iBAAiB;AAE3C,MAAMC,aAAa,CAAC;EACVC,WAAW,GAAG,KAAK;EAC3B;EACQC,WAAW,GAAG,IAAIC,GAAG,CAAiB,CAAC;EACvCC,mBAAmB,GAAG,KAAK;EAC3BC,mBAAmB,GAAyC,IAAI;EACvDC,sBAAsB,GAAG,KAAK,CAAC,CAAC;;EAEjDC,WAAWA,CAAA,EAAG;IACZ,IAAI,CAACC,UAAU,CAAC,CAAC;EACnB;;EAEA;AACF;AACA;EACUA,UAAUA,CAAA,EAAS;IACzB,IAAI,IAAI,CAACP,WAAW,EAAE;IAEtB,MAAMQ,OAAO,GAAGb,OAAO,CAACc,SAAS,CAACX,iBAAiB,CAAC;IACpD,IAAIU,OAAO,KAAKX,aAAa,EAAE;MAC7B;MACA,IAAI,CAACa,KAAK,CAAC,CAAC;MACZf,OAAO,CAACb,GAAG,CAACgB,iBAAiB,EAAED,aAAa,CAAC;IAC/C;IAEA,IAAI,CAACG,WAAW,GAAG,IAAI;EACzB;;EAEA;AACF;AACA;AACA;EACEnB,GAAGA,CAAC8B,QAAgB,EAAiB;IACnC,MAAMC,GAAG,GAAGjB,OAAO,CAACkB,SAAS,CAACF,QAAQ,CAAC;IACvC,IAAIC,GAAG,EAAE;MACP;MACA,IAAI,CAACX,WAAW,CAACnB,GAAG,CAAC6B,QAAQ,EAAEG,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC;MAC1C,IAAI,CAACC,oBAAoB,CAAC,CAAC;MAC3B,OAAOJ,GAAG;IACZ;IACA,OAAO,IAAI;EACb;;EAEA;AACF;AACA;EACUI,oBAAoBA,CAAA,EAAS;IACnC,IAAI,IAAI,CAACb,mBAAmB,EAAE;IAC9B,IAAI,CAACA,mBAAmB,GAAG,IAAI;IAE/B,IAAI,CAACC,mBAAmB,GAAGa,UAAU,CAAC,MAAM;MAC1C,IAAI,CAACC,kBAAkB,CAAC,CAAC;MACzB,IAAI,CAACf,mBAAmB,GAAG,KAAK;MAChC,IAAI,CAACC,mBAAmB,GAAG,IAAI;IACjC,CAAC,EAAE,IAAI,CAACC,sBAAsB,CAAC;EACjC;;EAEA;AACF;AACA;EACUc,yBAAyBA,CAAA,EAAS;IACxC,IAAI,IAAI,CAACf,mBAAmB,KAAK,IAAI,EAAE;MACrCgB,YAAY,CAAC,IAAI,CAAChB,mBAAmB,CAAC;MACtC,IAAI,CAACA,mBAAmB,GAAG,IAAI;MAC/B,IAAI,CAACD,mBAAmB,GAAG,KAAK;IAClC;EACF;;EAEA;AACF;AACA;EACUe,kBAAkBA,CAAA,EAAS;IACjC,KAAK,MAAM,CAACP,QAAQ,EAAEU,SAAS,CAAC,IAAI,IAAI,CAACpB,WAAW,EAAE;MACpDN,OAAO,CAACb,GAAG,CAAC,GAAGc,eAAe,GAAGe,QAAQ,EAAE,EAAEU,SAAS,CAAC;IACzD;IACA,IAAI,CAACpB,WAAW,CAACS,KAAK,CAAC,CAAC;EAC1B;;EAEA;AACF;AACA;EACE5B,GAAGA,CAAC6B,QAAgB,EAAEC,GAAW,EAAQ;IACvCjB,OAAO,CAACb,GAAG,CAAC6B,QAAQ,EAAEC,GAAG,CAAC;IAC1BjB,OAAO,CAACb,GAAG,CAAC,GAAGc,eAAe,GAAGe,QAAQ,EAAE,EAAEG,IAAI,CAACC,GAAG,CAAC,CAAC,CAAC;EAC1D;;EAEA;AACF;AACA;EACEnC,GAAGA,CAAC+B,QAAgB,EAAW;IAC7B,OAAOhB,OAAO,CAAC2B,QAAQ,CAACX,QAAQ,CAAC;EACnC;;EAEA;AACF;AACA;EACEY,MAAMA,CAACZ,QAAgB,EAAQ;IAC7BhB,OAAO,CAAC4B,MAAM,CAACZ,QAAQ,CAAC;IACxBhB,OAAO,CAAC4B,MAAM,CAAC,GAAG3B,eAAe,GAAGe,QAAQ,EAAE,CAAC;EACjD;;EAEA;AACF;AACA;EACED,KAAKA,CAAA,EAAS;IACZ;IACA,IAAI,CAACS,yBAAyB,CAAC,CAAC;IAChC,IAAI,CAAClB,WAAW,CAACS,KAAK,CAAC,CAAC;IACxBf,OAAO,CAAC6B,QAAQ,CAAC,CAAC;IAClB7B,OAAO,CAACb,GAAG,CAACgB,iBAAiB,EAAED,aAAa,CAAC;EAC/C;;EAEA;AACF;AACA;EACE4B,IAAIA,CAAA,EAAa;IACf,OAAO9B,OAAO,CACX+B,UAAU,CAAC,CAAC,CACZC,MAAM,CAAEC,GAAG,IAAK,CAACA,GAAG,CAACC,UAAU,CAACjC,eAAe,CAAC,IAAIgC,GAAG,KAAK9B,iBAAiB,CAAC;EACnF;;EAEA;AACF;AACA;EACEgC,QAAQA,CAAA,EAA6C;IACnD,MAAML,IAAI,GAAG,IAAI,CAACA,IAAI,CAAC,CAAC;IACxB,IAAIM,SAAS,GAAG,CAAC;IAEjB,KAAK,MAAMH,GAAG,IAAIH,IAAI,EAAE;MACtB,MAAMO,KAAK,GAAGrC,OAAO,CAACkB,SAAS,CAACe,GAAG,CAAC;MACpC,IAAII,KAAK,EAAE;QACTD,SAAS,IAAIC,KAAK,CAACC,MAAM,GAAG,CAAC,CAAC,CAAC;MACjC;IACF;IAEA,OAAO;MACLC,SAAS,EAAET,IAAI,CAACQ,MAAM;MACtBE,SAAS,EAAEJ;IACb,CAAC;EACH;;EAEA;AACF;AACA;AACA;EACEK,WAAWA,CAACC,YAAoB,EAAQ;IACtC;IACA,IAAI,CAACnB,kBAAkB,CAAC,CAAC;IAEzB,MAAMoB,KAAK,GAAG,IAAI,CAACR,QAAQ,CAAC,CAAC;IAC7B,IAAIQ,KAAK,CAACH,SAAS,IAAIE,YAAY,EAAE;IAErC,MAAMZ,IAAI,GAAG,IAAI,CAACA,IAAI,CAAC,CAAC;IACxB,MAAMc,OAAgE,GAAG,EAAE;;IAE3E;IACA,KAAK,MAAMX,GAAG,IAAIH,IAAI,EAAE;MACtB;MACA,MAAMJ,SAAS,GACb,IAAI,CAACpB,WAAW,CAACpB,GAAG,CAAC+C,GAAG,CAAC,IAAIjC,OAAO,CAACc,SAAS,CAAC,GAAGb,eAAe,GAAGgC,GAAG,EAAE,CAAC,IAAI,CAAC;MACjF,MAAMI,KAAK,GAAGrC,OAAO,CAACkB,SAAS,CAACe,GAAG,CAAC;MACpC,MAAMY,IAAI,GAAGR,KAAK,GAAGA,KAAK,CAACC,MAAM,GAAG,CAAC,GAAG,CAAC;MACzCM,OAAO,CAACE,IAAI,CAAC;QAAEb,GAAG;QAAEP,SAAS;QAAEmB;MAAK,CAAC,CAAC;IACxC;;IAEA;IACAD,OAAO,CAACG,IAAI,CAAC,CAACC,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACtB,SAAS,GAAGuB,CAAC,CAACvB,SAAS,CAAC;;IAEjD;IACA,IAAIwB,WAAW,GAAGP,KAAK,CAACH,SAAS;IACjC,KAAK,MAAMW,KAAK,IAAIP,OAAO,EAAE;MAC3B,IAAIM,WAAW,IAAIR,YAAY,EAAE;MACjC,IAAI,CAACd,MAAM,CAACuB,KAAK,CAAClB,GAAG,CAAC;MACtBiB,WAAW,IAAIC,KAAK,CAACN,IAAI;IAC3B;EACF;AACF;;AAEA;AACO,MAAMO,SAAS,GAAAC,OAAA,CAAAD,SAAA,GAAG,IAAIhD,aAAa,CAAC,CAAC","ignoreList":[]}
|
|
@@ -24,6 +24,38 @@ const ICONIFY_API = 'https://api.iconify.design';
|
|
|
24
24
|
*/
|
|
25
25
|
const FETCH_TIMEOUT = 30000;
|
|
26
26
|
|
|
27
|
+
/**
|
|
28
|
+
* Icon data from Iconify API
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Build SVG string from Iconify icon data with transformation support
|
|
33
|
+
*/
|
|
34
|
+
function buildSvgFromIconData(data, width, height) {
|
|
35
|
+
const left = data.left ?? 0;
|
|
36
|
+
const top = data.top ?? 0;
|
|
37
|
+
const viewBox = `${left} ${top} ${width} ${height}`;
|
|
38
|
+
|
|
39
|
+
// Apply transformations (rotate, hFlip, vFlip)
|
|
40
|
+
let body = data.body;
|
|
41
|
+
const transforms = [];
|
|
42
|
+
if (data.rotate) {
|
|
43
|
+
const rotation = data.rotate * 90;
|
|
44
|
+
transforms.push(`rotate(${rotation} ${width / 2} ${height / 2})`);
|
|
45
|
+
}
|
|
46
|
+
if (data.hFlip || data.vFlip) {
|
|
47
|
+
const scaleX = data.hFlip ? -1 : 1;
|
|
48
|
+
const scaleY = data.vFlip ? -1 : 1;
|
|
49
|
+
const translateX = data.hFlip ? width : 0;
|
|
50
|
+
const translateY = data.vFlip ? height : 0;
|
|
51
|
+
transforms.push(`translate(${translateX} ${translateY}) scale(${scaleX} ${scaleY})`);
|
|
52
|
+
}
|
|
53
|
+
if (transforms.length > 0) {
|
|
54
|
+
body = `<g transform="${transforms.join(' ')}">${body}</g>`;
|
|
55
|
+
}
|
|
56
|
+
return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="${viewBox}">${body}</svg>`;
|
|
57
|
+
}
|
|
58
|
+
|
|
27
59
|
/**
|
|
28
60
|
* Fetch multiple icons with batching
|
|
29
61
|
*/
|
|
@@ -44,10 +76,9 @@ async function fetchIcons(icons, verbose, onProgress) {
|
|
|
44
76
|
|
|
45
77
|
// Fetch each prefix batch
|
|
46
78
|
for (const [prefix, names] of byPrefix) {
|
|
79
|
+
const controller = new AbortController();
|
|
80
|
+
const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT);
|
|
47
81
|
try {
|
|
48
|
-
const controller = new AbortController();
|
|
49
|
-
const timeout = setTimeout(() => controller.abort(), FETCH_TIMEOUT);
|
|
50
|
-
|
|
51
82
|
// Sort names alphabetically (Iconify best practice)
|
|
52
83
|
const sortedNames = [...names].sort();
|
|
53
84
|
const url = `${ICONIFY_API}/${prefix}.json?icons=${sortedNames.join(',')}`;
|
|
@@ -57,7 +88,6 @@ async function fetchIcons(icons, verbose, onProgress) {
|
|
|
57
88
|
const response = await fetch(url, {
|
|
58
89
|
signal: controller.signal
|
|
59
90
|
});
|
|
60
|
-
clearTimeout(timeout);
|
|
61
91
|
if (!response.ok) {
|
|
62
92
|
console.error(` Failed to fetch ${prefix}: ${response.status}`);
|
|
63
93
|
processed += names.length;
|
|
@@ -71,8 +101,7 @@ async function fetchIcons(icons, verbose, onProgress) {
|
|
|
71
101
|
if (iconData) {
|
|
72
102
|
const width = iconData.width ?? defaultWidth;
|
|
73
103
|
const height = iconData.height ?? defaultHeight;
|
|
74
|
-
const
|
|
75
|
-
const svg = `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${width} ${height}">${body}</svg>`;
|
|
104
|
+
const svg = buildSvgFromIconData(iconData, width, height);
|
|
76
105
|
results[`${prefix}:${name}`] = {
|
|
77
106
|
svg,
|
|
78
107
|
width,
|
|
@@ -89,6 +118,8 @@ async function fetchIcons(icons, verbose, onProgress) {
|
|
|
89
118
|
console.error(` Error fetching ${prefix}:`, error);
|
|
90
119
|
}
|
|
91
120
|
processed += names.length;
|
|
121
|
+
} finally {
|
|
122
|
+
clearTimeout(timeout);
|
|
92
123
|
}
|
|
93
124
|
}
|
|
94
125
|
return results;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["fs","_interopRequireWildcard","require","path","_types","_parser","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ICONIFY_API","FETCH_TIMEOUT","fetchIcons","icons","verbose","onProgress","results","byPrefix","Map","icon","prefix","name","split","
|
|
1
|
+
{"version":3,"names":["fs","_interopRequireWildcard","require","path","_types","_parser","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","ICONIFY_API","FETCH_TIMEOUT","buildSvgFromIconData","data","width","height","left","top","viewBox","body","transforms","rotate","rotation","push","hFlip","vFlip","scaleX","scaleY","translateX","translateY","length","join","fetchIcons","icons","verbose","onProgress","results","byPrefix","Map","icon","prefix","name","split","processed","total","names","controller","AbortController","timeout","setTimeout","abort","sortedNames","sort","url","console","log","response","fetch","signal","ok","error","status","json","defaultWidth","defaultHeight","iconData","svg","clearTimeout","bundleCommand","options","src","output","auto","manualIcons","exclude","pretty","iconsToBundle","analysis","analyzeDirectory","totalIcons","getUniqueIcons","parsed","parseIconList","includes","beforeCount","filter","some","pattern","regex","RegExp","replace","test","EXIT_CODES","ERROR","lastPercent","current","percent","Math","floor","process","stdout","write","fetchedIcons","fetchedCount","keys","failedCount","NETWORK_ERROR","bundle","version","generatedAt","Date","toISOString","count","outputDir","dirname","existsSync","mkdirSync","recursive","jsonContent","JSON","stringify","writeFileSync","stats","statSync","sizeKB","size","toFixed","SUCCESS"],"sourceRoot":"../../../../src","sources":["cli/commands/bundle.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -71,6 +71,12 @@ const ConfigManager = exports.ConfigManager = {
|
|
|
71
71
|
getPerformanceConfig() {
|
|
72
72
|
return currentConfig.performance;
|
|
73
73
|
},
|
|
74
|
+
/**
|
|
75
|
+
* Get defaults configuration
|
|
76
|
+
*/
|
|
77
|
+
getDefaultsConfig() {
|
|
78
|
+
return currentConfig.defaults;
|
|
79
|
+
},
|
|
74
80
|
/**
|
|
75
81
|
* Update configuration
|
|
76
82
|
* Merges with existing configuration
|
|
@@ -79,7 +85,8 @@ const ConfigManager = exports.ConfigManager = {
|
|
|
79
85
|
currentConfig = {
|
|
80
86
|
api: deepMerge(currentConfig.api, config.api ?? {}),
|
|
81
87
|
cache: deepMerge(currentConfig.cache, config.cache ?? {}),
|
|
82
|
-
performance: deepMerge(currentConfig.performance, config.performance ?? {})
|
|
88
|
+
performance: deepMerge(currentConfig.performance, config.performance ?? {}),
|
|
89
|
+
defaults: deepMerge(currentConfig.defaults, config.defaults ?? {})
|
|
83
90
|
};
|
|
84
91
|
|
|
85
92
|
// Notify listeners
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","deepMerge","target","source","result","key","Object","prototype","hasOwnProperty","call","sourceValue","targetValue","undefined","Array","isArray","currentConfig","DEFAULT_CONFIG","configChangeListeners","ConfigManager","exports","getConfig","getAPIConfig","api","getCacheConfig","cache","getPerformanceConfig","performance","setConfig","config","forEach","listener","resetConfig","onConfigChange","push","filter","l","isCustomServer","apiUrl","getAPIUrl","configure","resetConfiguration","getConfiguration","_default","default"],"sourceRoot":"../../../src","sources":["config/ConfigManager.ts"],"mappings":";;;;;;;;;;
|
|
1
|
+
{"version":3,"names":["_types","require","deepMerge","target","source","result","key","Object","prototype","hasOwnProperty","call","sourceValue","targetValue","undefined","Array","isArray","currentConfig","DEFAULT_CONFIG","configChangeListeners","ConfigManager","exports","getConfig","getAPIConfig","api","getCacheConfig","cache","getPerformanceConfig","performance","getDefaultsConfig","defaults","setConfig","config","forEach","listener","resetConfig","onConfigChange","push","filter","l","isCustomServer","apiUrl","getAPIUrl","configure","resetConfiguration","getConfiguration","_default","default"],"sourceRoot":"../../../src","sources":["config/ConfigManager.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","_ConfigManager"],"sourceRoot":"../../../src","sources":["config/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"names":["_types","require","_ConfigManager"],"sourceRoot":"../../../src","sources":["config/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BA,IAAAA,MAAA,GAAAC,OAAA;AAGA,IAAAC,cAAA,GAAAD,OAAA","ignoreList":[]}
|
|
@@ -16,6 +16,10 @@ exports.DEFAULT_CONFIG = void 0;
|
|
|
16
16
|
* Cache configuration options
|
|
17
17
|
*/
|
|
18
18
|
|
|
19
|
+
/**
|
|
20
|
+
* Default icon rendering configuration
|
|
21
|
+
*/
|
|
22
|
+
|
|
19
23
|
/**
|
|
20
24
|
* Performance monitoring configuration
|
|
21
25
|
*/
|
|
@@ -50,6 +54,11 @@ const DEFAULT_CONFIG = exports.DEFAULT_CONFIG = {
|
|
|
50
54
|
trackLoadTimes: true,
|
|
51
55
|
trackCacheStats: true,
|
|
52
56
|
maxHistorySize: 1000
|
|
57
|
+
},
|
|
58
|
+
defaults: {
|
|
59
|
+
placeholder: false,
|
|
60
|
+
fadeIn: true,
|
|
61
|
+
fadeInDuration: 150
|
|
53
62
|
}
|
|
54
63
|
};
|
|
55
64
|
//# sourceMappingURL=types.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["DEFAULT_CONFIG","exports","api","apiUrl","timeout","retries","retryDelay","headers","logging","cache","maxMemoryItems","enableDiskCache","diskCachePrefix","performance","enabled","trackLoadTimes","trackCacheStats","maxHistorySize"],"sourceRoot":"../../../src","sources":["config/types.ts"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEA;AACA;AACA;;AAsCA;AACA;AACA;;AAqBA;AACA;AACA;;AA2BA;AACA;AACA;;
|
|
1
|
+
{"version":3,"names":["DEFAULT_CONFIG","exports","api","apiUrl","timeout","retries","retryDelay","headers","logging","cache","maxMemoryItems","enableDiskCache","diskCachePrefix","performance","enabled","trackLoadTimes","trackCacheStats","maxHistorySize","defaults","placeholder","fadeIn","fadeInDuration"],"sourceRoot":"../../../src","sources":["config/types.ts"],"mappings":";;;;;;AAAA;AACA;AACA;;AAEA;AACA;AACA;;AAsCA;AACA;AACA;;AAqBA;AACA;AACA;;AAsBA;AACA;AACA;;AA2BA;AACA;AACA;;AAuBA;AACA;AACA;;AAQA;AACA;AACA;AACO,MAAMA,cAA8B,GAAAC,OAAA,CAAAD,cAAA,GAAG;EAC5CE,GAAG,EAAE;IACHC,MAAM,EAAE,4BAA4B;IACpCC,OAAO,EAAE,KAAK;IACdC,OAAO,EAAE,CAAC;IACVC,UAAU,EAAE,IAAI;IAChBC,OAAO,EAAE,CAAC,CAAC;IACXC,OAAO,EAAE;EACX,CAAC;EACDC,KAAK,EAAE;IACLC,cAAc,EAAE,GAAG;IACnBC,eAAe,EAAE,IAAI;IACrBC,eAAe,EAAE;EACnB,CAAC;EACDC,WAAW,EAAE;IACXC,OAAO,EAAE,KAAK;IACdC,cAAc,EAAE,IAAI;IACpBC,eAAe,EAAE,IAAI;IACrBC,cAAc,EAAE;EAClB,CAAC;EACDC,QAAQ,EAAE;IACRC,WAAW,EAAE,KAAK;IAClBC,MAAM,EAAE,IAAI;IACZC,cAAc,EAAE;EAClB;AACF,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_components","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_placeholder","_theme","_alias","_createIconSet","_animated","_navigation","_CacheManager","_config","_IconifyAPI","_native","_bundle","_performance","_accessibility","_explorer","prefetchIcons","iconNames","CacheManager","prefetch","fetchIcon","clearCache","clear","clearNative","getCacheStats","getStats"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBA,IAAAA,WAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,WAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAC,YAAA,EAAAJ,GAAA;EAAA,IAAAA,GAAA,IAAAK,OAAA,IAAAA,OAAA,CAAAL,GAAA,MAAAL,WAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAS,cAAA,CAAAD,OAAA,EAAAL,GAAA;IAAAO,UAAA;IAAAC,GAAA,WAAAA,CAAA;MAAA,OAAAb,WAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AAsBA,IAAAS,YAAA,GAAAb,OAAA;AAUA,IAAAc,MAAA,GAAAd,OAAA;AAYA,IAAAe,MAAA,GAAAf,OAAA;AAqBA,IAAAgB,cAAA,GAAAhB,OAAA;AAIA,IAAAiB,SAAA,GAAAjB,OAAA;AAoBA,IAAAkB,WAAA,GAAAlB,OAAA;AA+BA,IAAAmB,aAAA,GAAAnB,OAAA;AAIA,IAAAoB,OAAA,GAAApB,OAAA;
|
|
1
|
+
{"version":3,"names":["_components","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_placeholder","_theme","_alias","_createIconSet","_animated","_navigation","_CacheManager","_config","_IconifyAPI","_native","_bundle","_performance","_accessibility","_explorer","prefetchIcons","iconNames","CacheManager","prefetch","fetchIcon","clearCache","clear","clearNative","getCacheStats","getStats"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.createDevServerMiddleware = createDevServerMiddleware;
|
|
7
|
+
var fs = _interopRequireWildcard(require("fs"));
|
|
8
|
+
var path = _interopRequireWildcard(require("path"));
|
|
9
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
10
|
+
/**
|
|
11
|
+
* Metro Dev Server Middleware
|
|
12
|
+
* Handles runtime icon usage reporting from the app
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
const USAGE_ENDPOINT = '/__rn_iconify_log';
|
|
16
|
+
const STATUS_ENDPOINT = '/__rn_iconify_status';
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* Read the current usage file
|
|
20
|
+
*/
|
|
21
|
+
function readUsageFile(usagePath) {
|
|
22
|
+
try {
|
|
23
|
+
if (fs.existsSync(usagePath)) {
|
|
24
|
+
const content = fs.readFileSync(usagePath, 'utf-8');
|
|
25
|
+
const data = JSON.parse(content);
|
|
26
|
+
if (data.version === '1.0.0' && Array.isArray(data.icons)) {
|
|
27
|
+
return data;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
} catch {
|
|
31
|
+
// File corrupted or doesn't exist
|
|
32
|
+
}
|
|
33
|
+
return {
|
|
34
|
+
version: '1.0.0',
|
|
35
|
+
icons: [],
|
|
36
|
+
updatedAt: new Date().toISOString()
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Write usage file atomically (temp file + rename)
|
|
42
|
+
*/
|
|
43
|
+
function writeUsageFile(usagePath, data) {
|
|
44
|
+
const dir = path.dirname(usagePath);
|
|
45
|
+
if (!fs.existsSync(dir)) {
|
|
46
|
+
fs.mkdirSync(dir, {
|
|
47
|
+
recursive: true
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
const tmpPath = usagePath + '.tmp';
|
|
51
|
+
fs.writeFileSync(tmpPath, JSON.stringify(data, null, 2), 'utf-8');
|
|
52
|
+
fs.renameSync(tmpPath, usagePath);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Parse JSON body from request
|
|
57
|
+
*/
|
|
58
|
+
function parseBody(req) {
|
|
59
|
+
return new Promise((resolve, reject) => {
|
|
60
|
+
let body = '';
|
|
61
|
+
req.on('data', chunk => {
|
|
62
|
+
body += chunk.toString();
|
|
63
|
+
});
|
|
64
|
+
req.on('end', () => {
|
|
65
|
+
try {
|
|
66
|
+
resolve(JSON.parse(body));
|
|
67
|
+
} catch {
|
|
68
|
+
reject(new Error('Invalid JSON'));
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
req.on('error', reject);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Create the dev server middleware handler
|
|
77
|
+
*/
|
|
78
|
+
function createDevServerMiddleware(options = {}) {
|
|
79
|
+
const {
|
|
80
|
+
outputDir = '.rn-iconify',
|
|
81
|
+
verbose = false
|
|
82
|
+
} = options;
|
|
83
|
+
const projectRoot = process.cwd();
|
|
84
|
+
const usagePath = path.isAbsolute(outputDir) ? path.join(outputDir, 'usage.json') : path.join(projectRoot, outputDir, 'usage.json');
|
|
85
|
+
return async function handleRequest(req, res, next) {
|
|
86
|
+
const url = req.url;
|
|
87
|
+
|
|
88
|
+
// POST /__rn_iconify_log — report icon usage
|
|
89
|
+
if (req.method === 'POST' && url === USAGE_ENDPOINT) {
|
|
90
|
+
try {
|
|
91
|
+
const body = await parseBody(req);
|
|
92
|
+
const icon = body.icon;
|
|
93
|
+
if (typeof icon !== 'string' || !icon.includes(':')) {
|
|
94
|
+
res.writeHead(400, {
|
|
95
|
+
'Content-Type': 'application/json'
|
|
96
|
+
});
|
|
97
|
+
res.end(JSON.stringify({
|
|
98
|
+
error: 'Invalid icon name'
|
|
99
|
+
}));
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Read existing usage
|
|
104
|
+
const usage = readUsageFile(usagePath);
|
|
105
|
+
|
|
106
|
+
// Deduplicate
|
|
107
|
+
if (!usage.icons.includes(icon)) {
|
|
108
|
+
usage.icons.push(icon);
|
|
109
|
+
usage.updatedAt = new Date().toISOString();
|
|
110
|
+
writeUsageFile(usagePath, usage);
|
|
111
|
+
if (verbose) {
|
|
112
|
+
console.log(`[rn-iconify:metro] Learned icon: ${icon} (total: ${usage.icons.length})`);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
res.writeHead(200, {
|
|
116
|
+
'Content-Type': 'application/json'
|
|
117
|
+
});
|
|
118
|
+
res.end(JSON.stringify({
|
|
119
|
+
ok: true
|
|
120
|
+
}));
|
|
121
|
+
} catch (error) {
|
|
122
|
+
res.writeHead(500, {
|
|
123
|
+
'Content-Type': 'application/json'
|
|
124
|
+
});
|
|
125
|
+
res.end(JSON.stringify({
|
|
126
|
+
error: 'Internal error'
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
// GET /__rn_iconify_status — debug stats
|
|
133
|
+
if (req.method === 'GET' && url === STATUS_ENDPOINT) {
|
|
134
|
+
const usage = readUsageFile(usagePath);
|
|
135
|
+
res.writeHead(200, {
|
|
136
|
+
'Content-Type': 'application/json'
|
|
137
|
+
});
|
|
138
|
+
res.end(JSON.stringify({
|
|
139
|
+
iconCount: usage.icons.length,
|
|
140
|
+
icons: usage.icons,
|
|
141
|
+
updatedAt: usage.updatedAt
|
|
142
|
+
}));
|
|
143
|
+
return;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// Pass through to next middleware
|
|
147
|
+
next();
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=devServerMiddleware.js.map
|