mirror of
https://github.com/lucide-icons/lucide.git
synced 2026-11-11 13:28:19 +00:00
Compare commits
8
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4b203ec9b6 | ||
|
|
58c85b4758 | ||
|
|
b196797ede | ||
|
|
7ebbb6abc3 | ||
|
|
5beea9bf83 | ||
|
|
c06c5f0703 | ||
|
|
588113e359 | ||
|
|
08193b1ef5 |
@@ -12,6 +12,6 @@
|
||||
"@octokit/rest": "^22.0.1",
|
||||
"dotenv": "^17.4.2",
|
||||
"openai": "^7.9.0",
|
||||
"zod": "^4.5.4"
|
||||
"zod": "^4.6.7"
|
||||
}
|
||||
}
|
||||
|
||||
+3
-3
@@ -42,12 +42,12 @@
|
||||
"h3": "^1.15.11",
|
||||
"markdown-it": "^15.0.3",
|
||||
"markdown-it-container": "^4.0.0",
|
||||
"nitropack": "^2.13.4",
|
||||
"nitropack": "^2.13.5",
|
||||
"rollup-plugin-copy": "^3.5.0",
|
||||
"semver": "^7.8.5",
|
||||
"sharp": "^0.35.5",
|
||||
"shiki": "^4.4.3",
|
||||
"simple-git": "^4.0.1",
|
||||
"shiki": "^4.5.0",
|
||||
"simple-git": "^4.0.2",
|
||||
"sitemap": "^9.0.1",
|
||||
"svg-path-commander": "^2.3.3",
|
||||
"svg-pathdata": "^9.0.0",
|
||||
|
||||
@@ -19,9 +19,9 @@
|
||||
"@types/react": "19.3.0",
|
||||
"@types/react-dom": "19.3.0",
|
||||
"@vitejs/plugin-react": "^6.1.2",
|
||||
"@vitest/browser-playwright": "5.0.3",
|
||||
"@vitest/browser-playwright": "5.0.5",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3",
|
||||
"vite": "^8.3.5",
|
||||
"vitest": "5.0.5",
|
||||
"vitest-browser-react": "2.3.0"
|
||||
}
|
||||
|
||||
@@ -21,13 +21,13 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@react-router/dev": "8.3.1",
|
||||
"@types/node": "^26.1.1",
|
||||
"@types/node": "^26.4.1",
|
||||
"@types/react": "19.3.0",
|
||||
"@types/react-dom": "19.3.0",
|
||||
"@vitejs/plugin-react": "^6.1.2",
|
||||
"@vitest/browser-playwright": "5.0.3",
|
||||
"@vitest/browser-playwright": "5.0.5",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3",
|
||||
"vite": "^8.3.5",
|
||||
"vitest": "5.0.5",
|
||||
"vitest-browser-react": "2.3.0"
|
||||
}
|
||||
|
||||
@@ -20,9 +20,9 @@
|
||||
"@types/react": "19.3.0",
|
||||
"@types/react-dom": "19.3.0",
|
||||
"@vitejs/plugin-react": "^6.1.2",
|
||||
"@vitest/browser-playwright": "5.0.3",
|
||||
"@vitest/browser-playwright": "5.0.5",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3",
|
||||
"vite": "^8.3.5",
|
||||
"vitest": "5.0.5",
|
||||
"vitest-browser-react": "2.3.0"
|
||||
}
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
"react-dom": "19.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^26.1.1",
|
||||
"@types/node": "^26.4.1",
|
||||
"@types/react": "19.3.0",
|
||||
"@types/react-dom": "19.3.0",
|
||||
"@vitejs/plugin-react": "^6.1.2",
|
||||
"@vitest/browser-playwright": "5.0.3",
|
||||
"@vitest/browser-playwright": "5.0.5",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3",
|
||||
"vite": "^8.3.5",
|
||||
"vitest": "5.0.5",
|
||||
"vitest-browser-react": "2.3.0"
|
||||
}
|
||||
|
||||
@@ -18,10 +18,10 @@
|
||||
"@types/react": "19.3.0",
|
||||
"@types/react-dom": "19.3.0",
|
||||
"@vitejs/plugin-react": "^6.1.2",
|
||||
"@vitest/browser-playwright": "5.0.3",
|
||||
"@vitest/browser-playwright": "5.0.5",
|
||||
"playwright": "1.64.1",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3",
|
||||
"vite": "^8.3.5",
|
||||
"vitest": "5.0.5",
|
||||
"vitest-browser-react": "2.3.0"
|
||||
}
|
||||
|
||||
@@ -17,13 +17,13 @@
|
||||
"solid-js": "next"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@solidjs/testing-library": "1.0.0-beta.3",
|
||||
"@solidjs/testing-library": "1.0.0-rc.2",
|
||||
"@solidjs/vite-plugin": "3.0.0-next.47",
|
||||
"@vitest/browser-playwright": "5.0.3",
|
||||
"@vitest/browser-playwright": "5.0.5",
|
||||
"filesystem-routing": "0.4.0",
|
||||
"playwright": "1.64.1",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3",
|
||||
"vite": "^8.3.5",
|
||||
"vitest": "5.0.5"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
"@solidjs/start": "2.0.5",
|
||||
"lucide-solid": "workspace:*",
|
||||
"nitro": "3.0.260903-beta",
|
||||
"solid-js": "1.9.15"
|
||||
"solid-js": "1.9.18"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vitest/browser-playwright": "5.0.3",
|
||||
"@vitest/browser-playwright": "5.0.5",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3",
|
||||
"vite-plugin-solid": "^2.11.14",
|
||||
"vite": "^8.3.5",
|
||||
"vite-plugin-solid": "^2.11.15",
|
||||
"vitest": "5.0.5",
|
||||
"vitest-browser-solid": "1.0.1"
|
||||
},
|
||||
|
||||
@@ -11,14 +11,14 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"lucide-solid": "workspace:*",
|
||||
"solid-js": "1.9.15"
|
||||
"solid-js": "1.9.18"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vitest/browser-playwright": "5.0.3",
|
||||
"@vitest/browser-playwright": "5.0.5",
|
||||
"playwright": "1.64.1",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3",
|
||||
"vite-plugin-solid": "^2.11.14",
|
||||
"vite": "^8.3.5",
|
||||
"vite-plugin-solid": "^2.11.15",
|
||||
"vitest": "5.0.5",
|
||||
"vitest-browser-solid": "1.0.1"
|
||||
}
|
||||
|
||||
@@ -21,11 +21,11 @@
|
||||
"@sveltejs/adapter-auto": "^8.0.0",
|
||||
"@sveltejs/kit": "^3.1.1",
|
||||
"@sveltejs/vite-plugin-svelte": "^7.3.1",
|
||||
"@vitest/browser-playwright": "5.0.3",
|
||||
"@vitest/browser-playwright": "5.0.5",
|
||||
"playwright": "1.64.1",
|
||||
"svelte-check": "^4.7.7",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3",
|
||||
"vite": "^8.3.5",
|
||||
"vitest": "5.0.5",
|
||||
"vitest-browser-svelte": "3.1.0"
|
||||
}
|
||||
|
||||
@@ -16,12 +16,12 @@
|
||||
"devDependencies": {
|
||||
"@sveltejs/vite-plugin-svelte": "^7.3.1",
|
||||
"@tsconfig/svelte": "^5.0.8",
|
||||
"@types/node": "^26.1.1",
|
||||
"@vitest/browser-playwright": "5.0.3",
|
||||
"@types/node": "^26.4.1",
|
||||
"@vitest/browser-playwright": "5.0.5",
|
||||
"playwright": "1.64.1",
|
||||
"svelte-check": "^4.7.7",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3",
|
||||
"vite": "^8.3.5",
|
||||
"vitest": "5.0.5",
|
||||
"vitest-browser-svelte": "3.1.0"
|
||||
}
|
||||
|
||||
@@ -11,15 +11,15 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@lucide/vue": "workspace:*",
|
||||
"nuxt": "4.6.2",
|
||||
"nuxt": "4.6.3",
|
||||
"vue": "3.5.44",
|
||||
"vue-router": "5.3.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vitejs/plugin-vue": "^6.0.10",
|
||||
"@vitest/browser-playwright": "5.0.3",
|
||||
"@vitest/browser-playwright": "5.0.5",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3",
|
||||
"vite": "^8.3.5",
|
||||
"vitest": "5.0.5",
|
||||
"vitest-browser-vue": "3.1.0",
|
||||
"vue-tsc": "^3.3.11"
|
||||
|
||||
@@ -17,9 +17,9 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@vitejs/plugin-vue": "^6.0.10",
|
||||
"@vitest/browser-playwright": "5.0.3",
|
||||
"@vitest/browser-playwright": "5.0.5",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3",
|
||||
"vite": "^8.3.5",
|
||||
"vitest": "5.0.5",
|
||||
"vitest-browser-vue": "3.1.0",
|
||||
"vue-tsc": "^3.3.11"
|
||||
|
||||
@@ -15,13 +15,13 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tsconfig/node24": "^24.0.5",
|
||||
"@types/node": "^26.1.1",
|
||||
"@types/node": "^26.4.1",
|
||||
"@vitejs/plugin-vue": "^6.0.10",
|
||||
"@vitest/browser-playwright": "5.0.3",
|
||||
"@vitest/browser-playwright": "5.0.5",
|
||||
"@vue/tsconfig": "^0.9.1",
|
||||
"playwright": "1.64.1",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3",
|
||||
"vite": "^8.3.5",
|
||||
"vitest": "5.0.5",
|
||||
"vitest-browser-vue": "3.1.0",
|
||||
"vue-tsc": "^3.3.11"
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
{
|
||||
"$schema": "../icon.schema.json",
|
||||
"contributors": [
|
||||
"karsa-mistmere",
|
||||
"DrashtiC07"
|
||||
],
|
||||
"tags": [
|
||||
"drink",
|
||||
"tea",
|
||||
"boba",
|
||||
"bubble tea",
|
||||
"tapioca",
|
||||
"milk tea",
|
||||
"cafe",
|
||||
"straw",
|
||||
"pearls",
|
||||
"beverage",
|
||||
"cold drink"
|
||||
],
|
||||
"categories": [
|
||||
"food-beverage"
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="24"
|
||||
height="24"
|
||||
viewBox="0 0 24 24"
|
||||
fill="none"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
stroke-linecap="round"
|
||||
stroke-linejoin="round"
|
||||
>
|
||||
<path d="M11 14h.01" />
|
||||
<path d="M11 18h.01" />
|
||||
<path d="M14 16h.01" />
|
||||
<path d="m14 2-2 2.5" />
|
||||
<path d="M5 10h14" />
|
||||
<path d="m6 10 1.5 10.2a2 2 0 002 1.8h5a2 2 0 002-1.8L18 10" />
|
||||
<path d="M6.5 10a1 1 0 0111 0" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 439 B |
+2
-2
@@ -84,13 +84,13 @@
|
||||
"prettier": "3.9.6",
|
||||
"prettier-plugin-astro": "^0.14.1",
|
||||
"semver": "^7.8.5",
|
||||
"simple-git": "^4.0.1",
|
||||
"simple-git": "^4.0.2",
|
||||
"svgo": "^4.1.0",
|
||||
"svgson": "^5.3.1",
|
||||
"typescript": "^6.0.3",
|
||||
"typescript-eslint": "^8.69.0",
|
||||
"vitest": "5.0.5",
|
||||
"yargs": "^18.1.0"
|
||||
"yargs": "^18.2.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=24.11.1"
|
||||
|
||||
@@ -42,23 +42,23 @@
|
||||
]
|
||||
},
|
||||
"devDependencies": {
|
||||
"@angular-eslint/builder": "~22.5.0",
|
||||
"@angular-eslint/schematics": "~22.5.0",
|
||||
"@angular/build": "^22.2.2",
|
||||
"@angular/cli": "^22.2.2",
|
||||
"@angular/common": "^22.2.2",
|
||||
"@angular/compiler": "^22.2.2",
|
||||
"@angular/compiler-cli": "^22.2.2",
|
||||
"@angular/core": "^22.2.2",
|
||||
"@angular/forms": "^22.2.2",
|
||||
"@angular/platform-browser": "^22.2.2",
|
||||
"@angular/platform-server": "^22.2.2",
|
||||
"@angular/router": "^22.2.2",
|
||||
"@angular-eslint/builder": "~22.6.0",
|
||||
"@angular-eslint/schematics": "~22.6.0",
|
||||
"@angular/build": "^22.2.5",
|
||||
"@angular/cli": "^22.2.5",
|
||||
"@angular/common": "^22.2.4",
|
||||
"@angular/compiler": "^22.2.4",
|
||||
"@angular/compiler-cli": "^22.2.4",
|
||||
"@angular/core": "^22.2.4",
|
||||
"@angular/forms": "^22.2.4",
|
||||
"@angular/platform-browser": "^22.2.4",
|
||||
"@angular/platform-server": "^22.2.4",
|
||||
"@angular/router": "^22.2.4",
|
||||
"@lucide/build-icons": "workspace:*",
|
||||
"@lucide/helpers": "workspace:*",
|
||||
"@vitest/browser-playwright": "^5.0.3",
|
||||
"angular-eslint": "22.5.0",
|
||||
"ng-packagr": "^22.2.4",
|
||||
"@vitest/browser-playwright": "^5.0.5",
|
||||
"angular-eslint": "22.6.0",
|
||||
"ng-packagr": "^22.2.5",
|
||||
"rxjs": "~7.8.2",
|
||||
"tslib": "^2.8.1",
|
||||
"typescript": "^6.0.3"
|
||||
|
||||
@@ -66,11 +66,11 @@
|
||||
"@rollup/plugin-replace": "^6.0.3",
|
||||
"@testing-library/jest-dom": "^7.0.1",
|
||||
"jest-serializer-html": "^7.1.0",
|
||||
"rollup": "^4.65.0",
|
||||
"rollup": "^4.65.1",
|
||||
"rollup-plugin-dts": "^6.5.1",
|
||||
"rollup-plugin-preserve-directives": "^0.4.0",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3",
|
||||
"vite": "^8.3.5",
|
||||
"vitest": "5.0.5"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
"@lucide/rollup-plugins": "workspace:*",
|
||||
"@types/node": "^26.4.1",
|
||||
"prettier": "3.9.6",
|
||||
"rollup": "^4.65.0",
|
||||
"rollup": "^4.65.1",
|
||||
"rollup-plugin-dts": "^6.5.1",
|
||||
"svgson": "^5.3.1",
|
||||
"typescript": "^6.0.3"
|
||||
|
||||
@@ -56,10 +56,10 @@
|
||||
"@testing-library/preact": "^3.2.6",
|
||||
"jest-serializer-html": "^7.1.0",
|
||||
"preact": "^11.1.0",
|
||||
"rollup": "^4.65.0",
|
||||
"rollup": "^4.65.1",
|
||||
"rollup-plugin-dts": "^6.5.1",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3"
|
||||
"vite": "^8.3.5"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"preact": "^10.27.2 || ^11.0.0-0"
|
||||
|
||||
@@ -77,12 +77,12 @@
|
||||
"jest-serializer-html": "^7.1.0",
|
||||
"react": "19.3.1",
|
||||
"react-dom": "19.3.1",
|
||||
"react-native": "^0.88.0",
|
||||
"react-native": "^0.88.1",
|
||||
"react-native-svg": "^15.16.0",
|
||||
"rollup": "^4.65.0",
|
||||
"rollup": "^4.65.1",
|
||||
"rollup-plugin-dts": "^6.5.1",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3"
|
||||
"vite": "^8.3.5"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/react": "*",
|
||||
|
||||
@@ -108,17 +108,17 @@
|
||||
"@lucide/shared": "workspace:*",
|
||||
"@testing-library/jest-dom": "^7.0.1",
|
||||
"@testing-library/react": "^16.3.3",
|
||||
"@types/node": "^25.9.1",
|
||||
"@types/node": "^25.9.5",
|
||||
"@types/react": "^19.3.0",
|
||||
"@vitejs/plugin-react": "^6.1.2",
|
||||
"jest-serializer-html": "^7.1.0",
|
||||
"react": "19.3.1",
|
||||
"react-dom": "19.3.1",
|
||||
"rollup": "^4.65.0",
|
||||
"rollup": "^4.65.1",
|
||||
"rollup-plugin-dts": "^6.5.1",
|
||||
"rollup-plugin-preserve-directives": "^0.4.0",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3"
|
||||
"vite": "^8.3.5"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"@types/react": "*",
|
||||
|
||||
@@ -0,0 +1,59 @@
|
||||
// @vitest-environment node
|
||||
|
||||
import { afterEach, expect, it } from 'vitest';
|
||||
import { spawnSync } from 'node:child_process';
|
||||
import { mkdtempSync, mkdirSync, readFileSync, rmSync, writeFileSync } from 'node:fs';
|
||||
import { tmpdir } from 'node:os';
|
||||
import path from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
const fixtureDirectories: string[] = [];
|
||||
|
||||
afterEach(() => {
|
||||
fixtureDirectories.splice(0).forEach((directory) => {
|
||||
rmSync(directory, { recursive: true, force: true });
|
||||
});
|
||||
});
|
||||
|
||||
it('builds icons with templates and metadata in paths containing URL characters', () => {
|
||||
const directory = mkdtempSync(path.join(tmpdir(), 'lucide-build-icons #%-'));
|
||||
fixtureDirectories.push(directory);
|
||||
const input = path.join(directory, 'input');
|
||||
const output = path.join(directory, 'output');
|
||||
const template = path.join(directory, 'template.mjs');
|
||||
mkdirSync(input);
|
||||
writeFileSync(
|
||||
path.join(input, 'sample.svg'),
|
||||
'<svg xmlns="http://www.w3.org/2000/svg"><path d="M1 1h2" /></svg>',
|
||||
);
|
||||
writeFileSync(path.join(input, 'sample.json'), JSON.stringify({ aliases: ['sample-alias'] }));
|
||||
writeFileSync(
|
||||
template,
|
||||
'export default ({ iconData }) => "export default " + JSON.stringify(iconData);',
|
||||
);
|
||||
|
||||
const cli = fileURLToPath(new URL('../../../tools/build-icons/cli.ts', import.meta.url));
|
||||
const result = spawnSync(
|
||||
process.execPath,
|
||||
[
|
||||
cli,
|
||||
`--input=${input}`,
|
||||
`--output=${output}`,
|
||||
`--templateSrc=${template}`,
|
||||
'--pretty=false',
|
||||
'--silent',
|
||||
],
|
||||
{ encoding: 'utf8', timeout: 30_000 },
|
||||
);
|
||||
|
||||
expect(result.error).toBeUndefined();
|
||||
expect(result.status, result.stderr).toBe(0);
|
||||
expect(result.stderr).toBe('');
|
||||
const generatedIcon = readFileSync(path.join(output, 'icons', 'sample.js'), 'utf8');
|
||||
expect(JSON.parse(generatedIcon.replace(/^export default /, ''))).toMatchObject({
|
||||
name: 'sample',
|
||||
aliases: ['sample-alias'],
|
||||
node: [['path', { d: 'M1 1h2' }]],
|
||||
});
|
||||
expect(readFileSync(path.join(output, 'icons', 'index.js'), 'utf8')).toContain('sample');
|
||||
});
|
||||
@@ -68,24 +68,24 @@
|
||||
"test:watch": "vitest watch"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.29.7",
|
||||
"@babel/preset-env": "^7.29.7",
|
||||
"@babel/preset-typescript": "^7.29.7",
|
||||
"@babel/core": "^8.0.10",
|
||||
"@babel/preset-env": "^8.0.7",
|
||||
"@babel/preset-typescript": "^8.0.7",
|
||||
"@lucide/build-icons": "workspace:*",
|
||||
"@lucide/rollup-plugins": "workspace:*",
|
||||
"@lucide/shared": "workspace:*",
|
||||
"@rollup/plugin-babel": "^6.1.0",
|
||||
"@rollup/plugin-babel": "^7.1.0",
|
||||
"@solidjs/testing-library": "^0.8.10",
|
||||
"@testing-library/jest-dom": "^7.0.1",
|
||||
"babel-preset-solid": "^1.9.15",
|
||||
"esbuild": "^0.28.2",
|
||||
"jest-serializer-html": "^7.1.0",
|
||||
"rollup": "^4.65.1",
|
||||
"rollup-plugin-dts": "^6.5.1",
|
||||
"rollup": "^4.65.0",
|
||||
"solid-js": "^1.9.15",
|
||||
"solid-js": "^1.9.18",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3",
|
||||
"vite-plugin-solid": "^2.11.14"
|
||||
"vite": "^8.3.5",
|
||||
"vite-plugin-solid": "^2.11.15"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"solid-js": "^1.4.7"
|
||||
|
||||
@@ -43,8 +43,11 @@ const configs = bundles
|
||||
presets: [
|
||||
'babel-preset-solid',
|
||||
'@babel/preset-typescript',
|
||||
['@babel/preset-env', { bugfixes: true, targets: 'last 2 years' }],
|
||||
['@babel/preset-env', { targets: 'last 2 years' }],
|
||||
],
|
||||
// Babel 8's @babel/preset-typescript no longer enables JSX parsing for .tsx files,
|
||||
// and babel-preset-solid's Babel 7 JSX syntax plugin skips it when TypeScript is enabled.
|
||||
overrides: [{ test: /\.[jt]sx$/, parserOpts: { plugins: ['jsx'] } }],
|
||||
}),
|
||||
...plugins({
|
||||
pkg,
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
"@lucide/rollup-plugins": "workspace:*",
|
||||
"@types/node": "^26.4.1",
|
||||
"prettier": "3.9.6",
|
||||
"rollup": "^4.65.0",
|
||||
"rollup": "^4.65.1",
|
||||
"rollup-plugin-dts": "^6.5.1",
|
||||
"svgson": "^5.3.1"
|
||||
}
|
||||
|
||||
@@ -48,11 +48,11 @@
|
||||
"@lucide/shared": "workspace:*",
|
||||
"@rollup/plugin-replace": "^6.0.3",
|
||||
"@testing-library/jest-dom": "^7.0.1",
|
||||
"@types/node": "^25.9.1",
|
||||
"@types/node": "^25.9.5",
|
||||
"jest-serializer-html": "^7.1.0",
|
||||
"rollup": "^4.65.0",
|
||||
"rollup": "^4.65.1",
|
||||
"rollup-plugin-dts": "^6.5.1",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3"
|
||||
"vite": "^8.3.5"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,6 @@
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^26.4.1",
|
||||
"vite": "^8.3.3"
|
||||
"vite": "^8.3.5"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -68,13 +68,13 @@
|
||||
"test:watch": "vitest watch"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "^7.29.7",
|
||||
"@babel/preset-env": "^7.29.7",
|
||||
"@babel/preset-typescript": "^7.29.7",
|
||||
"@babel/core": "^8.0.10",
|
||||
"@babel/preset-env": "^8.0.7",
|
||||
"@babel/preset-typescript": "^8.0.7",
|
||||
"@lucide/build-icons": "workspace:*",
|
||||
"@lucide/rollup-plugins": "workspace:*",
|
||||
"@lucide/shared": "workspace:*",
|
||||
"@rollup/plugin-babel": "^6.1.0",
|
||||
"@rollup/plugin-babel": "^7.1.0",
|
||||
"@solidjs/testing-library": "next",
|
||||
"@solidjs/vite-plugin": "next",
|
||||
"@solidjs/web": "next",
|
||||
@@ -82,11 +82,11 @@
|
||||
"babel-preset-solid": "next",
|
||||
"esbuild": "^0.28.2",
|
||||
"jest-serializer-html": "^7.1.0",
|
||||
"rollup": "^4.65.1",
|
||||
"rollup-plugin-dts": "^6.5.1",
|
||||
"rollup": "^4.65.0",
|
||||
"solid-js": "next",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3"
|
||||
"vite": "^8.3.5"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"solid-js": "^2.0.0-rc.0"
|
||||
|
||||
@@ -43,8 +43,11 @@ const configs = bundles
|
||||
presets: [
|
||||
'babel-preset-solid',
|
||||
'@babel/preset-typescript',
|
||||
['@babel/preset-env', { bugfixes: true, targets: 'last 2 years' }],
|
||||
['@babel/preset-env', { targets: 'last 2 years' }],
|
||||
],
|
||||
// Babel 8's @babel/preset-typescript no longer enables JSX parsing for .tsx files,
|
||||
// and babel-preset-solid's Babel 7 JSX syntax plugin skips it when TypeScript is enabled.
|
||||
overrides: [{ test: /\.[jt]sx$/, parserOpts: { plugins: ['jsx'] } }],
|
||||
}),
|
||||
...plugins({
|
||||
pkg,
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
"svelte-check": "^4.7.7",
|
||||
"svelte-preprocess": "^6.0.5",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3"
|
||||
"vite": "^8.3.5"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"svelte": "^5"
|
||||
|
||||
@@ -48,10 +48,10 @@
|
||||
"@testing-library/vue": "^8.1.0",
|
||||
"@vitejs/plugin-vue": "^6.0.10",
|
||||
"@vue/test-utils": "2.5.1",
|
||||
"rollup": "^4.65.0",
|
||||
"rollup": "^4.65.1",
|
||||
"rollup-plugin-dts": "^6.5.1",
|
||||
"typescript": "^6.0.3",
|
||||
"vite": "^8.3.3",
|
||||
"vite": "^8.3.5",
|
||||
"vue": "^3.5.44"
|
||||
},
|
||||
"peerDependencies": {
|
||||
|
||||
Generated
+2307
-2886
File diff suppressed because it is too large
Load Diff
+9
-3
@@ -12,10 +12,16 @@ overrides:
|
||||
semver: ^7.7.3
|
||||
vite-prerender-plugin: 0.5.12
|
||||
webpack-dev-middleware: ^5.3.4
|
||||
vitest: '5.0.3'
|
||||
vitest: '5.0.5'
|
||||
vite: '^8.3.3'
|
||||
minimatch@>=9.0.0 <9.0.6: ^9.0.6
|
||||
minimatch@>=9.0.0 <9.0.7: ^9.0.7
|
||||
zod@<4.6.6: ^4.6.6
|
||||
brace-expansion@<1.1.21: ^1.1.21
|
||||
decode-uri-component@<=0.5.0: ^0.5.1
|
||||
deepmerge@>=4.2.0 <=4.3.1: ^4.3.1
|
||||
file-type@>=13.0.0 <21.3.1: ^21.3.1
|
||||
'@jimp/core>file-type': ^16.5.4
|
||||
glob@>=9.0.0 <=14.0.1: ^14.0.2
|
||||
hono@>=4.12.4 <4.13.11: ^4.13.11
|
||||
|
||||
allowBuilds:
|
||||
'@parcel/watcher': false
|
||||
|
||||
@@ -5,6 +5,9 @@
|
||||
"description": "A internal used package with helpers.",
|
||||
"main": "helpers.ts",
|
||||
"types": "helpers.ts",
|
||||
"scripts": {
|
||||
"test": "vitest run"
|
||||
},
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"type": "module",
|
||||
|
||||
@@ -0,0 +1,42 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { toCamelCase } from './toCamelCase.ts';
|
||||
|
||||
describe('toCamelCase', () => {
|
||||
it('converts kebab-case icon names', () => {
|
||||
expect(toCamelCase('arrow-up')).toBe('arrowUp');
|
||||
expect(toCamelCase('circle-arrow-out-down-left')).toBe('circleArrowOutDownLeft');
|
||||
expect(toCamelCase('arrow-up-0-1')).toBe('arrowUp01');
|
||||
});
|
||||
|
||||
it('treats whitespace, hyphens and underscores as separators', () => {
|
||||
expect(toCamelCase('foo_bar')).toBe('fooBar');
|
||||
expect(toCamelCase('foo bar')).toBe('fooBar');
|
||||
expect(toCamelCase('foo\tbar')).toBe('fooBar');
|
||||
expect(toCamelCase('foo - _\tbar')).toBe('fooBar');
|
||||
expect(toCamelCase('-foo')).toBe('Foo');
|
||||
});
|
||||
|
||||
it('lowercases only a leading capital letter', () => {
|
||||
expect(toCamelCase('Foo-bar')).toBe('fooBar');
|
||||
expect(toCamelCase('FooBar')).toBe('fooBar');
|
||||
expect(toCamelCase('alreadyCamelCase')).toBe('alreadyCamelCase');
|
||||
});
|
||||
|
||||
it('keeps separators that are not followed by a word character', () => {
|
||||
expect(toCamelCase('foo-')).toBe('foo-');
|
||||
expect(toCamelCase('foo__')).toBe('foo__');
|
||||
expect(toCamelCase('foo\t!')).toBe('foo\t!');
|
||||
expect(toCamelCase('')).toBe('');
|
||||
});
|
||||
|
||||
it('handles long runs of tabs in linear time', () => {
|
||||
const input = `a${'\t'.repeat(100_000)}!`;
|
||||
|
||||
const start = performance.now();
|
||||
const result = toCamelCase(input);
|
||||
const duration = performance.now() - start;
|
||||
|
||||
expect(result).toBe(input);
|
||||
expect(duration).toBeLessThan(100);
|
||||
});
|
||||
});
|
||||
@@ -5,6 +5,6 @@
|
||||
* @returns {string} A camelized string
|
||||
*/
|
||||
export const toCamelCase = (string: string): string =>
|
||||
string.replace(/^([A-Z])|[\s-_]+(\w)/g, (match, p1, p2) =>
|
||||
p2 ? p2.toUpperCase() : p1.toLowerCase(),
|
||||
string.replace(/^([A-Z])|[\s-_]+(\w)?/g, (match, p1, p2) =>
|
||||
p1 ? p1.toLowerCase() : p2 ? p2.toUpperCase() : match,
|
||||
);
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"@rollup/plugin-node-resolve": "^16.0.3",
|
||||
"@rollup/plugin-replace": "^6.0.3",
|
||||
"esbuild": "^0.28.2",
|
||||
"rollup": "^4.65.0",
|
||||
"rollup": "^4.65.1",
|
||||
"rollup-plugin-esbuild": "^6.2.1",
|
||||
"rollup-plugin-license": "^3.7.1",
|
||||
"rollup-plugin-summary": "^3.0.1",
|
||||
|
||||
Reference in New Issue
Block a user