diff --git a/cspell.config.yaml b/cspell.config.yaml index 89a0cb5a8..a55e84edb 100644 --- a/cspell.config.yaml +++ b/cspell.config.yaml @@ -32,6 +32,7 @@ words: - cubismusermodel - cubismviewmatrix - cuteen + - deepseek - defu - demi - dotenvx @@ -63,6 +64,7 @@ words: - live2dcubismcore - live2dcubismframework - Llmmarker + - lobehub - logg - Maru - micvad diff --git a/packages/iconify-json-lobe/build.config.ts b/packages/iconify-json-lobe/build.config.ts new file mode 100644 index 000000000..4a3bb17f9 --- /dev/null +++ b/packages/iconify-json-lobe/build.config.ts @@ -0,0 +1,72 @@ +import { writeFile } from 'node:fs/promises' +import { join } from 'node:path' +import { importDirectory } from '@iconify/tools' +import { getPackageInfo, isPackageExists } from 'local-pkg' +import { defineBuildConfig } from 'unbuild' + +import packageJSON from './package.json' + +export default defineBuildConfig({ + entries: [ + { builder: 'rollup', input: 'src/index.ts', outDir: 'dist', declaration: true }, + { builder: 'mkdist', input: './src', outDir: './dist', pattern: ['**/*.json'] }, + ], + externals: [ + './metadata.json', + './icons.json', + './chars.json', + './info.json', + ], + rollup: { + emitCJS: true, + }, + declaration: true, + sourcemap: false, + failOnWarn: false, + hooks: { + 'build:done': async () => { + if (!isPackageExists('@lobehub/icons-static-svg')) + throw new Error('Package @lobehub/icons-static-svg not found') + + const pkg = await getPackageInfo('@lobehub/icons-static-svg') + if (!pkg) + throw new Error('Package @lobehub/icons-static-svg not found') + + const iconSetData = await importDirectory(join(pkg.rootPath, 'icons'), { prefix: 'lobe-icons', ignoreImportErrors: 'warn' }) + const iconJSONData = iconSetData.export() + + await writeFile('./dist/metadata.json', JSON.stringify({ categories: iconSetData.categories }, null, 2), { encoding: 'utf8' }) + await writeFile('./dist/icons.json', JSON.stringify(iconJSONData, null, 2), { encoding: 'utf8' }) + await writeFile('./dist/chars.json', JSON.stringify({}, null, 2), { encoding: 'utf8' }) + await writeFile('./dist/info.json', JSON.stringify({ + prefix: 'lobe-icons', + name: 'Lobe Icons', + total: Object.keys(iconJSONData.icons).length, + version: packageJSON.version, + author: { + name: packageJSON.author.name, + url: packageJSON.author.url, + }, + license: { + title: 'MIT', + spdx: 'MIT', + }, + samples: [ + 'openai', + 'deepseek', + 'claude', + ], + height: 32, + displayHeight: 16, + category: 'Logos 16px / 32px', + tags: [ + 'AI', + 'Models', + 'LLM', + 'Lobe', + ], + palette: false, + }, null, 2), { encoding: 'utf8' }) + }, + }, +}) diff --git a/packages/iconify-json-lobe/package.json b/packages/iconify-json-lobe/package.json new file mode 100644 index 000000000..662f27640 --- /dev/null +++ b/packages/iconify-json-lobe/package.json @@ -0,0 +1,47 @@ +{ + "name": "@proj-airi/iconify-json-lobe", + "type": "module", + "version": "1.0.0", + "private": true, + "description": "", + "author": { + "name": "Neko Ayaka", + "email": "neko@ayaka.moe", + "url": "https://github.com/nekomeowww" + }, + "license": "MIT", + "repository": { + "type": "git", + "url": "https://github.com/moeru-ai/airi.git", + "directory": "packages/iconify-json-lobe" + }, + "exports": { + "./*": "./*", + ".": { + "types": "./dist/index.d.ts", + "import": "./dist/index.mjs", + "require": "./dist/index.cjs" + }, + "./icons.json": "./dist/icons.json", + "./info.json": "./dist/info.json", + "./metadata.json": "./dist/metadata.json" + }, + "main": "./dist/index.cjs", + "module": "./dist/index.mjs", + "types": "./dist/index.d.ts", + "files": [ + "README.md", + "dist", + "package.json" + ], + "scripts": { + "dev": "unbuild", + "stub": "unbuild", + "build": "unbuild" + }, + "devDependencies": { + "@iconify/tools": "^4.1.1", + "@lobehub/icons-static-svg": "^1.23.0", + "local-pkg": "^1.0.0" + } +} diff --git a/packages/iconify-json-lobe/src/index.ts b/packages/iconify-json-lobe/src/index.ts new file mode 100644 index 000000000..be0d5c518 --- /dev/null +++ b/packages/iconify-json-lobe/src/index.ts @@ -0,0 +1,15 @@ +// @ts-expect-error - This is a generated file +import chars from './chars.json' +// @ts-expect-error - This is a generated file +import icons from './icons.json' +// @ts-expect-error - This is a generated file +import info from './info.json' +// @ts-expect-error - This is a generated file +import metadata from './metadata.json' + +export { + chars, + icons, + info, + metadata, +} diff --git a/packages/iconify-json-lobe/tsconfig.json b/packages/iconify-json-lobe/tsconfig.json new file mode 100644 index 000000000..20ac4007e --- /dev/null +++ b/packages/iconify-json-lobe/tsconfig.json @@ -0,0 +1,22 @@ +{ + "compilerOptions": { + "target": "ESNext", + "lib": [ + "ESNext" + ], + "module": "ESNext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "types": [ + "vite/client" + ], + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "isolatedModules": true, + "verbatimModuleSyntax": true, + "skipLibCheck": true + }, + "include": [ + "src/**/*.ts" + ] +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index bcf6a00f4..aab23e7d2 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -132,6 +132,18 @@ importers: specifier: ^6.1.0 version: 6.1.0(@types/node@22.13.1)(jiti@2.4.2)(less@4.2.1)(terser@5.17.6)(tsx@4.19.2)(yaml@2.7.0) + packages/iconify-json-lobe: + devDependencies: + '@iconify/tools': + specifier: ^4.1.1 + version: 4.1.1 + '@lobehub/icons-static-svg': + specifier: ^1.23.0 + version: 1.23.0 + local-pkg: + specifier: ^1.0.0 + version: 1.0.0 + packages/memory-driver-duckdb: dependencies: '@date-fns/tz': @@ -2746,6 +2758,9 @@ packages: '@iconify-json/svg-spinners@1.2.2': resolution: {integrity: sha512-DIErwfBWWzLfmAG2oQnbUOSqZhDxlXvr8941itMCrxQoMB0Hiv8Ww6Bln/zIgxwjDvSem2dKJtap+yKKwsB/2A==} + '@iconify/tools@4.1.1': + resolution: {integrity: sha512-Hybu/HGhv6T8nLQhiG9rKx+ekF7NNpPOEQAy7JRSKht3s3dcFSsPccYzk24Znc9MTxrR6Gak3cg6CPP5dyvS2Q==} + '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} @@ -2955,6 +2970,9 @@ packages: '@jridgewell/trace-mapping@0.3.25': resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==} + '@lobehub/icons-static-svg@1.23.0': + resolution: {integrity: sha512-QKhRdjOdWjqOsiFbb5In0FjkEYGS8AeihzjuZVhDBFrzwHRfl8/nH4GY++rIRDA/0tv+5tw5g+eTRmc4VRrhIQ==} + '@malept/cross-spawn-promise@1.1.1': resolution: {integrity: sha512-RTBGWL5FWQcg9orDOCcp4LvItNzUPcyEU9bwaeJX0rJ1IQxzucC48Y0/sQLp/g6t99IQgAlGIaesJS+gTn7tVQ==} engines: {node: '>= 10'} @@ -4056,6 +4074,9 @@ packages: '@types/stats.js@0.17.3': resolution: {integrity: sha512-pXNfAD3KHOdif9EQXZ9deK82HVNaXP5ZIF5RP2QG6OQFNTaY2YIetfrE9t528vEreGQvEPRDDc8muaoYeK0SxQ==} + '@types/tar@6.1.13': + resolution: {integrity: sha512-IznnlmU5f4WcGTh2ltRu/Ijpmk8wiWXfF0VA4s+HPjHZgvFggk1YaIkbo5krX/zUCzWF8N/l4+W/LNxnvAJ8nw==} + '@types/three@0.173.0': resolution: {integrity: sha512-KtNjfI/CRB6JVKIVeZM1R3GYDX2wkoV2itNcQu2j4d7qkhjGOuB+s2oF6jl9mztycDLGMtrAnJQYxInC8Bb20A==} @@ -5010,6 +5031,9 @@ packages: axios@0.21.4: resolution: {integrity: sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==} + axios@1.7.9: + resolution: {integrity: sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==} + axobject-query@4.1.0: resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==} engines: {node: '>= 0.4'} @@ -5270,6 +5294,13 @@ packages: resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==} engines: {node: '>= 16'} + cheerio-select@2.1.0: + resolution: {integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==} + + cheerio@1.0.0: + resolution: {integrity: sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==} + engines: {node: '>=18.17'} + chokidar@3.6.0: resolution: {integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==} engines: {node: '>= 8.10.0'} @@ -6009,6 +6040,9 @@ packages: resolution: {integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==} engines: {node: '>= 0.8'} + encoding-sniffer@0.2.0: + resolution: {integrity: sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==} + encoding@0.1.13: resolution: {integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==} @@ -6980,6 +7014,9 @@ packages: htmlparser2@6.1.0: resolution: {integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==} + htmlparser2@9.1.0: + resolution: {integrity: sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==} + http-cache-semantics@4.1.1: resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} @@ -8008,6 +8045,10 @@ packages: resolution: {integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==} engines: {node: '>=8'} + minipass@4.2.8: + resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==} + engines: {node: '>=8'} + minipass@5.0.0: resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==} engines: {node: '>=8'} @@ -8449,6 +8490,12 @@ packages: resolution: {integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==} engines: {node: '>= 0.10'} + parse5-htmlparser2-tree-adapter@7.1.0: + resolution: {integrity: sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==} + + parse5-parser-stream@7.1.2: + resolution: {integrity: sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==} + parse5@7.1.2: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} @@ -9001,6 +9048,9 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} + proxy-from-env@1.1.0: + resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + prr@1.0.1: resolution: {integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==} @@ -11039,7 +11089,7 @@ snapshots: '@antfu/install-pkg@0.4.1': dependencies: - package-manager-detector: 0.2.8 + package-manager-detector: 0.2.9 tinyexec: 0.3.2 '@antfu/install-pkg@1.0.0': @@ -12665,6 +12715,23 @@ snapshots: dependencies: '@iconify/types': 2.0.0 + '@iconify/tools@4.1.1': + dependencies: + '@iconify/types': 2.0.0 + '@iconify/utils': 2.2.1 + '@types/tar': 6.1.13 + axios: 1.7.9 + cheerio: 1.0.0 + domhandler: 5.0.3 + extract-zip: 2.0.1 + local-pkg: 0.5.1 + pathe: 1.1.2 + svgo: 3.3.2 + tar: 6.2.1 + transitivePeerDependencies: + - debug + - supports-color + '@iconify/types@2.0.0': {} '@iconify/utils@2.2.1': @@ -12676,7 +12743,7 @@ snapshots: globals: 15.14.0 kolorist: 1.8.0 local-pkg: 0.5.1 - mlly: 1.7.3 + mlly: 1.7.4 transitivePeerDependencies: - supports-color @@ -12771,7 +12838,7 @@ snapshots: escodegen: 2.1.0 estree-walker: 2.0.2 jsonc-eslint-parser: 2.4.0 - mlly: 1.7.3 + mlly: 1.7.4 source-map-js: 1.2.1 yaml-eslint-parser: 1.2.3 optionalDependencies: @@ -12894,6 +12961,8 @@ snapshots: '@jridgewell/resolve-uri': 3.1.0 '@jridgewell/sourcemap-codec': 1.5.0 + '@lobehub/icons-static-svg@1.23.0': {} + '@malept/cross-spawn-promise@1.1.1': dependencies: cross-spawn: 7.0.6 @@ -14050,6 +14119,11 @@ snapshots: '@types/stats.js@0.17.3': {} + '@types/tar@6.1.13': + dependencies: + '@types/node': 22.13.1 + minipass: 4.2.8 + '@types/three@0.173.0': dependencies: '@tweenjs/tween.js': 23.1.3 @@ -15481,6 +15555,14 @@ snapshots: transitivePeerDependencies: - debug + axios@1.7.9: + dependencies: + follow-redirects: 1.15.9(debug@4.4.0) + form-data: 4.0.0 + proxy-from-env: 1.1.0 + transitivePeerDependencies: + - debug + axobject-query@4.1.0: {} b4a@1.6.7: {} @@ -15801,6 +15883,29 @@ snapshots: check-error@2.1.1: {} + cheerio-select@2.1.0: + dependencies: + boolbase: 1.0.0 + css-select: 5.1.0 + css-what: 6.1.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + + cheerio@1.0.0: + dependencies: + cheerio-select: 2.1.0 + dom-serializer: 2.0.0 + domhandler: 5.0.3 + domutils: 3.1.0 + encoding-sniffer: 0.2.0 + htmlparser2: 9.1.0 + parse5: 7.1.2 + parse5-htmlparser2-tree-adapter: 7.1.0 + parse5-parser-stream: 7.1.2 + undici: 6.19.8 + whatwg-mimetype: 4.0.0 + chokidar@3.6.0: dependencies: anymatch: 3.1.3 @@ -16493,6 +16598,11 @@ snapshots: encodeurl@2.0.0: {} + encoding-sniffer@0.2.0: + dependencies: + iconv-lite: 0.6.3 + whatwg-encoding: 3.1.1 + encoding@0.1.13: dependencies: iconv-lite: 0.6.3 @@ -17986,6 +18096,13 @@ snapshots: domutils: 2.8.0 entities: 2.2.0 + htmlparser2@9.1.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + domutils: 3.1.0 + entities: 4.5.0 + http-cache-semantics@4.1.1: {} http-errors@2.0.0: @@ -19386,6 +19503,8 @@ snapshots: dependencies: yallist: 4.0.0 + minipass@4.2.8: {} + minipass@5.0.0: {} minipass@7.1.2: {} @@ -19885,6 +20004,15 @@ snapshots: parse-node-version@1.0.1: optional: true + parse5-htmlparser2-tree-adapter@7.1.0: + dependencies: + domhandler: 5.0.3 + parse5: 7.1.2 + + parse5-parser-stream@7.1.2: + dependencies: + parse5: 7.1.2 + parse5@7.1.2: dependencies: entities: 4.5.0 @@ -20528,6 +20656,8 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 + proxy-from-env@1.1.0: {} + prr@1.0.1: optional: true @@ -22829,10 +22959,8 @@ snapshots: whatwg-encoding@3.1.1: dependencies: iconv-lite: 0.6.3 - optional: true - whatwg-mimetype@4.0.0: - optional: true + whatwg-mimetype@4.0.0: {} whatwg-url@14.0.0: dependencies: