mirror of
https://github.com/lucide-icons/lucide.git
synced 2025-12-14 20:27:42 +01:00
chore(scripts): Refactor scripts to typescript (#3316)
* Adjust typescript types * adjust types * fix types in all helper files * Fix types * Migrate js files to ts files * Refactor to TS files * Rename extentions * Adjust imports * Fix builds * Update lockfile * Fix last typescript migration * Fix entry path @lucide/outline-svg * Fix types * add checkout step * format files * Format files
This commit is contained in:
1
.github/workflows/labeler.yml
vendored
1
.github/workflows/labeler.yml
vendored
@@ -9,4 +9,5 @@ jobs:
|
||||
pull-requests: write
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: actions/labeler@v5
|
||||
|
||||
2
.github/workflows/linting-icons.yml
vendored
2
.github/workflows/linting-icons.yml
vendored
@@ -21,7 +21,7 @@ jobs:
|
||||
files: icons/*
|
||||
|
||||
- name: Generate annotations
|
||||
run: node ./scripts/lintFilenames.mjs
|
||||
run: node ./scripts/lintFilenames.mts
|
||||
env:
|
||||
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||
|
||||
|
||||
4
.github/workflows/lucide-astro.yml
vendored
4
.github/workflows/lucide-astro.yml
vendored
@@ -16,7 +16,7 @@ jobs:
|
||||
- uses: pnpm/action-setup@v2
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 18
|
||||
node-version-file: 'package.json'
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
@@ -32,7 +32,7 @@ jobs:
|
||||
- uses: pnpm/action-setup@v2
|
||||
- uses: actions/setup-node@v3.8.1
|
||||
with:
|
||||
node-version: 18
|
||||
node-version-file: 'package.json'
|
||||
cache: 'pnpm'
|
||||
|
||||
- name: Install dependencies
|
||||
|
||||
@@ -32,7 +32,7 @@ jobs:
|
||||
echo ${{ github.event.number }} > ./pr/NR
|
||||
|
||||
- name: Generate comment markup
|
||||
run: node ./scripts/generateChangedIconsCommentMarkup.mjs >> ./pr/comment-markup.md
|
||||
run: node ./scripts/generateChangedIconsCommentMarkup.mts >> ./pr/comment-markup.md
|
||||
id: comment-markup
|
||||
env:
|
||||
CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }}
|
||||
|
||||
0
lucide-font/lucide.svg
Normal file
0
lucide-font/lucide.svg
Normal file
22
package.json
22
package.json
@@ -17,16 +17,12 @@
|
||||
"lucide-static": "pnpm --filter lucide-static",
|
||||
"build:outline-icons": "pnpm --filter outline-svg start",
|
||||
"build:font": "pnpm --filter docs prebuild:releaseJson && pnpm --filter build-font start",
|
||||
"optimize": "node ./scripts/optimizeSvgs.mjs",
|
||||
"addjsons": "node scripts/addMissingIconJsonFiles.mjs",
|
||||
"checkIcons": "node scripts/checkIconsAndCategories.mjs",
|
||||
"tags2icons": "node scripts/migrateTagsToIcons.mjs",
|
||||
"icons2tags": "node scripts/migrateIconsToTags.mjs",
|
||||
"icons2categories": "node scripts/migrateIconsToCategories.mjs",
|
||||
"categories2icons": "node scripts/migrateCategoriesToIcons.mjs",
|
||||
"generate:changelog": "node ./scripts/generateChangelog.mjs",
|
||||
"generate:contributors": "node ./scripts/updateContributors.mjs icons/*.svg",
|
||||
"generate:nextJSAliases": "node ./scripts/generateNextJSAliases.mjs",
|
||||
"optimize": "node ./scripts/optimizeSvgs.mts",
|
||||
"addjsons": "node ./scripts/addMissingIconJsonFiles.mts",
|
||||
"checkIcons": "node ./scripts/checkIconsAndCategories.mts",
|
||||
"generate:changelog": "node ./scripts/generateChangelog.mts",
|
||||
"generate:contributors": "node ./scripts/updateContributors.mts icons/*.svg",
|
||||
"generate:nextJSAliases": "node ./scripts/generateNextJSAliases.mts",
|
||||
"postinstall": "husky install",
|
||||
"lint:es": "eslint .",
|
||||
"lint:format": "prettier \"**/*.{js,mjs,ts,jsx,tsx,html,css,scss,json,yml,yaml}\" --check",
|
||||
@@ -37,9 +33,9 @@
|
||||
"lint": "pnpm lint:es && pnpm lint:format && pnpm lint:json",
|
||||
"format": "prettier \"**/*.{js,mjs,ts,jsx,tsx,html,css,scss,json,yml,yaml}\" --write",
|
||||
"prepare": "husky install",
|
||||
"gi": "node ./scripts/generate/generateIcons.mjs",
|
||||
"rename": "node scripts/rename/renameIcon.mjs",
|
||||
"renamePattern": "node scripts/rename/renamePattern.mjs"
|
||||
"gi": "node ./scripts/generate/generateIcons.mts",
|
||||
"rename": "node ./scripts/rename/renameIcon.mts",
|
||||
"renamePattern": "node ./scripts/rename/renamePattern.mts"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@html-eslint/eslint-plugin": "^0.19.1",
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
},
|
||||
"scripts": {
|
||||
"build": "pnpm clean && pnpm copy:license && pnpm build:icons",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --withAliases --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=index.ts --pretty=false",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --renderUniqueKey --withAliases --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=index.ts --pretty=false",
|
||||
"clean": "rm -rf dist && rm -rf stats && rm -rf ./src/icons/*.ts",
|
||||
"copy:license": "cp ../../LICENSE ./LICENSE",
|
||||
"test": "pnpm build:icons && vitest run",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG.mjs';
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG';
|
||||
import defineExportTemplate from '@lucide/build-icons/utils/defineExportTemplate';
|
||||
|
||||
export default async ({
|
||||
export default defineExportTemplate(async ({
|
||||
componentName,
|
||||
iconName,
|
||||
children,
|
||||
@@ -39,4 +39,4 @@ const ${componentName} = createLucideIcon('${iconName}', ${JSON.stringify(keyles
|
||||
|
||||
export default ${componentName};
|
||||
`;
|
||||
};
|
||||
});
|
||||
@@ -29,7 +29,7 @@
|
||||
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:ng",
|
||||
"copy:license": "cp ../../LICENSE ./LICENSE",
|
||||
"clean": "rm -rf dist && rm -rf ./src/icons/*.ts",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --withAliases --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=lucide-icons.ts",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --renderUniqueKey --withAliases --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=lucide-icons.ts",
|
||||
"build:ng": "ng build --configuration production",
|
||||
"test": "ng test --no-watch --no-progress --browsers=ChromeHeadlessCI",
|
||||
"test:watch": "ng test",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG.mjs';
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG';
|
||||
import defineExportTemplate from '@lucide/build-icons/utils/defineExportTemplate';
|
||||
|
||||
export default async ({
|
||||
export default defineExportTemplate(async ({
|
||||
componentName,
|
||||
iconName,
|
||||
children,
|
||||
@@ -30,4 +30,4 @@ const ${componentName}: LucideIconData = ${JSON.stringify(children)}; //eslint-d
|
||||
|
||||
export default ${componentName};
|
||||
`;
|
||||
};
|
||||
});
|
||||
@@ -36,7 +36,7 @@
|
||||
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:bundles",
|
||||
"copy:license": "cp ../../LICENSE ./LICENSE",
|
||||
"clean": "rm -rf dist && rm -rf stats && rm -rf ./src/icons/*.js",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --withAliases --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=index.ts",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --renderUniqueKey --withAliases --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=index.ts",
|
||||
"build:bundles": "rollup -c ./rollup.config.mjs",
|
||||
"test": "pnpm build:icons && vitest run",
|
||||
"version": "pnpm version --git-tag-version=false"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG.mjs';
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG';
|
||||
import defineExportTemplate from '@lucide/build-icons/utils/defineExportTemplate';
|
||||
|
||||
export default async ({
|
||||
export default defineExportTemplate(async ({
|
||||
componentName,
|
||||
iconName,
|
||||
children,
|
||||
@@ -30,4 +30,4 @@ const ${componentName} = createLucideIcon('${iconName}', ${JSON.stringify(childr
|
||||
|
||||
export default ${componentName};
|
||||
`;
|
||||
};
|
||||
});
|
||||
@@ -37,7 +37,7 @@
|
||||
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:bundles",
|
||||
"copy:license": "cp ../../LICENSE ./LICENSE",
|
||||
"clean": "rm -rf dist && rm -rf stats && rm -rf ./src/icons/*.ts",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --iconFileExtension=.ts --exportFileName=index.ts --withAliases --aliasesFileExtension=.ts",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --renderUniqueKey --iconFileExtension=.ts --exportFileName=index.ts --withAliases --aliasesFileExtension=.ts",
|
||||
"build:bundles": "rollup -c ./rollup.config.mjs",
|
||||
"test": "pnpm build:icons && vitest run",
|
||||
"version": "pnpm version --git-tag-version=false"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG.mjs';
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG';
|
||||
import defineExportTemplate from '@lucide/build-icons/utils/defineExportTemplate';
|
||||
|
||||
export default async ({
|
||||
export default defineExportTemplate(async ({
|
||||
componentName,
|
||||
iconName,
|
||||
children,
|
||||
@@ -30,4 +30,4 @@ const ${componentName} = createLucideIcon('${componentName}', ${JSON.stringify(c
|
||||
|
||||
export default ${componentName};
|
||||
`;
|
||||
};
|
||||
});
|
||||
@@ -42,7 +42,7 @@
|
||||
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm typecheck && pnpm build:bundles",
|
||||
"copy:license": "cp ../../LICENSE ./LICENSE",
|
||||
"clean": "rm -rf dist && rm -rf stats && rm -rf ./src/icons/*.ts && rm -f dynamic.* && rm -f dynamicIconImports.d.ts",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --withAliases --withDynamicImports --separateAliasesFile --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=index.ts",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --renderUniqueKey --withAliases --withDynamicImports --separateAliasesFile --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=index.ts",
|
||||
"build:bundles": "rollup -c ./rollup.config.mjs",
|
||||
"typecheck": "tsc",
|
||||
"typecheck:watch": "tsc -w",
|
||||
|
||||
@@ -2,7 +2,7 @@ import plugins from '@lucide/rollup-plugins';
|
||||
import preserveDirectives from 'rollup-plugin-preserve-directives';
|
||||
import pkg from './package.json' with { type: 'json' };
|
||||
import dts from 'rollup-plugin-dts';
|
||||
import getAliasesEntryNames from './scripts/getAliasesEntryNames.mjs';
|
||||
import getAliasesEntryNames from './scripts/getAliasesEntryNames.mts';
|
||||
|
||||
const aliasesEntries = await getAliasesEntryNames();
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG.mjs';
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG';
|
||||
import defineExportTemplate from '@lucide/build-icons/utils/defineExportTemplate';
|
||||
|
||||
export default async ({
|
||||
export default defineExportTemplate(async({
|
||||
componentName,
|
||||
iconName,
|
||||
children,
|
||||
@@ -33,4 +33,4 @@ const ${componentName} = createLucideIcon('${iconName}', __iconNode);
|
||||
|
||||
export default ${componentName};
|
||||
`;
|
||||
};
|
||||
});
|
||||
@@ -1,6 +1,5 @@
|
||||
import path from 'path';
|
||||
// eslint-disable-next-line import/no-extraneous-dependencies
|
||||
import getIconMetaData from '@lucide/build-icons/utils/getIconMetaData.mjs';
|
||||
import getIconMetaData from '@lucide/build-icons/utils/getIconMetaData';
|
||||
|
||||
const ICONS_DIR = path.resolve(process.cwd(), '../../icons');
|
||||
|
||||
@@ -12,6 +11,6 @@ export default async function getAliasesEntryNames() {
|
||||
const aliases = iconWithAliases.flatMap(({ aliases }) => aliases);
|
||||
|
||||
return aliases
|
||||
.map((alias) => (typeof alias === 'string' ? alias : alias.name))
|
||||
.map((alias) => (typeof alias === 'string' ? alias : alias?.name))
|
||||
.map((alias) => path.join('src/icons', `${alias}.ts`));
|
||||
}
|
||||
@@ -14,6 +14,7 @@
|
||||
"skipLibCheck": true,
|
||||
"resolveJsonModule": true,
|
||||
"allowSyntheticDefaultImports": true,
|
||||
"allowImportingTsExtensions": true,
|
||||
"downlevelIteration": true,
|
||||
"sourceMap": true,
|
||||
"outDir": "./dist",
|
||||
@@ -21,4 +22,5 @@
|
||||
"types": ["@testing-library/jest-dom"],
|
||||
},
|
||||
"exclude": ["**/node_modules"],
|
||||
"include": ["src"],
|
||||
}
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
"build:transpile": "tsc --jsx preserve -t es2020 --rootDir src --outDir dist --noEmit false",
|
||||
"build:version": "node ./scripts/replaceVersion.mjs",
|
||||
"build:bundle": "rollup -c rollup.config.mjs",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --withAliases --separateAliasesFile --aliasesFileExtension=.ts --iconFileExtension=.tsx --exportFileName=index.ts",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --renderUniqueKey --withAliases --separateAliasesFile --aliasesFileExtension=.ts --iconFileExtension=.tsx --exportFileName=index.ts",
|
||||
"test": "pnpm build:icons && vitest run",
|
||||
"version": "pnpm version --git-tag-version=false"
|
||||
},
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG.mjs';
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG';
|
||||
import defineExportTemplate from '@lucide/build-icons/utils/defineExportTemplate';
|
||||
|
||||
export default async ({
|
||||
export default defineExportTemplate(async ({
|
||||
componentName,
|
||||
iconName,
|
||||
children,
|
||||
@@ -35,4 +35,4 @@ const ${componentName} = (props: LucideProps) => (
|
||||
|
||||
export default ${componentName};
|
||||
`;
|
||||
};
|
||||
});
|
||||
@@ -30,19 +30,20 @@
|
||||
"scripts": {
|
||||
"copy:license": "cp ../../LICENSE ./LICENSE",
|
||||
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:bundles && pnpm build:lib && pnpm build:tags",
|
||||
"build:tags": "node ../../scripts/migrateIconsToTags.mjs",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --iconFileExtension=.ts --withAliases --aliasNamesOnly --aliasesFileExtension=.ts --exportFileName=index.ts",
|
||||
"build:lib": "node ./scripts/buildLib.mjs",
|
||||
"build:tags": "node ./scripts/migrateIconsToTags.mts",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --iconFileExtension=.ts --withAliases --aliasNamesOnly --aliasesFileExtension=.ts --exportFileName=index.ts",
|
||||
"build:lib": "node ./scripts/buildLib.mts",
|
||||
"build:bundles": "rollup -c rollup.config.mjs",
|
||||
"clean": "rm -rf lib && rm -rf build && rm -rf icons && rm -f sprite.svg",
|
||||
"version": "pnpm version --git-tag-version=false"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@lucide/build-icons": "workspace:*",
|
||||
"@lucide/helpers": "workspace:*",
|
||||
"@lucide/rollup-plugins": "workspace:*",
|
||||
"@types/node": "^22.15.30",
|
||||
"prettier": "^2.3.2",
|
||||
"svgson": "^5.2.1",
|
||||
"@lucide/build-icons": "workspace:*",
|
||||
"@lucide/rollup-plugins": "workspace:*",
|
||||
"@lucide/helpers": "workspace:*",
|
||||
"rollup": "^4.40.0",
|
||||
"rollup-plugin-dts": "^6.2.1"
|
||||
}
|
||||
|
||||
@@ -1,18 +1,16 @@
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import getArgumentOptions from 'minimist';
|
||||
import { parseSync } from 'svgson';
|
||||
|
||||
import { readSvgDirectory, getCurrentDirPath } from '@lucide/helpers';
|
||||
import readSvgs from './readSvgs.mjs';
|
||||
import generateSprite from './generateSprite.mjs';
|
||||
import generateIconNodes from './generateIconNodes.mjs';
|
||||
import copyIcons from './copyIcons.mjs';
|
||||
import readSvgs from './readSvgs.mts';
|
||||
import generateSprite from './generateSprite.mts';
|
||||
import generateIconNodes from './generateIconNodes.mts';
|
||||
import copyIcons from './copyIcons.mts';
|
||||
|
||||
import pkg from '../package.json' with { type: 'json' };
|
||||
|
||||
const cliArguments = getArgumentOptions(process.argv.slice(2));
|
||||
const createDirectory = (dir) => {
|
||||
const createDirectory = (dir: string) => {
|
||||
if (!fs.existsSync(dir)) {
|
||||
fs.mkdirSync(dir);
|
||||
}
|
||||
@@ -22,7 +20,7 @@ const currentDir = getCurrentDirPath(import.meta.url);
|
||||
|
||||
const PACKAGE_DIR = path.resolve(currentDir, '../');
|
||||
const ICONS_DIR = path.join(PACKAGE_DIR, '../../icons');
|
||||
const LIB_DIR = path.join(PACKAGE_DIR, cliArguments.output || 'lib');
|
||||
const LIB_DIR = path.join(PACKAGE_DIR, 'lib');
|
||||
const ICON_MODULE_DIR = path.join(LIB_DIR, 'icons');
|
||||
|
||||
const license = `@license ${pkg.name} v${pkg.version} - ${pkg.license}`;
|
||||
@@ -33,14 +31,8 @@ createDirectory(ICON_MODULE_DIR);
|
||||
const svgFiles = await readSvgDirectory(ICONS_DIR);
|
||||
const svgs = await readSvgs(svgFiles, ICONS_DIR);
|
||||
|
||||
const parsedSvgs = svgs.map(({ name, contents }) => ({
|
||||
name,
|
||||
contents,
|
||||
parsedSvg: parseSync(contents),
|
||||
}));
|
||||
|
||||
await Promise.all([
|
||||
generateSprite(parsedSvgs, PACKAGE_DIR, license),
|
||||
generateIconNodes(parsedSvgs, PACKAGE_DIR),
|
||||
copyIcons(parsedSvgs, PACKAGE_DIR, license),
|
||||
generateSprite(svgs, PACKAGE_DIR, license),
|
||||
generateIconNodes(svgs, PACKAGE_DIR),
|
||||
copyIcons(svgs, PACKAGE_DIR, license),
|
||||
]);
|
||||
@@ -1,7 +1,12 @@
|
||||
import { writeFile } from 'fs/promises';
|
||||
import { existsSync, unlinkSync, mkdirSync } from 'fs';
|
||||
import { type SVGFile } from './readSvgs.mts';
|
||||
|
||||
export default async function copyIcons(parsedSvgs, packageDir, license) {
|
||||
export default async function copyIcons(
|
||||
parsedSvgs: SVGFile[],
|
||||
packageDir: string,
|
||||
license: string
|
||||
) {
|
||||
const iconsDirectory = `${packageDir}/icons`;
|
||||
|
||||
if (existsSync(iconsDirectory)) {
|
||||
@@ -1,7 +1,7 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG.mjs';
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG';
|
||||
import defineExportTemplate from '@lucide/build-icons/utils/defineExportTemplate';
|
||||
|
||||
export default async ({ componentName, iconName, getSvg, deprecated, deprecationReason }) => {
|
||||
export default defineExportTemplate(async ({ componentName, iconName, getSvg, deprecated, deprecationReason }) => {
|
||||
let svgContents = await getSvg();
|
||||
const svgBase64 = base64SVG(svgContents);
|
||||
|
||||
@@ -29,4 +29,4 @@ ${svgContents}\
|
||||
|
||||
export default ${componentName};
|
||||
`;
|
||||
};
|
||||
});
|
||||
@@ -1,11 +1,12 @@
|
||||
import { writeFile } from '@lucide/helpers';
|
||||
import { type SVGFile } from './readSvgs.mts';
|
||||
|
||||
export default async function generateIconNodes(parsedSvgs, packageDir) {
|
||||
export default async function generateIconNodes(parsedSvgs: SVGFile[], packageDir: string) {
|
||||
const iconNodes = parsedSvgs.reduce((acc, { name, parsedSvg }) => {
|
||||
acc[name] = parsedSvg.children.map(({ name, attributes }) => [name, attributes]);
|
||||
|
||||
return acc;
|
||||
}, {});
|
||||
}, {} as Record<string, [string, Record<string, unknown> | undefined][]>);
|
||||
|
||||
const iconNodesStringified = JSON.stringify(iconNodes, null, 2);
|
||||
|
||||
@@ -1,36 +1,44 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
import { stringify } from 'svgson';
|
||||
import { type INode, stringify } from 'svgson';
|
||||
import { format } from 'prettier';
|
||||
import { appendFile } from '@lucide/helpers';
|
||||
import { type SVGFile } from './readSvgs.mts';
|
||||
|
||||
export default async function generateSprite(svgs, packageDir, license) {
|
||||
const symbols = svgs.map(({ name, parsedSvg }) => ({
|
||||
export default async function generateSprite(
|
||||
svgs: SVGFile[],
|
||||
packageDir: string,
|
||||
license: string
|
||||
) {
|
||||
const symbols = svgs.map<INode>(({ name, parsedSvg }) => ({
|
||||
name: 'symbol',
|
||||
type: 'element',
|
||||
value: '',
|
||||
attributes: {
|
||||
id: name,
|
||||
},
|
||||
children: parsedSvg.children,
|
||||
}));
|
||||
|
||||
const spriteSvgObject = {
|
||||
const spriteSvgObject: INode = {
|
||||
name: 'svg',
|
||||
type: 'element',
|
||||
attributes: {
|
||||
xmlns: 'http://www.w3.org/2000/svg',
|
||||
version: '1.1',
|
||||
},
|
||||
value: '',
|
||||
children: [
|
||||
{
|
||||
name: 'defs',
|
||||
type: 'element',
|
||||
children: symbols,
|
||||
},
|
||||
value: '',
|
||||
} as INode,
|
||||
],
|
||||
};
|
||||
|
||||
const spriteSvg = stringify(spriteSvgObject);
|
||||
const prettifiedSprite = format(spriteSvg, { parser: 'babel' }).replace(/;/g, '');
|
||||
const prettifiedSprite = (await format(spriteSvg, { parser: 'babel' })).replace(/;/g, '');
|
||||
|
||||
const xmlMeta = `<?xml version="1.0" encoding="utf-8"?>\n<!-- ${license} -->\n`;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
import path from 'path';
|
||||
import { writeFile, getCurrentDirPath, readAllMetadata } from '../tools/build-helpers/helpers.mjs';
|
||||
import { writeFile, getCurrentDirPath, readAllMetadata } from '@lucide/helpers';
|
||||
|
||||
const currentDir = getCurrentDirPath(import.meta.url);
|
||||
const ICONS_DIR = path.resolve(currentDir, '../icons');
|
||||
@@ -1,6 +1,7 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
import { basename } from 'path';
|
||||
import { readSvg } from '@lucide/helpers';
|
||||
import { type INode, parseSync } from 'svgson';
|
||||
|
||||
/**
|
||||
* Build an object in the format: `{ <name>: <contents> }`.
|
||||
@@ -8,13 +9,23 @@ import { readSvg } from '@lucide/helpers';
|
||||
* @param {Function} getSvg - A function that returns the contents of an SVG file given a filename.
|
||||
* @returns {Object}
|
||||
*/
|
||||
export default function readSVGs(svgFiles, iconsDirectory) {
|
||||
export default function readSVGs(svgFiles: string[], iconsDirectory: string) {
|
||||
const SVGReadPromises = svgFiles.map(async (svgFile) => {
|
||||
const name = basename(svgFile, '.svg');
|
||||
const contents = await readSvg(svgFile, iconsDirectory);
|
||||
|
||||
return { name, contents };
|
||||
return {
|
||||
name,
|
||||
contents,
|
||||
parsedSvg: parseSync(contents),
|
||||
};
|
||||
});
|
||||
|
||||
return Promise.all(SVGReadPromises);
|
||||
}
|
||||
|
||||
export type SVGFile = {
|
||||
name: string;
|
||||
contents: string;
|
||||
parsedSvg: INode
|
||||
}
|
||||
@@ -11,6 +11,7 @@
|
||||
"allowJs": true,
|
||||
"lib": ["esnext", "dom"],
|
||||
"resolveJsonModule": true,
|
||||
"allowImportingTsExtensions": true,
|
||||
"sourceMap": true,
|
||||
"outDir": "./dist",
|
||||
},
|
||||
|
||||
@@ -49,9 +49,9 @@
|
||||
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:package && pnpm build:license",
|
||||
"copy:license": "cp ../../LICENSE ./LICENSE",
|
||||
"clean": "rm -rf dist && rm -rf stats && rm -rf ./src/icons/*.svelte && rm -f index.js",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --exportFileName=index.ts --iconFileExtension=.svelte --importImportFileExtension=.svelte --separateIconFileExport --separateIconFileExportExtension=.ts --withAliases --aliasesFileExtension=.ts --separateAliasesFile --separateAliasesFileExtension=.ts --aliasImportFileExtension=.js --pretty=false",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --exportFileName=index.ts --iconFileExtension=.svelte --importImportFileExtension=.svelte --separateIconFileExport --separateIconFileExportExtension=.ts --withAliases --aliasesFileExtension=.ts --separateAliasesFile --separateAliasesFileExtension=.ts --aliasImportFileExtension=.js --pretty=false",
|
||||
"build:package": "svelte-package --input ./src",
|
||||
"build:license": "node ./scripts/appendBlockComments.mjs",
|
||||
"build:license": "node ./scripts/appendBlockComments.mts",
|
||||
"test": "pnpm copy:license && pnpm build:icons && vitest run",
|
||||
"test:watch": "vitest watch",
|
||||
"version": "pnpm version --git-tag-version=false"
|
||||
|
||||
@@ -2,7 +2,7 @@ import { lstatSync } from 'fs';
|
||||
import { readdir, readFile, writeFile } from 'fs/promises';
|
||||
import path from 'path';
|
||||
import { getCurrentDirPath } from '@lucide/helpers';
|
||||
import { getJSBanner } from './license.mjs';
|
||||
import { getJSBanner } from './license.mts';
|
||||
|
||||
const currentDir = await getCurrentDirPath(import.meta.url);
|
||||
const targetDirectory = path.join(currentDir, '../dist');
|
||||
@@ -21,7 +21,7 @@ for (const file of files) {
|
||||
if (filestat.isFile() === false || filestat.isDirectory()) continue;
|
||||
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
const contents = await readFile(filepath, { encoding: 'utf-8' });
|
||||
const contents = (await readFile(filepath, { encoding: 'utf-8' }) as unknown as string);
|
||||
let newContents = contents;
|
||||
const ext = path.extname(filepath);
|
||||
let license;
|
||||
@@ -38,7 +38,7 @@ for (const file of files) {
|
||||
if (/icons\/(.*?)\.svelte\.d\.ts/.test(filepath)) {
|
||||
const svelteFilepath = filepath.replace('.d.ts', '');
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
const svelteFileContents = await readFile(svelteFilepath, { encoding: 'utf-8' });
|
||||
const svelteFileContents = (await readFile(svelteFilepath, { encoding: 'utf-8' }) as unknown as string);
|
||||
|
||||
const blockCommentRegex = /\/\*\*\n\s\*\s(@component\s@name)[\s\S]*?\*\//;
|
||||
const blockCommentMatch = blockCommentRegex.exec(svelteFileContents);
|
||||
@@ -1,8 +1,8 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG.mjs';
|
||||
import { getJSBanner } from './license.mjs';
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG';
|
||||
import { getJSBanner } from './license.mts';
|
||||
import defineExportTemplate from '@lucide/build-icons/utils/defineExportTemplate';
|
||||
|
||||
export default async ({
|
||||
export default defineExportTemplate(async ({
|
||||
iconName,
|
||||
children,
|
||||
componentName,
|
||||
@@ -40,4 +40,4 @@ const iconNode: IconNode = ${JSON.stringify(children)};
|
||||
<slot/>
|
||||
</Icon>
|
||||
`;
|
||||
};
|
||||
});
|
||||
@@ -38,7 +38,7 @@
|
||||
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:bundles",
|
||||
"copy:license": "cp ../../LICENSE ./LICENSE",
|
||||
"clean": "rm -rf dist && rm -rf ./src/icons/*.ts",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --renderUniqueKey --withAliases --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=index.ts",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --renderUniqueKey --withAliases --aliasesFileExtension=.ts --iconFileExtension=.ts --exportFileName=index.ts",
|
||||
"build:bundles": "rollup -c ./rollup.config.mjs",
|
||||
"test": "pnpm build:icons && vitest run",
|
||||
"test:watch": "vitest watch",
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG.mjs';
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG';
|
||||
|
||||
export default async ({
|
||||
componentName,
|
||||
@@ -36,7 +36,7 @@
|
||||
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:bundle",
|
||||
"copy:license": "cp ../../LICENSE ./LICENSE",
|
||||
"clean": "rm -rf dist && rm -rf stats && rm -rf ./src/icons/*.ts",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --iconFileExtension=.ts --withAliases --aliasNamesOnly --aliasesFileExtension=.ts --exportFileName=index.ts",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --iconFileExtension=.ts --withAliases --aliasNamesOnly --aliasesFileExtension=.ts --exportFileName=index.ts",
|
||||
"build:bundle": "rollup -c rollup.config.mjs",
|
||||
"test": "pnpm build:icons && vitest run",
|
||||
"test:watch": "vitest watch",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG.mjs';
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG';
|
||||
import defineExportTemplate from '@lucide/build-icons/utils/defineExportTemplate';
|
||||
|
||||
export default async ({
|
||||
export default defineExportTemplate(async ({
|
||||
componentName,
|
||||
iconName,
|
||||
children,
|
||||
@@ -30,4 +30,4 @@ const ${componentName}: IconNode = ${JSON.stringify(children)}
|
||||
|
||||
export default ${componentName};
|
||||
`;
|
||||
};
|
||||
});
|
||||
@@ -49,9 +49,9 @@
|
||||
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:package && pnpm build:license",
|
||||
"copy:license": "cp ../../LICENSE ./LICENSE",
|
||||
"clean": "rm -rf dist stats ./src/icons/*.{ts,svelte} ./src/aliases/{aliases,prefixed,suffixed}.ts",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --exportFileName=index.ts --iconFileExtension=.svelte --importImportFileExtension=.svelte --separateIconFileExport --separateIconFileExportExtension=.ts --withAliases --aliasesFileExtension=.ts --separateAliasesFile --separateAliasesFileExtension=.ts --aliasImportFileExtension=.js --pretty=false",
|
||||
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mts --exportFileName=index.ts --iconFileExtension=.svelte --importImportFileExtension=.svelte --separateIconFileExport --separateIconFileExportExtension=.ts --withAliases --aliasesFileExtension=.ts --separateAliasesFile --separateAliasesFileExtension=.ts --aliasImportFileExtension=.js --pretty=false",
|
||||
"build:package": "svelte-package --input ./src",
|
||||
"build:license": "node ./scripts/appendBlockComments.mjs",
|
||||
"build:license": "node ./scripts/appendBlockComments.mts",
|
||||
"test": "pnpm copy:license && pnpm build:icons && vitest run",
|
||||
"test:watch": "vitest watch",
|
||||
"version": "pnpm version --git-tag-version=false"
|
||||
|
||||
@@ -2,7 +2,7 @@ import { lstatSync } from 'fs';
|
||||
import { readdir, readFile, writeFile } from 'fs/promises';
|
||||
import path from 'path';
|
||||
import { getCurrentDirPath } from '@lucide/helpers';
|
||||
import { getJSBanner } from './license.mjs';
|
||||
import { getJSBanner } from './license.mts';
|
||||
|
||||
const currentDir = getCurrentDirPath(import.meta.url);
|
||||
const targetDirectory = path.join(currentDir, '../dist');
|
||||
@@ -21,7 +21,7 @@ for (const file of files) {
|
||||
if (filestat.isFile() === false || filestat.isDirectory()) continue;
|
||||
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
const contents = await readFile(filepath, { encoding: 'utf-8' });
|
||||
const contents = (await readFile(filepath, { encoding: 'utf-8' })) as unknown as string;
|
||||
let newContents = contents;
|
||||
const ext = path.extname(filepath);
|
||||
let license;
|
||||
@@ -38,7 +38,7 @@ for (const file of files) {
|
||||
if (/icons\/(.*?)\.svelte\.d\.ts/.test(filepath)) {
|
||||
const svelteFilepath = filepath.replace('.d.ts', '');
|
||||
// eslint-disable-next-line no-await-in-loop
|
||||
const svelteFileContents = await readFile(svelteFilepath, { encoding: 'utf-8' });
|
||||
const svelteFileContents = (await readFile(svelteFilepath, { encoding: 'utf-8' })) as unknown as string;;
|
||||
|
||||
const blockCommentRegex = /\/\*\*\n\s\*\s(@component\s@name)[\s\S]*?\*\//;
|
||||
const blockCommentMatch = blockCommentRegex.exec(svelteFileContents);
|
||||
@@ -1,8 +1,8 @@
|
||||
/* eslint-disable import/no-extraneous-dependencies */
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG.mjs';
|
||||
import { getJSBanner } from './license.mjs';
|
||||
import base64SVG from '@lucide/build-icons/utils/base64SVG';
|
||||
import { getJSBanner } from './license.mts';
|
||||
import defineExportTemplate from '@lucide/build-icons/utils/defineExportTemplate';
|
||||
|
||||
export default async ({
|
||||
export default defineExportTemplate(async ({
|
||||
iconName,
|
||||
children,
|
||||
componentName,
|
||||
@@ -40,4 +40,4 @@ const iconNode: IconNode = ${JSON.stringify(children)};
|
||||
{@render props.children?.()}
|
||||
</Icon>
|
||||
`;
|
||||
};
|
||||
});
|
||||
317
pnpm-lock.yaml
generated
317
pnpm-lock.yaml
generated
@@ -33,7 +33,7 @@ importers:
|
||||
version: 6.21.0(eslint@8.57.1)(typescript@5.8.3)
|
||||
ajv-cli:
|
||||
specifier: ^5.0.0
|
||||
version: 5.0.0(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.15.18)(typescript@5.8.3))
|
||||
version: 5.0.0(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.15.30)(typescript@5.8.3))
|
||||
eslint:
|
||||
specifier: ^8.57.1
|
||||
version: 8.57.1
|
||||
@@ -187,13 +187,13 @@ importers:
|
||||
version: 3.5.0
|
||||
vitepress:
|
||||
specifier: ^1.3.1
|
||||
version: 1.6.3(@algolia/client-search@5.25.0)(@types/node@22.15.18)(@types/react@18.3.21)(axios@1.7.4)(fuse.js@6.6.2)(less@4.2.0)(postcss@8.5.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.8)(search-insights@2.8.2)(stylus@0.56.0)(terser@5.39.2)(typescript@5.8.3)
|
||||
version: 1.6.3(@algolia/client-search@5.25.0)(@types/node@22.15.30)(@types/react@18.3.21)(axios@1.7.4)(fuse.js@6.6.2)(less@4.2.0)(postcss@8.5.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.8)(search-insights@2.8.2)(stylus@0.56.0)(terser@5.39.2)(typescript@5.8.3)
|
||||
|
||||
packages/astro:
|
||||
dependencies:
|
||||
astro:
|
||||
specifier: ^4 || ^5
|
||||
version: 5.5.2(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(rollup@4.40.2)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(typescript@5.8.3)(yaml@2.8.0)
|
||||
version: 5.5.2(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(rollup@4.40.2)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(typescript@5.8.3)(yaml@2.8.0)
|
||||
devDependencies:
|
||||
'@astrojs/ts-plugin':
|
||||
specifier: ^1.10.4
|
||||
@@ -221,7 +221,7 @@ importers:
|
||||
version: 5.8.3
|
||||
vitest:
|
||||
specifier: ^3.1.3
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.18)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.30)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
|
||||
packages/lucide:
|
||||
devDependencies:
|
||||
@@ -251,10 +251,10 @@ importers:
|
||||
version: 5.8.3
|
||||
vite:
|
||||
specifier: ^6.3.4
|
||||
version: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitest:
|
||||
specifier: ^3.1.3
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.18)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.30)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
|
||||
packages/lucide-angular:
|
||||
devDependencies:
|
||||
@@ -375,7 +375,7 @@ importers:
|
||||
version: link:../shared
|
||||
'@preact/preset-vite':
|
||||
specifier: ^2.7.0
|
||||
version: 2.10.1(@babel/core@7.27.1)(preact@10.26.6)(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
version: 2.10.1(@babel/core@7.27.1)(preact@10.26.6)(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
'@testing-library/jest-dom':
|
||||
specifier: ^6.1.4
|
||||
version: 6.6.3
|
||||
@@ -399,10 +399,10 @@ importers:
|
||||
version: 5.8.3
|
||||
vite:
|
||||
specifier: ^6.3.4
|
||||
version: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitest:
|
||||
specifier: ^3.1.3
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.18)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.30)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
|
||||
packages/lucide-react:
|
||||
devDependencies:
|
||||
@@ -426,7 +426,7 @@ importers:
|
||||
version: 18.3.21
|
||||
'@vitejs/plugin-react':
|
||||
specifier: ^4.4.1
|
||||
version: 4.4.1(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
version: 4.4.1(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
jest-serializer-html:
|
||||
specifier: ^7.1.0
|
||||
version: 7.1.0
|
||||
@@ -450,10 +450,10 @@ importers:
|
||||
version: 5.8.3
|
||||
vite:
|
||||
specifier: ^6.3.4
|
||||
version: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitest:
|
||||
specifier: ^3.1.3
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.18)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.30)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
|
||||
packages/lucide-react-native:
|
||||
devDependencies:
|
||||
@@ -480,7 +480,7 @@ importers:
|
||||
version: 18.3.21
|
||||
'@vitejs/plugin-react':
|
||||
specifier: ^4.2.1
|
||||
version: 4.4.1(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
version: 4.4.1(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
jest-serializer-html:
|
||||
specifier: ^7.1.0
|
||||
version: 7.1.0
|
||||
@@ -507,10 +507,10 @@ importers:
|
||||
version: 5.8.3
|
||||
vite:
|
||||
specifier: ^6.3.4
|
||||
version: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitest:
|
||||
specifier: ^3.1.3
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.18)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.30)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
|
||||
packages/lucide-solid:
|
||||
devDependencies:
|
||||
@@ -561,13 +561,13 @@ importers:
|
||||
version: 5.8.3
|
||||
vite:
|
||||
specifier: ^6.3.4
|
||||
version: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite-plugin-solid:
|
||||
specifier: ^2.11.6
|
||||
version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.6)(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
version: 2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.6)(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
vitest:
|
||||
specifier: ^3.1.3
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.18)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.30)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
|
||||
packages/lucide-static:
|
||||
devDependencies:
|
||||
@@ -580,6 +580,9 @@ importers:
|
||||
'@lucide/rollup-plugins':
|
||||
specifier: workspace:*
|
||||
version: link:../../tools/rollup-plugins
|
||||
'@types/node':
|
||||
specifier: ^22.15.30
|
||||
version: 22.15.30
|
||||
prettier:
|
||||
specifier: ^2.3.2
|
||||
version: 2.8.8
|
||||
@@ -606,7 +609,7 @@ importers:
|
||||
version: 2.3.11(svelte@4.2.19)(typescript@5.8.3)
|
||||
'@sveltejs/vite-plugin-svelte':
|
||||
specifier: ^2.4.2
|
||||
version: 2.5.3(svelte@4.2.19)(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0))
|
||||
version: 2.5.3(svelte@4.2.19)(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0))
|
||||
'@testing-library/jest-dom':
|
||||
specifier: ^6.1.4
|
||||
version: 6.6.3
|
||||
@@ -636,10 +639,10 @@ importers:
|
||||
version: 5.8.3
|
||||
vite:
|
||||
specifier: ^6.3.4
|
||||
version: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitest:
|
||||
specifier: ^3.1.3
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.18)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.30)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
|
||||
packages/lucide-vue:
|
||||
devDependencies:
|
||||
@@ -660,7 +663,7 @@ importers:
|
||||
version: 5.9.0(vue-template-compiler@2.7.14(vue@2.7.14))(vue@2.7.14)
|
||||
'@vitejs/plugin-vue2':
|
||||
specifier: 2.2.0
|
||||
version: 2.2.0(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))(vue@2.7.14)
|
||||
version: 2.2.0(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))(vue@2.7.14)
|
||||
'@vue/test-utils':
|
||||
specifier: 1.3.0
|
||||
version: 1.3.0(vue-template-compiler@2.7.14(vue@2.7.14))(vue@2.7.14)
|
||||
@@ -672,10 +675,10 @@ importers:
|
||||
version: 5.8.3
|
||||
vite:
|
||||
specifier: ^6.3.4
|
||||
version: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitest:
|
||||
specifier: ^3.1.3
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.18)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.30)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vue:
|
||||
specifier: 2.7.14
|
||||
version: 2.7.14
|
||||
@@ -702,7 +705,7 @@ importers:
|
||||
version: 8.1.0(@vue/compiler-sfc@3.5.14)(vue@3.5.14(typescript@5.8.3))
|
||||
'@vitejs/plugin-vue':
|
||||
specifier: ^4.6.2
|
||||
version: 4.6.2(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3))
|
||||
version: 4.6.2(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3))
|
||||
'@vue/test-utils':
|
||||
specifier: 2.4.5
|
||||
version: 2.4.5
|
||||
@@ -714,10 +717,10 @@ importers:
|
||||
version: 6.2.1(rollup@4.40.2)(typescript@5.8.3)
|
||||
vite:
|
||||
specifier: ^6.3.4
|
||||
version: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitest:
|
||||
specifier: ^3.1.3
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.18)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.30)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vue:
|
||||
specifier: ^3.4.21
|
||||
version: 3.5.14(typescript@5.8.3)
|
||||
@@ -726,7 +729,7 @@ importers:
|
||||
devDependencies:
|
||||
vitest:
|
||||
specifier: ^3.1.3
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.18)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.30)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
|
||||
packages/svelte:
|
||||
devDependencies:
|
||||
@@ -741,13 +744,13 @@ importers:
|
||||
version: 2.3.11(svelte@5.30.1)(typescript@5.8.3)
|
||||
'@sveltejs/vite-plugin-svelte':
|
||||
specifier: ^5.0.3
|
||||
version: 5.0.3(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
version: 5.0.3(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
'@testing-library/jest-dom':
|
||||
specifier: ^6.1.4
|
||||
version: 6.6.3
|
||||
'@testing-library/svelte':
|
||||
specifier: ^5.2.7
|
||||
version: 5.2.7(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3(@types/debug@4.1.12)(@types/node@22.15.18)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
version: 5.2.7(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3(@types/debug@4.1.12)(@types/node@22.15.30)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
'@tsconfig/svelte':
|
||||
specifier: ^5.0.4
|
||||
version: 5.0.4
|
||||
@@ -771,10 +774,10 @@ importers:
|
||||
version: 5.8.3
|
||||
vite:
|
||||
specifier: 6.1.6
|
||||
version: 6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitest:
|
||||
specifier: ^3.1.3
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.18)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
version: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.30)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
|
||||
tools/build-font:
|
||||
dependencies:
|
||||
@@ -787,8 +790,22 @@ importers:
|
||||
svgtofont:
|
||||
specifier: ^6.0.0
|
||||
version: 6.3.2(@types/svg2ttf@5.0.1)(chokidar@3.6.0)
|
||||
devDependencies:
|
||||
'@types/fs-extra':
|
||||
specifier: ^11.0.4
|
||||
version: 11.0.4
|
||||
'@types/minimist':
|
||||
specifier: ^1.2.5
|
||||
version: 1.2.5
|
||||
'@types/node':
|
||||
specifier: ^22
|
||||
version: 22.15.30
|
||||
|
||||
tools/build-helpers: {}
|
||||
tools/build-helpers:
|
||||
devDependencies:
|
||||
'@types/node':
|
||||
specifier: ^22
|
||||
version: 22.15.30
|
||||
|
||||
tools/build-icons:
|
||||
dependencies:
|
||||
@@ -808,6 +825,12 @@ importers:
|
||||
'@lucide/helpers':
|
||||
specifier: workspace:*
|
||||
version: link:../build-helpers
|
||||
'@types/minimist':
|
||||
specifier: ^1.2.5
|
||||
version: 1.2.5
|
||||
'@types/node':
|
||||
specifier: ^22
|
||||
version: 22.15.30
|
||||
|
||||
tools/outline-svg:
|
||||
dependencies:
|
||||
@@ -5150,6 +5173,9 @@ packages:
|
||||
'@types/express@4.17.21':
|
||||
resolution: {integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==}
|
||||
|
||||
'@types/fs-extra@11.0.4':
|
||||
resolution: {integrity: sha512-yTbItCNreRooED33qjunPthRcSjERP1r4MqCZc7wv0u2sUkzTFp45tgUfS5+r7FrZPdmCCNflLhVSP/o+SemsQ==}
|
||||
|
||||
'@types/fs-extra@8.1.2':
|
||||
resolution: {integrity: sha512-SvSrYXfWSc7R4eqnOzbQF4TZmfpNSM9FrSWLU3EUnWBuyZqNBOrv1B1JA3byUDPUl9z4Ab3jeZG2eDdySlgNMg==}
|
||||
|
||||
@@ -5186,6 +5212,9 @@ packages:
|
||||
'@types/json5@0.0.29':
|
||||
resolution: {integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==}
|
||||
|
||||
'@types/jsonfile@6.1.4':
|
||||
resolution: {integrity: sha512-D5qGUYwjvnNNextdU59/+fI+spnwtTFmyQP0h+PfIOSkNfpU6AOICUOkm4i0OnSk+NyjdPJrxCDro0sJsWlRpQ==}
|
||||
|
||||
'@types/linkify-it@5.0.0':
|
||||
resolution: {integrity: sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==}
|
||||
|
||||
@@ -5207,6 +5236,9 @@ packages:
|
||||
'@types/minimatch@5.1.2':
|
||||
resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==}
|
||||
|
||||
'@types/minimist@1.2.5':
|
||||
resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==}
|
||||
|
||||
'@types/ms@2.1.0':
|
||||
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
|
||||
|
||||
@@ -5225,8 +5257,8 @@ packages:
|
||||
'@types/node@17.0.45':
|
||||
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
|
||||
|
||||
'@types/node@22.15.18':
|
||||
resolution: {integrity: sha512-v1DKRfUdyW+jJhZNEI1PYy29S2YRxMV5AOO/x/SjKmW0acCIOqmbj6Haf9eHAhsPmrhlHSxEhv/1WszcLWV4cg==}
|
||||
'@types/node@22.15.30':
|
||||
resolution: {integrity: sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==}
|
||||
|
||||
'@types/parse-json@4.0.2':
|
||||
resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==}
|
||||
@@ -16422,14 +16454,14 @@ snapshots:
|
||||
dependencies:
|
||||
'@jest/fake-timers': 29.7.0
|
||||
'@jest/types': 29.6.3
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
jest-mock: 29.7.0
|
||||
|
||||
'@jest/fake-timers@29.7.0':
|
||||
dependencies:
|
||||
'@jest/types': 29.6.3
|
||||
'@sinonjs/fake-timers': 10.3.0
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
jest-message-util: 29.7.0
|
||||
jest-mock: 29.7.0
|
||||
jest-util: 29.7.0
|
||||
@@ -16463,7 +16495,7 @@ snapshots:
|
||||
'@jest/schemas': 29.6.3
|
||||
'@types/istanbul-lib-coverage': 2.0.4
|
||||
'@types/istanbul-reports': 3.0.1
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
'@types/yargs': 17.0.33
|
||||
chalk: 4.1.2
|
||||
|
||||
@@ -17131,18 +17163,18 @@ snapshots:
|
||||
'@pkgjs/parseargs@0.11.0':
|
||||
optional: true
|
||||
|
||||
'@preact/preset-vite@2.10.1(@babel/core@7.27.1)(preact@10.26.6)(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))':
|
||||
'@preact/preset-vite@2.10.1(@babel/core@7.27.1)(preact@10.26.6)(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))':
|
||||
dependencies:
|
||||
'@babel/core': 7.27.1
|
||||
'@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.27.1)
|
||||
'@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.27.1)
|
||||
'@prefresh/vite': 2.4.1(preact@10.26.6)(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
'@prefresh/vite': 2.4.1(preact@10.26.6)(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
'@rollup/pluginutils': 4.2.1
|
||||
babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.27.1)
|
||||
debug: 4.3.4
|
||||
kolorist: 1.8.0
|
||||
vite: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite-prerender-plugin: 0.5.10(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
vite: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite-prerender-plugin: 0.5.10(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
transitivePeerDependencies:
|
||||
- preact
|
||||
- supports-color
|
||||
@@ -17155,7 +17187,7 @@ snapshots:
|
||||
|
||||
'@prefresh/utils@1.2.0': {}
|
||||
|
||||
'@prefresh/vite@2.4.1(preact@10.26.6)(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))':
|
||||
'@prefresh/vite@2.4.1(preact@10.26.6)(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))':
|
||||
dependencies:
|
||||
'@babel/core': 7.27.1
|
||||
'@prefresh/babel-plugin': 0.5.0
|
||||
@@ -17163,7 +17195,7 @@ snapshots:
|
||||
'@prefresh/utils': 1.2.0
|
||||
'@rollup/pluginutils': 4.2.1
|
||||
preact: 10.26.6
|
||||
vite: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
@@ -17837,48 +17869,48 @@ snapshots:
|
||||
transitivePeerDependencies:
|
||||
- typescript
|
||||
|
||||
'@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.5.3(svelte@4.2.19)(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0)))(svelte@4.2.19)(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0))':
|
||||
'@sveltejs/vite-plugin-svelte-inspector@1.0.4(@sveltejs/vite-plugin-svelte@2.5.3(svelte@4.2.19)(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0)))(svelte@4.2.19)(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0))':
|
||||
dependencies:
|
||||
'@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.2.19)(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0))
|
||||
'@sveltejs/vite-plugin-svelte': 2.5.3(svelte@4.2.19)(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0))
|
||||
debug: 4.4.0
|
||||
svelte: 4.2.19
|
||||
vite: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)))(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))':
|
||||
'@sveltejs/vite-plugin-svelte-inspector@4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)))(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))':
|
||||
dependencies:
|
||||
'@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
'@sveltejs/vite-plugin-svelte': 5.0.3(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
debug: 4.4.0
|
||||
svelte: 5.30.1
|
||||
vite: 6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite: 6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@sveltejs/vite-plugin-svelte@2.5.3(svelte@4.2.19)(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0))':
|
||||
'@sveltejs/vite-plugin-svelte@2.5.3(svelte@4.2.19)(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0))':
|
||||
dependencies:
|
||||
'@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.3(svelte@4.2.19)(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0)))(svelte@4.2.19)(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0))
|
||||
'@sveltejs/vite-plugin-svelte-inspector': 1.0.4(@sveltejs/vite-plugin-svelte@2.5.3(svelte@4.2.19)(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0)))(svelte@4.2.19)(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0))
|
||||
debug: 4.4.0
|
||||
deepmerge: 4.3.1
|
||||
kleur: 4.1.5
|
||||
magic-string: 0.30.17
|
||||
svelte: 4.2.19
|
||||
svelte-hmr: 0.15.3(svelte@4.2.19)
|
||||
vite: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitefu: 0.2.5(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0))
|
||||
vite: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitefu: 0.2.5(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0))
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))':
|
||||
'@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))':
|
||||
dependencies:
|
||||
'@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)))(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
'@sveltejs/vite-plugin-svelte-inspector': 4.0.1(@sveltejs/vite-plugin-svelte@5.0.3(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)))(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
debug: 4.4.0
|
||||
deepmerge: 4.3.1
|
||||
kleur: 4.1.5
|
||||
magic-string: 0.30.17
|
||||
svelte: 5.30.1
|
||||
vite: 6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitefu: 1.0.5(vite@6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
vite: 6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitefu: 1.0.5(vite@6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
@@ -18033,13 +18065,13 @@ snapshots:
|
||||
'@testing-library/dom': 9.3.4
|
||||
svelte: 4.2.19
|
||||
|
||||
'@testing-library/svelte@5.2.7(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3(@types/debug@4.1.12)(@types/node@22.15.18)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))':
|
||||
'@testing-library/svelte@5.2.7(svelte@5.30.1)(vite@6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))(vitest@3.1.3(@types/debug@4.1.12)(@types/node@22.15.30)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))':
|
||||
dependencies:
|
||||
'@testing-library/dom': 10.4.0
|
||||
svelte: 5.30.1
|
||||
optionalDependencies:
|
||||
vite: 6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitest: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.18)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite: 6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitest: 3.1.3(@types/debug@4.1.12)(@types/node@22.15.30)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
|
||||
'@testing-library/vue@5.9.0(vue-template-compiler@2.7.14(vue@2.7.14))(vue@2.7.14)':
|
||||
dependencies:
|
||||
@@ -18107,20 +18139,20 @@ snapshots:
|
||||
'@types/body-parser@1.19.5':
|
||||
dependencies:
|
||||
'@types/connect': 3.4.38
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/bonjour@3.5.13':
|
||||
dependencies:
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/connect-history-api-fallback@1.5.4':
|
||||
dependencies:
|
||||
'@types/express-serve-static-core': 4.19.5
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/connect@3.4.38':
|
||||
dependencies:
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/cookie@0.4.1': {}
|
||||
|
||||
@@ -18128,7 +18160,7 @@ snapshots:
|
||||
|
||||
'@types/cors@2.8.17':
|
||||
dependencies:
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/debug@4.1.12':
|
||||
dependencies:
|
||||
@@ -18156,7 +18188,7 @@ snapshots:
|
||||
|
||||
'@types/express-serve-static-core@4.19.5':
|
||||
dependencies:
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
'@types/qs': 6.9.15
|
||||
'@types/range-parser': 1.2.7
|
||||
'@types/send': 0.17.4
|
||||
@@ -18168,18 +18200,23 @@ snapshots:
|
||||
'@types/qs': 6.9.15
|
||||
'@types/serve-static': 1.15.7
|
||||
|
||||
'@types/fs-extra@11.0.4':
|
||||
dependencies:
|
||||
'@types/jsonfile': 6.1.4
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/fs-extra@8.1.2':
|
||||
dependencies:
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/glob@7.2.0':
|
||||
dependencies:
|
||||
'@types/minimatch': 5.1.2
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/graceful-fs@4.1.9':
|
||||
dependencies:
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/hast@3.0.4':
|
||||
dependencies:
|
||||
@@ -18189,7 +18226,7 @@ snapshots:
|
||||
|
||||
'@types/http-proxy@1.17.15':
|
||||
dependencies:
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/istanbul-lib-coverage@2.0.4': {}
|
||||
|
||||
@@ -18207,6 +18244,10 @@ snapshots:
|
||||
|
||||
'@types/json5@0.0.29': {}
|
||||
|
||||
'@types/jsonfile@6.1.4':
|
||||
dependencies:
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/linkify-it@5.0.0': {}
|
||||
|
||||
'@types/markdown-it@14.1.2':
|
||||
@@ -18228,6 +18269,8 @@ snapshots:
|
||||
|
||||
'@types/minimatch@5.1.2': {}
|
||||
|
||||
'@types/minimist@1.2.5': {}
|
||||
|
||||
'@types/ms@2.1.0': {}
|
||||
|
||||
'@types/nlcst@2.0.3':
|
||||
@@ -18236,7 +18279,7 @@ snapshots:
|
||||
|
||||
'@types/node-forge@1.3.11':
|
||||
dependencies:
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/node@12.20.55': {}
|
||||
|
||||
@@ -18244,7 +18287,7 @@ snapshots:
|
||||
|
||||
'@types/node@17.0.45': {}
|
||||
|
||||
'@types/node@22.15.18':
|
||||
'@types/node@22.15.30':
|
||||
dependencies:
|
||||
undici-types: 6.21.0
|
||||
|
||||
@@ -18271,7 +18314,7 @@ snapshots:
|
||||
|
||||
'@types/resolve@1.17.1':
|
||||
dependencies:
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/resolve@1.20.2': {}
|
||||
|
||||
@@ -18279,18 +18322,18 @@ snapshots:
|
||||
|
||||
'@types/sax@1.2.4':
|
||||
dependencies:
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/sax@1.2.7':
|
||||
dependencies:
|
||||
'@types/node': 22.15.18
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/semver@7.7.0': {}
|
||||
|
||||
'@types/send@0.17.4':
|
||||
dependencies:
|
||||
'@types/mime': 1.3.5
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/serve-index@1.9.4':
|
||||
dependencies:
|
||||
@@ -18299,12 +18342,12 @@ snapshots:
|
||||
'@types/serve-static@1.15.7':
|
||||
dependencies:
|
||||
'@types/http-errors': 2.0.4
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
'@types/send': 0.17.4
|
||||
|
||||
'@types/sockjs@0.3.36':
|
||||
dependencies:
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/stack-utils@2.0.1': {}
|
||||
|
||||
@@ -18317,7 +18360,7 @@ snapshots:
|
||||
|
||||
'@types/ws@8.5.12':
|
||||
dependencies:
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
|
||||
'@types/yargs-parser@21.0.3': {}
|
||||
|
||||
@@ -18604,30 +18647,30 @@ snapshots:
|
||||
- encoding
|
||||
- supports-color
|
||||
|
||||
'@vitejs/plugin-react@4.4.1(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))':
|
||||
'@vitejs/plugin-react@4.4.1(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))':
|
||||
dependencies:
|
||||
'@babel/core': 7.27.1
|
||||
'@babel/plugin-transform-react-jsx-self': 7.25.9(@babel/core@7.27.1)
|
||||
'@babel/plugin-transform-react-jsx-source': 7.25.9(@babel/core@7.27.1)
|
||||
'@types/babel__core': 7.20.5
|
||||
react-refresh: 0.17.0
|
||||
vite: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
'@vitejs/plugin-vue2@2.2.0(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))(vue@2.7.14)':
|
||||
'@vitejs/plugin-vue2@2.2.0(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))(vue@2.7.14)':
|
||||
dependencies:
|
||||
vite: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vue: 2.7.14
|
||||
|
||||
'@vitejs/plugin-vue@4.6.2(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3))':
|
||||
'@vitejs/plugin-vue@4.6.2(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))(vue@3.5.14(typescript@5.8.3))':
|
||||
dependencies:
|
||||
vite: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vue: 3.5.14(typescript@5.8.3)
|
||||
|
||||
'@vitejs/plugin-vue@5.2.4(vite@5.4.14(@types/node@22.15.18)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2))(vue@3.5.14(typescript@5.8.3))':
|
||||
'@vitejs/plugin-vue@5.2.4(vite@5.4.14(@types/node@22.15.30)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2))(vue@3.5.14(typescript@5.8.3))':
|
||||
dependencies:
|
||||
vite: 5.4.14(@types/node@22.15.18)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)
|
||||
vite: 5.4.14(@types/node@22.15.30)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)
|
||||
vue: 3.5.14(typescript@5.8.3)
|
||||
|
||||
'@vitest/expect@3.1.3':
|
||||
@@ -18637,13 +18680,13 @@ snapshots:
|
||||
chai: 5.2.0
|
||||
tinyrainbow: 2.0.0
|
||||
|
||||
'@vitest/mocker@3.1.3(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0))':
|
||||
'@vitest/mocker@3.1.3(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0))':
|
||||
dependencies:
|
||||
'@vitest/spy': 3.1.3
|
||||
estree-walker: 3.0.3
|
||||
magic-string: 0.30.17
|
||||
optionalDependencies:
|
||||
vite: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
|
||||
'@vitest/pretty-format@3.1.3':
|
||||
dependencies:
|
||||
@@ -18969,7 +19012,7 @@ snapshots:
|
||||
clean-stack: 2.2.0
|
||||
indent-string: 4.0.0
|
||||
|
||||
ajv-cli@5.0.0(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.15.18)(typescript@5.8.3)):
|
||||
ajv-cli@5.0.0(ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.15.30)(typescript@5.8.3)):
|
||||
dependencies:
|
||||
ajv: 8.17.1
|
||||
fast-json-patch: 2.2.1
|
||||
@@ -18979,7 +19022,7 @@ snapshots:
|
||||
json5: 2.2.3
|
||||
minimist: 1.2.8
|
||||
optionalDependencies:
|
||||
ts-node: 10.9.2(@swc/core@1.7.23)(@types/node@22.15.18)(typescript@5.8.3)
|
||||
ts-node: 10.9.2(@swc/core@1.7.23)(@types/node@22.15.30)(typescript@5.8.3)
|
||||
|
||||
ajv-formats@2.1.1(ajv@8.17.1):
|
||||
optionalDependencies:
|
||||
@@ -19209,7 +19252,7 @@ snapshots:
|
||||
dependencies:
|
||||
tslib: 2.8.1
|
||||
|
||||
astro@5.5.2(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(rollup@4.40.2)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(typescript@5.8.3)(yaml@2.8.0):
|
||||
astro@5.5.2(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(rollup@4.40.2)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(typescript@5.8.3)(yaml@2.8.0):
|
||||
dependencies:
|
||||
'@astrojs/compiler': 2.11.0
|
||||
'@astrojs/internal-helpers': 0.6.1
|
||||
@@ -19261,8 +19304,8 @@ snapshots:
|
||||
unist-util-visit: 5.0.0
|
||||
unstorage: 1.15.0
|
||||
vfile: 6.0.3
|
||||
vite: 6.2.2(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitefu: 1.0.6(vite@6.2.2(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
vite: 6.2.2(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitefu: 1.0.6(vite@6.2.2(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
xxhash-wasm: 1.1.0
|
||||
yargs-parser: 21.1.1
|
||||
yocto-spinner: 0.2.1
|
||||
@@ -19863,7 +19906,7 @@ snapshots:
|
||||
|
||||
chrome-launcher@0.15.2:
|
||||
dependencies:
|
||||
'@types/node': 22.15.18
|
||||
'@types/node': 22.15.30
|
||||
escape-string-regexp: 4.0.0
|
||||
is-wsl: 2.2.0
|
||||
lighthouse-logger: 1.4.2
|
||||
@@ -19874,7 +19917,7 @@ snapshots:
|
||||
|
||||
chromium-edge-launcher@0.2.0:
|
||||
dependencies:
|
||||
'@types/node': 22.15.18
|
||||
'@types/node': 22.15.30
|
||||
escape-string-regexp: 4.0.0
|
||||
is-wsl: 2.2.0
|
||||
lighthouse-logger: 1.4.2
|
||||
@@ -20670,7 +20713,7 @@ snapshots:
|
||||
dependencies:
|
||||
'@types/cookie': 0.4.1
|
||||
'@types/cors': 2.8.17
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
accepts: 1.3.8
|
||||
base64id: 2.0.0
|
||||
cookie: 0.4.2
|
||||
@@ -22717,7 +22760,7 @@ snapshots:
|
||||
'@jest/environment': 29.7.0
|
||||
'@jest/fake-timers': 29.7.0
|
||||
'@jest/types': 29.6.3
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
jest-mock: 29.7.0
|
||||
jest-util: 29.7.0
|
||||
|
||||
@@ -22727,7 +22770,7 @@ snapshots:
|
||||
dependencies:
|
||||
'@jest/types': 29.6.3
|
||||
'@types/graceful-fs': 4.1.9
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
anymatch: 3.1.3
|
||||
fb-watchman: 2.0.2
|
||||
graceful-fs: 4.2.11
|
||||
@@ -22754,7 +22797,7 @@ snapshots:
|
||||
jest-mock@29.7.0:
|
||||
dependencies:
|
||||
'@jest/types': 29.6.3
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
jest-util: 29.7.0
|
||||
|
||||
jest-regex-util@29.6.3: {}
|
||||
@@ -22766,7 +22809,7 @@ snapshots:
|
||||
jest-util@29.7.0:
|
||||
dependencies:
|
||||
'@jest/types': 29.6.3
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
chalk: 4.1.2
|
||||
ci-info: 3.8.0
|
||||
graceful-fs: 4.2.11
|
||||
@@ -22783,13 +22826,13 @@ snapshots:
|
||||
|
||||
jest-worker@27.5.1:
|
||||
dependencies:
|
||||
'@types/node': 12.20.55
|
||||
'@types/node': 22.15.30
|
||||
merge-stream: 2.0.0
|
||||
supports-color: 8.1.1
|
||||
|
||||
jest-worker@29.7.0:
|
||||
dependencies:
|
||||
'@types/node': 22.15.18
|
||||
'@types/node': 22.15.30
|
||||
jest-util: 29.7.0
|
||||
merge-stream: 2.0.0
|
||||
supports-color: 8.1.1
|
||||
@@ -27297,14 +27340,14 @@ snapshots:
|
||||
optionalDependencies:
|
||||
'@swc/core': 1.7.23
|
||||
|
||||
ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.15.18)(typescript@5.8.3):
|
||||
ts-node@10.9.2(@swc/core@1.7.23)(@types/node@22.15.30)(typescript@5.8.3):
|
||||
dependencies:
|
||||
'@cspotcode/source-map-support': 0.8.1
|
||||
'@tsconfig/node10': 1.0.11
|
||||
'@tsconfig/node12': 1.0.11
|
||||
'@tsconfig/node14': 1.0.3
|
||||
'@tsconfig/node16': 1.0.4
|
||||
'@types/node': 22.15.18
|
||||
'@types/node': 22.15.30
|
||||
acorn: 8.12.1
|
||||
acorn-walk: 8.3.3
|
||||
arg: 4.1.3
|
||||
@@ -27732,13 +27775,13 @@ snapshots:
|
||||
'@types/unist': 3.0.3
|
||||
vfile-message: 4.0.2
|
||||
|
||||
vite-node@3.1.3(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0):
|
||||
vite-node@3.1.3(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0):
|
||||
dependencies:
|
||||
cac: 6.7.14
|
||||
debug: 4.4.0
|
||||
es-module-lexer: 1.7.0
|
||||
pathe: 2.0.3
|
||||
vite: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
transitivePeerDependencies:
|
||||
- '@types/node'
|
||||
- jiti
|
||||
@@ -27753,7 +27796,7 @@ snapshots:
|
||||
- tsx
|
||||
- yaml
|
||||
|
||||
vite-plugin-solid@2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.6)(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)):
|
||||
vite-plugin-solid@2.11.6(@testing-library/jest-dom@6.6.3)(solid-js@1.9.6)(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)):
|
||||
dependencies:
|
||||
'@babel/core': 7.27.1
|
||||
'@types/babel__core': 7.20.5
|
||||
@@ -27761,14 +27804,14 @@ snapshots:
|
||||
merge-anything: 5.1.7
|
||||
solid-js: 1.9.6
|
||||
solid-refresh: 0.6.3(solid-js@1.9.6)
|
||||
vite: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitefu: 1.0.5(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
vite: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vitefu: 1.0.5(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0))
|
||||
optionalDependencies:
|
||||
'@testing-library/jest-dom': 6.6.3
|
||||
transitivePeerDependencies:
|
||||
- supports-color
|
||||
|
||||
vite-prerender-plugin@0.5.10(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)):
|
||||
vite-prerender-plugin@0.5.10(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)):
|
||||
dependencies:
|
||||
kolorist: 1.8.0
|
||||
magic-string: 0.30.17
|
||||
@@ -27776,28 +27819,28 @@ snapshots:
|
||||
simple-code-frame: 1.3.0
|
||||
source-map: 0.7.4
|
||||
stack-trace: 1.0.0-pre2
|
||||
vite: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
|
||||
vite@5.4.14(@types/node@22.15.18)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2):
|
||||
vite@5.4.14(@types/node@22.15.30)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2):
|
||||
dependencies:
|
||||
esbuild: 0.21.5
|
||||
postcss: 8.4.49
|
||||
rollup: 4.40.2
|
||||
optionalDependencies:
|
||||
'@types/node': 22.15.18
|
||||
'@types/node': 22.15.30
|
||||
fsevents: 2.3.3
|
||||
less: 4.2.0
|
||||
sass: 1.77.8
|
||||
stylus: 0.56.0
|
||||
terser: 5.39.2
|
||||
|
||||
vite@6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0):
|
||||
vite@6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0):
|
||||
dependencies:
|
||||
esbuild: 0.24.2
|
||||
postcss: 8.5.3
|
||||
rollup: 4.40.2
|
||||
optionalDependencies:
|
||||
'@types/node': 22.15.18
|
||||
'@types/node': 22.15.30
|
||||
fsevents: 2.3.3
|
||||
jiti: 2.4.2
|
||||
less: 4.2.0
|
||||
@@ -27806,13 +27849,13 @@ snapshots:
|
||||
terser: 5.39.2
|
||||
yaml: 2.8.0
|
||||
|
||||
vite@6.2.2(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0):
|
||||
vite@6.2.2(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0):
|
||||
dependencies:
|
||||
esbuild: 0.25.2
|
||||
postcss: 8.5.3
|
||||
rollup: 4.40.0
|
||||
optionalDependencies:
|
||||
'@types/node': 22.15.18
|
||||
'@types/node': 22.15.30
|
||||
fsevents: 2.3.3
|
||||
jiti: 2.4.2
|
||||
less: 4.2.0
|
||||
@@ -27821,7 +27864,7 @@ snapshots:
|
||||
terser: 5.39.2
|
||||
yaml: 2.8.0
|
||||
|
||||
vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0):
|
||||
vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0):
|
||||
dependencies:
|
||||
esbuild: 0.25.4
|
||||
fdir: 6.4.4(picomatch@4.0.2)
|
||||
@@ -27830,7 +27873,7 @@ snapshots:
|
||||
rollup: 4.40.2
|
||||
tinyglobby: 0.2.13
|
||||
optionalDependencies:
|
||||
'@types/node': 22.15.18
|
||||
'@types/node': 22.15.30
|
||||
fsevents: 2.3.3
|
||||
jiti: 2.4.2
|
||||
less: 4.2.0
|
||||
@@ -27839,23 +27882,23 @@ snapshots:
|
||||
terser: 5.39.2
|
||||
yaml: 2.8.0
|
||||
|
||||
vitefu@0.2.5(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0)):
|
||||
vitefu@0.2.5(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0)):
|
||||
optionalDependencies:
|
||||
vite: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
|
||||
vitefu@1.0.5(vite@6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)):
|
||||
vitefu@1.0.5(vite@6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)):
|
||||
optionalDependencies:
|
||||
vite: 6.1.6(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite: 6.1.6(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
|
||||
vitefu@1.0.5(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)):
|
||||
vitefu@1.0.5(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)):
|
||||
optionalDependencies:
|
||||
vite: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
|
||||
vitefu@1.0.6(vite@6.2.2(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)):
|
||||
vitefu@1.0.6(vite@6.2.2(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)):
|
||||
optionalDependencies:
|
||||
vite: 6.2.2(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite: 6.2.2(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
|
||||
vitepress@1.6.3(@algolia/client-search@5.25.0)(@types/node@22.15.18)(@types/react@18.3.21)(axios@1.7.4)(fuse.js@6.6.2)(less@4.2.0)(postcss@8.5.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.8)(search-insights@2.8.2)(stylus@0.56.0)(terser@5.39.2)(typescript@5.8.3):
|
||||
vitepress@1.6.3(@algolia/client-search@5.25.0)(@types/node@22.15.30)(@types/react@18.3.21)(axios@1.7.4)(fuse.js@6.6.2)(less@4.2.0)(postcss@8.5.3)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(sass@1.77.8)(search-insights@2.8.2)(stylus@0.56.0)(terser@5.39.2)(typescript@5.8.3):
|
||||
dependencies:
|
||||
'@docsearch/css': 3.8.2
|
||||
'@docsearch/js': 3.8.2(@algolia/client-search@5.25.0)(@types/react@18.3.21)(react-dom@18.2.0(react@18.2.0))(react@18.2.0)(search-insights@2.8.2)
|
||||
@@ -27864,7 +27907,7 @@ snapshots:
|
||||
'@shikijs/transformers': 2.5.0
|
||||
'@shikijs/types': 2.5.0
|
||||
'@types/markdown-it': 14.1.2
|
||||
'@vitejs/plugin-vue': 5.2.4(vite@5.4.14(@types/node@22.15.18)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2))(vue@3.5.14(typescript@5.8.3))
|
||||
'@vitejs/plugin-vue': 5.2.4(vite@5.4.14(@types/node@22.15.30)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2))(vue@3.5.14(typescript@5.8.3))
|
||||
'@vue/devtools-api': 7.7.6
|
||||
'@vue/shared': 3.5.14
|
||||
'@vueuse/core': 12.8.2(typescript@5.8.3)
|
||||
@@ -27873,7 +27916,7 @@ snapshots:
|
||||
mark.js: 8.11.1
|
||||
minisearch: 7.1.2
|
||||
shiki: 2.5.0
|
||||
vite: 5.4.14(@types/node@22.15.18)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)
|
||||
vite: 5.4.14(@types/node@22.15.30)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)
|
||||
vue: 3.5.14(typescript@5.8.3)
|
||||
optionalDependencies:
|
||||
postcss: 8.5.3
|
||||
@@ -27904,10 +27947,10 @@ snapshots:
|
||||
- typescript
|
||||
- universal-cookie
|
||||
|
||||
vitest@3.1.3(@types/debug@4.1.12)(@types/node@22.15.18)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0):
|
||||
vitest@3.1.3(@types/debug@4.1.12)(@types/node@22.15.30)(jiti@2.4.2)(jsdom@20.0.3)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0):
|
||||
dependencies:
|
||||
'@vitest/expect': 3.1.3
|
||||
'@vitest/mocker': 3.1.3(vite@6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0))
|
||||
'@vitest/mocker': 3.1.3(vite@6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(terser@5.39.2)(yaml@2.8.0))
|
||||
'@vitest/pretty-format': 3.1.3
|
||||
'@vitest/runner': 3.1.3
|
||||
'@vitest/snapshot': 3.1.3
|
||||
@@ -27924,12 +27967,12 @@ snapshots:
|
||||
tinyglobby: 0.2.13
|
||||
tinypool: 1.0.2
|
||||
tinyrainbow: 2.0.0
|
||||
vite: 6.3.4(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite-node: 3.1.3(@types/node@22.15.18)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite: 6.3.4(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
vite-node: 3.1.3(@types/node@22.15.30)(jiti@2.4.2)(less@4.2.0)(sass@1.77.8)(stylus@0.56.0)(terser@5.39.2)(yaml@2.8.0)
|
||||
why-is-node-running: 2.3.0
|
||||
optionalDependencies:
|
||||
'@types/debug': 4.1.12
|
||||
'@types/node': 22.15.18
|
||||
'@types/node': 22.15.30
|
||||
jsdom: 20.0.3
|
||||
transitivePeerDependencies:
|
||||
- jiti
|
||||
|
||||
@@ -4,13 +4,13 @@ import {
|
||||
readAllMetadata,
|
||||
readSvgDirectory,
|
||||
writeFile,
|
||||
} from '../tools/build-helpers/helpers.mjs';
|
||||
} from '../tools/build-helpers/helpers.ts';
|
||||
|
||||
const currentDir = getCurrentDirPath(import.meta.url);
|
||||
const ICONS_DIR = path.resolve(currentDir, '../icons');
|
||||
const icons = readAllMetadata(ICONS_DIR);
|
||||
const icons = await readAllMetadata(ICONS_DIR);
|
||||
|
||||
const svgFiles = readSvgDirectory(ICONS_DIR);
|
||||
const svgFiles = await readSvgDirectory(ICONS_DIR);
|
||||
|
||||
const iconNames = svgFiles.map((icon) => icon.split('.')[0]);
|
||||
|
||||
@@ -3,13 +3,17 @@ import {
|
||||
readSvgDirectory,
|
||||
getCurrentDirPath,
|
||||
readAllMetadata,
|
||||
} from '../tools/build-helpers/helpers.mjs';
|
||||
} from '../tools/build-helpers/helpers.ts';
|
||||
import { type IconMetadata } from '../tools/build-icons/types.ts';
|
||||
|
||||
const currentDir = getCurrentDirPath(import.meta.url);
|
||||
const ICONS_DIR = path.resolve(currentDir, '../icons');
|
||||
const icons = await readAllMetadata(ICONS_DIR);
|
||||
const icons = await readAllMetadata(ICONS_DIR) as Record<string, IconMetadata>;
|
||||
const CATEGORIES_DIR = path.resolve(currentDir, '../categories');
|
||||
const categories = await readAllMetadata(CATEGORIES_DIR);
|
||||
const categories = await readAllMetadata(CATEGORIES_DIR) as Record<string, {
|
||||
icon: string;
|
||||
name: string;
|
||||
}>;;
|
||||
|
||||
console.log('Reading all icons');
|
||||
|
||||
@@ -31,7 +35,7 @@ Object.keys(icons).forEach((iconName) => {
|
||||
console.error(`'${iconName}.svg' does not exist.`);
|
||||
error = true;
|
||||
}
|
||||
icon.categories.forEach((categoryName) => {
|
||||
icon.categories?.forEach((categoryName) => {
|
||||
if (typeof categories[categoryName] === 'undefined') {
|
||||
console.error(`Icon '${iconName}' refers to the non-existing category '${categoryName}'.`);
|
||||
error = true;
|
||||
@@ -41,7 +45,7 @@ Object.keys(icons).forEach((iconName) => {
|
||||
|
||||
Object.keys(categories).forEach((categoryName) => {
|
||||
const category = categories[categoryName];
|
||||
if (!category.icon) {
|
||||
if (!category?.icon) {
|
||||
console.error(`Category '${categoryName}' does not use an icon '${category.icon}'.`);
|
||||
error = true;
|
||||
} else if (typeof icons[category.icon] === 'undefined') {
|
||||
@@ -1,5 +1,5 @@
|
||||
import path from 'path';
|
||||
import { getCurrentDirPath, writeFileIfNotExists } from '../../tools/build-helpers/helpers.mjs';
|
||||
import { getCurrentDirPath, writeFileIfNotExists } from '../../tools/build-helpers/helpers.ts';
|
||||
|
||||
const currentDir = getCurrentDirPath(import.meta.url);
|
||||
const ICONS_DIR = path.resolve(currentDir, '../../icons');
|
||||
@@ -7,7 +7,7 @@ import {
|
||||
getCurrentDirPath,
|
||||
minifySvg,
|
||||
toPascalCase,
|
||||
} from '../tools/build-helpers/helpers.mjs';
|
||||
} from '../tools/build-helpers/helpers.ts';
|
||||
|
||||
const currentDir = getCurrentDirPath(import.meta.url);
|
||||
const ICONS_DIR = path.resolve(currentDir, '../icons');
|
||||
@@ -30,7 +30,7 @@ if (changedFiles.length === 0) {
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
const getImageTagsByFiles = (files, getBaseUrl, width) =>
|
||||
const getImageTagsByFiles = (files: string[], getBaseUrl: (file: string) => string, width?: number) =>
|
||||
files.map((file) => {
|
||||
const svgContent = fs.readFileSync(path.join(process.cwd(), file), 'utf-8');
|
||||
const strippedAttrsSVG = svgContent.replace(/<svg[^>]*>/, '<svg>');
|
||||
@@ -46,7 +46,7 @@ const getImageTagsByFiles = (files, getBaseUrl, width) =>
|
||||
const svgFiles = await readSvgDirectory(ICONS_DIR);
|
||||
const svgFilePaths = svgFiles.map((file) => `icons/${file}`);
|
||||
|
||||
const iconsFilteredByName = (search) => svgFilePaths.filter((file) => file.includes(search));
|
||||
const iconsFilteredByName = (search: string) => svgFilePaths.filter((file) => file.includes(search));
|
||||
|
||||
const cohesionRandomImageTags = getImageTagsByFiles(
|
||||
shuffleArray(svgFilePaths).slice(0, changedFiles.length),
|
||||
@@ -1,11 +1,11 @@
|
||||
import getArgumentOptions from 'minimist';
|
||||
import githubApi from './githubApi.mjs';
|
||||
import githubApi from './githubApi.mts';
|
||||
|
||||
const fetchCompareTags = (oldTag) =>
|
||||
const fetchCompareTags = (oldTag: string) =>
|
||||
githubApi(`https://api.github.com/repos/lucide-icons/lucide/compare/${oldTag}...main`);
|
||||
|
||||
const iconRegex = /icons\/(.*)\.svg/g;
|
||||
const iconTemplate = ({ name, pullNumber, author }) =>
|
||||
const iconTemplate = ({ name, pullNumber, author }: { name: string, pullNumber: number, author: string }) =>
|
||||
`- \`${name}\` (${pullNumber}) by @${author}`;
|
||||
|
||||
const topics = [
|
||||
@@ -47,7 +47,7 @@ const cliArguments = getArgumentOptions(process.argv.slice(2));
|
||||
}
|
||||
|
||||
const changedFiles = output.files.filter(
|
||||
({ filename }) => !filename.match(/docs\/(.*)|(.*)package\.json|tags.json/g),
|
||||
({ filename }: { filename: string }) => !filename.match(/docs\/(.*)|(.*)package\.json|tags.json/g),
|
||||
);
|
||||
|
||||
const commits = await Promise.all(changedFiles.map(fetchCommits));
|
||||
@@ -76,11 +76,11 @@ const cliArguments = getArgumentOptions(process.argv.slice(2));
|
||||
status,
|
||||
};
|
||||
})
|
||||
.filter(Boolean)
|
||||
.filter((commit): commit is NonNullable<typeof commit> => Boolean(commit))
|
||||
.filter(({ pullNumber }) => !!pullNumber);
|
||||
|
||||
const changelog = topics.map(({ title, filter, template }) => {
|
||||
const lines = mappedCommits.filter(filter).map(template);
|
||||
const lines = mappedCommits.filter(filter).map<string>(template);
|
||||
|
||||
if (lines.length) {
|
||||
return [`## ${title}`, ' ', ...lines, ' '];
|
||||
@@ -1,9 +1,9 @@
|
||||
import path from 'path';
|
||||
import { promises as fs } from 'fs';
|
||||
import { getCurrentDirPath, readSvgDirectory } from '../tools/build-helpers/helpers.mjs';
|
||||
import { getCurrentDirPath, readSvgDirectory } from '../tools/build-helpers/helpers.ts';
|
||||
|
||||
// This is a special case convertion NextJS uses for their modularize imports. We try to follow the same convention, to generate the same imports.
|
||||
function pascalToKebabNextJSFlavour(str) {
|
||||
function pascalToKebabNextJSFlavour(str: string) {
|
||||
return str
|
||||
.replace(/([a-z])([A-Z])/g, '$1-$2')
|
||||
.replace(/([A-Z]+)([A-Z][a-z])/g, '$1-$2')
|
||||
@@ -1,4 +1,4 @@
|
||||
const githubApi = async (endpoint) => {
|
||||
const githubApi = async (endpoint: string) => {
|
||||
const headers = new Headers();
|
||||
const username = 'ericfennis';
|
||||
const password = process.env.GITHUB_API_KEY;
|
||||
@@ -17,11 +17,11 @@ cspell.stdout.on('data', (data) => {
|
||||
data
|
||||
.toString()
|
||||
.split('\n')
|
||||
.forEach((line) => {
|
||||
.forEach((line: string) => {
|
||||
const match = line.match(regex);
|
||||
if (match) {
|
||||
const { line, message } = match.groups;
|
||||
console.log(`::error file=${fileList[line - 1]},line=1,column=1::${message}`);
|
||||
const { line, message } = match.groups ?? {};
|
||||
console.log(`::error file=${fileList[Number(line) - 1]},line=1,column=1::${message}`);
|
||||
}
|
||||
});
|
||||
});
|
||||
@@ -1,23 +0,0 @@
|
||||
import path from 'path';
|
||||
import categories from '../categories.json' with { type: 'json' };
|
||||
import {
|
||||
mergeArrays,
|
||||
writeFile,
|
||||
readAllMetadata,
|
||||
getCurrentDirPath,
|
||||
} from '../tools/build-helpers/helpers.mjs';
|
||||
|
||||
const currentDir = getCurrentDirPath(import.meta.url);
|
||||
const ICONS_DIR = path.resolve(currentDir, '../icons');
|
||||
const icons = readAllMetadata(ICONS_DIR);
|
||||
|
||||
Object.keys(categories).forEach((categoryName) => {
|
||||
categories[categoryName].forEach((iconName) => {
|
||||
icons[iconName].categories = mergeArrays(icons[iconName].categories, [categoryName]);
|
||||
});
|
||||
});
|
||||
|
||||
Object.keys(icons).forEach((iconName) => {
|
||||
const iconContent = JSON.stringify(icons[iconName], null, 2);
|
||||
writeFile(iconContent, `${iconName}.json`, path.resolve(currentDir, '../icons'));
|
||||
});
|
||||
@@ -1,25 +0,0 @@
|
||||
import path from 'path';
|
||||
import { writeFile, getCurrentDirPath, readAllMetadata } from '../tools/build-helpers/helpers.mjs';
|
||||
|
||||
const currentDir = getCurrentDirPath(import.meta.url);
|
||||
const ICONS_DIR = path.resolve(currentDir, '../icons');
|
||||
const icons = readAllMetadata(ICONS_DIR);
|
||||
|
||||
const newCategories = {};
|
||||
Object.keys(icons).forEach((iconName) => {
|
||||
icons[iconName].categories.forEach((categoryName) => {
|
||||
newCategories[categoryName] = newCategories[categoryName] || [];
|
||||
newCategories[categoryName].push(iconName);
|
||||
});
|
||||
});
|
||||
|
||||
const ordered = Object.keys(newCategories)
|
||||
.sort()
|
||||
.reduce((obj, key) => {
|
||||
obj[key] = newCategories[key];
|
||||
return obj;
|
||||
}, {});
|
||||
|
||||
const categoriesContent = JSON.stringify(ordered, null, 2);
|
||||
|
||||
writeFile(categoriesContent, 'categories.json', path.resolve(currentDir, '..'));
|
||||
@@ -1,27 +0,0 @@
|
||||
import path from 'path';
|
||||
import tags from '../tags.json' with { type: 'json' };
|
||||
import {
|
||||
readSvgDirectory,
|
||||
readAllMetadata,
|
||||
writeFile,
|
||||
mergeArrays,
|
||||
getCurrentDirPath,
|
||||
} from '../tools/build-helpers/helpers.mjs';
|
||||
|
||||
const currentDir = getCurrentDirPath(import.meta.url);
|
||||
const ICONS_DIR = path.resolve(currentDir, '../icons');
|
||||
const icons = readAllMetadata(ICONS_DIR);
|
||||
const svgFiles = readSvgDirectory(ICONS_DIR);
|
||||
|
||||
const iconNames = svgFiles.map((icon) => icon.split('.')[0]);
|
||||
|
||||
iconNames.forEach((iconName) => {
|
||||
icons[iconName] = icons[iconName] || {
|
||||
$schema: '../icon.schema.json',
|
||||
tags: [],
|
||||
categories: [],
|
||||
};
|
||||
icons[iconName].tags = mergeArrays(icons[iconName].tags, tags[iconName]);
|
||||
const iconContent = JSON.stringify(icons[iconName], null, 2);
|
||||
writeFile(iconContent, `${iconName}.json`, path.resolve(currentDir, '../icons'));
|
||||
});
|
||||
@@ -5,7 +5,7 @@ const svgFiles = process.argv.slice(2);
|
||||
|
||||
svgFiles.forEach(async (svgFile) => {
|
||||
console.log('Optimizing staged SVG file:', svgFile);
|
||||
const content = fs.readFileSync(svgFile);
|
||||
const content = fs.readFileSync(svgFile, 'utf-8');
|
||||
const svg = await processSvg(content, svgFile);
|
||||
fs.writeFileSync(svgFile, svg, 'utf-8');
|
||||
});
|
||||
@@ -1,15 +1,15 @@
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { readSvgDirectory, writeSvgFile } from '../tools/build-helpers/helpers.mjs';
|
||||
import processSvg from './render/processSvg.mjs';
|
||||
import { readSvgDirectory, writeSvgFile } from '../tools/build-helpers/helpers.ts';
|
||||
import processSvg from './render/processSvg.mts';
|
||||
|
||||
const ICONS_DIR = path.resolve(process.cwd(), 'icons');
|
||||
|
||||
console.log(`Optimizing SVGs...`);
|
||||
|
||||
const svgFiles = readSvgDirectory(ICONS_DIR);
|
||||
const svgFiles = await readSvgDirectory(ICONS_DIR);
|
||||
|
||||
svgFiles.forEach((svgFile) => {
|
||||
const content = fs.readFileSync(path.join(ICONS_DIR, svgFile));
|
||||
svgFiles.forEach((svgFile: string) => {
|
||||
const content = fs.readFileSync(path.join(ICONS_DIR, svgFile), 'utf-8');
|
||||
processSvg(content, svgFile).then((svg) => writeSvgFile(svgFile, ICONS_DIR, svg));
|
||||
});
|
||||
@@ -2,6 +2,7 @@ import path from 'path';
|
||||
import fs from 'fs';
|
||||
import { promisify } from 'util';
|
||||
import simpleGit from 'simple-git';
|
||||
import { IconMetadata } from '../../tools/build-icons/types';
|
||||
|
||||
/**
|
||||
* Renames an icon and adds the old name as an alias.
|
||||
@@ -11,10 +12,10 @@ import simpleGit from 'simple-git';
|
||||
* @param {boolean} logInfo
|
||||
* @param {boolean} addAlias
|
||||
*/
|
||||
export async function renameIcon(ICONS_DIR, oldName, newName, logInfo = true, addAlias = true) {
|
||||
export async function renameIcon(ICONS_DIR: string, oldName: string, newName: string, logInfo = true, addAlias = true) {
|
||||
const git = simpleGit();
|
||||
|
||||
async function fileExists(filePath) {
|
||||
async function fileExists(filePath: string) {
|
||||
try {
|
||||
await promisify(fs.access)(filePath);
|
||||
return true;
|
||||
@@ -44,7 +45,7 @@ export async function renameIcon(ICONS_DIR, oldName, newName, logInfo = true, ad
|
||||
await git.mv(oldJsonPath, newJsonPath);
|
||||
if (addAlias) {
|
||||
const json = fs.readFileSync(newJsonPath, 'utf8');
|
||||
const jsonData = JSON.parse(json);
|
||||
const jsonData: IconMetadata = JSON.parse(json);
|
||||
if (Array.isArray(jsonData.aliases)) {
|
||||
jsonData.aliases = jsonData.aliases.filter(
|
||||
(alias) => (typeof alias === 'string' ? alias : alias.name) !== newName,
|
||||
@@ -1,6 +1,6 @@
|
||||
import path from 'path';
|
||||
import { getCurrentDirPath } from '../../tools/build-helpers/helpers.mjs';
|
||||
import { renameIcon } from './renameIcon.function.mjs';
|
||||
import { getCurrentDirPath } from '../../tools/build-helpers/helpers.ts';
|
||||
import { renameIcon } from './renameIcon.function.mts';
|
||||
|
||||
async function main() {
|
||||
const oldName = path.basename(process.argv[2]).replace(/\.[^/.]+$/, '');
|
||||
@@ -20,7 +20,11 @@ async function main() {
|
||||
const ICONS_DIR = path.resolve(currentDir, '../../icons');
|
||||
await renameIcon(ICONS_DIR, oldName, newName);
|
||||
} catch (err) {
|
||||
console.error(err.message);
|
||||
if(err instanceof Error) {
|
||||
console.error(err.message);
|
||||
} else {
|
||||
console.error('An unexpected error occurred:', err);
|
||||
}
|
||||
process.exit(1);
|
||||
}
|
||||
}
|
||||
@@ -1,15 +1,17 @@
|
||||
import path from 'path';
|
||||
import { getCurrentDirPath, readSvgDirectory } from '../../tools/build-helpers/helpers.mjs';
|
||||
import { getCurrentDirPath, readSvgDirectory } from '../../tools/build-helpers/helpers.ts';
|
||||
import yargs from 'yargs/yargs';
|
||||
import { hideBin } from 'yargs/helpers';
|
||||
import { renameIcon } from './renameIcon.function.mjs';
|
||||
import { renameIcon } from './renameIcon.function.mts';
|
||||
import { type Arguments } from 'yargs';
|
||||
|
||||
async function main() {
|
||||
const currentDir = getCurrentDirPath(import.meta.url);
|
||||
const ICONS_DIR = path.resolve(currentDir, '../../icons');
|
||||
const svgFiles = readSvgDirectory(ICONS_DIR);
|
||||
const svgFiles = await readSvgDirectory(ICONS_DIR);
|
||||
const iconNames = svgFiles.map((icon) => icon.split('.')[0]).reverse();
|
||||
const argv = yargs(hideBin(process.argv))
|
||||
const argv = (yargs(hideBin(process.argv))
|
||||
// @ts-ignore
|
||||
.usage('$0 <pattern> <replacement>', 'Renames all icons matching a pattern', (yargs) => {
|
||||
yargs
|
||||
.positional('pattern', {
|
||||
@@ -28,9 +30,14 @@ async function main() {
|
||||
'dry-run': { type: 'boolean', default: false, alias: 'd' },
|
||||
'add-alias': { type: 'boolean', default: true, alias: 'a' },
|
||||
})
|
||||
.parse();
|
||||
.parse()) as unknown as Arguments<{
|
||||
pattern: string;
|
||||
replacement: string;
|
||||
dryRun: boolean;
|
||||
addAlias: boolean;
|
||||
}>;
|
||||
|
||||
const pattern = new RegExp(argv.pattern, 'g');
|
||||
const pattern = new RegExp(argv?.pattern, 'g');
|
||||
const replacement = argv.replacement.replaceAll(/\\([0-9]+)/g, (s, i) => `$${i}`);
|
||||
|
||||
if (!(pattern instanceof RegExp)) {
|
||||
@@ -47,7 +54,11 @@ async function main() {
|
||||
await renameIcon(ICONS_DIR, oldName, newName, false, argv.addAlias);
|
||||
}
|
||||
} catch (err) {
|
||||
if(err instanceof Error) {
|
||||
console.error(err.message);
|
||||
} else {
|
||||
console.error('An unexpected error occurred:', err);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import DEFAULT_ATTRS from '../../tools/build-icons/render/default-attrs.json' wi
|
||||
* @param {string} svg - An SVG string.
|
||||
* @returns {Promise<string>} An optimized svg
|
||||
*/
|
||||
async function optimizeSvg(svg, path) {
|
||||
async function optimizeSvg(svg: string, path: string) {
|
||||
const result = optimize(svg, {
|
||||
path,
|
||||
plugins: [
|
||||
@@ -38,10 +38,16 @@ async function optimizeSvg(svg, path) {
|
||||
* @param {string} svg - An SVG string.
|
||||
* @returns {string} An SVG string, included with the default attributes.
|
||||
*/
|
||||
function setAttrs(svg) {
|
||||
function setAttrs(svg: string) {
|
||||
const contents = parseSync(svg);
|
||||
|
||||
contents.attributes = DEFAULT_ATTRS;
|
||||
contents.attributes = {
|
||||
...DEFAULT_ATTRS,
|
||||
width: String(DEFAULT_ATTRS.width),
|
||||
height: String(DEFAULT_ATTRS.height),
|
||||
"stroke-width": String(DEFAULT_ATTRS['stroke-width']),
|
||||
...contents.attributes,
|
||||
};
|
||||
|
||||
return stringify(contents);
|
||||
}
|
||||
@@ -51,7 +57,7 @@ function setAttrs(svg) {
|
||||
* @param {string} svg An SVG string.
|
||||
* @returns {Promise<string>} An optimized svg
|
||||
*/
|
||||
function processSvg(svg, path) {
|
||||
function processSvg(svg: string, path: string) {
|
||||
return (
|
||||
optimizeSvg(svg, path)
|
||||
.then(setAttrs)
|
||||
@@ -29,23 +29,29 @@ const getUserName = pMemoize(
|
||||
);
|
||||
|
||||
// Check that a commit changes more than just the icon name
|
||||
const isCommitRelevant = async (hash, file) => {
|
||||
const isCommitRelevant = async (hash: string, file: string) => {
|
||||
const summary = await git.diffSummary(['--diff-filter=AM', `${hash}~1`, hash]);
|
||||
return summary.files.some(({ file: name }) => name === file);
|
||||
};
|
||||
|
||||
const getContributors = async (file, includeCoAuthors) => {
|
||||
const getContributors = async (file: string, includeCoAuthors?: boolean) => {
|
||||
const { all } = await git.log([`HEAD~${FETCH_DEPTH}..`, '--', file]);
|
||||
const commits = file.endsWith('.svg')
|
||||
? (
|
||||
await Promise.all(all.map((commit) => isCommitRelevant(commit.hash, file) && commit))
|
||||
await Promise.all(all.map(async (commit) => await isCommitRelevant(commit.hash, file) && commit))
|
||||
).filter(Boolean)
|
||||
: all;
|
||||
|
||||
const emails = new Map();
|
||||
for (let i = commits.length - 1; i >= 0; i -= 1) {
|
||||
const commit = commits[i];
|
||||
if (!IGNORED_COMMITS.includes(commit.hash)) {
|
||||
|
||||
if(!commit || !commit.author_email) {
|
||||
console.warn(`Skipping commit without author email: ${JSON.stringify(commit)}`);
|
||||
continue;
|
||||
}
|
||||
|
||||
if ("hash" in commit && !IGNORED_COMMITS.includes(commit.hash)) {
|
||||
if (!emails.has(commit.author_email)) {
|
||||
emails.set(commit.author_email, getUserName(commit));
|
||||
}
|
||||
@@ -55,8 +61,8 @@ const getContributors = async (file, includeCoAuthors) => {
|
||||
);
|
||||
// eslint-disable-next-line no-restricted-syntax
|
||||
for (const match of matches) {
|
||||
if (!emails.has(match.groups.email) && cache.has(match.groups.email)) {
|
||||
emails.set(match.groups.email, Promise.resolve(cache.get(match.groups.email)));
|
||||
if (!emails.has(match.groups?.email) && cache.has(match.groups?.email)) {
|
||||
emails.set(match.groups?.email, Promise.resolve(cache.get(match.groups?.email)));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -66,7 +72,7 @@ const getContributors = async (file, includeCoAuthors) => {
|
||||
return Promise.all(Array.from(emails.values()));
|
||||
};
|
||||
|
||||
const files = process.env.CHANGED_FILES.split(' ')
|
||||
const files = (process.env.CHANGED_FILES?.split(' ') ?? [])
|
||||
.map((file) => file.replace('.json', '.svg'))
|
||||
.filter((file, idx, arr) => arr.indexOf(file) === idx);
|
||||
|
||||
@@ -81,7 +87,7 @@ await getContributors('icons');
|
||||
await Promise.all(
|
||||
files.map(async (file) => {
|
||||
const jsonFile = path.join(process.cwd(), file.replace('.svg', '.json'));
|
||||
const json = JSON.parse(fs.readFileSync(jsonFile));
|
||||
const json = JSON.parse(fs.readFileSync(jsonFile, 'utf-8'));
|
||||
const { tags, categories, aliases, contributors: previousContributors, ...rest } = json;
|
||||
const contributors = [
|
||||
...(previousContributors || []),
|
||||
@@ -26,38 +26,63 @@ async function getReleaseMetaData() {
|
||||
return releaseMetaData;
|
||||
}
|
||||
|
||||
function convertReleaseMetaData(releaseMetaData) {
|
||||
return Object.entries(releaseMetaData)
|
||||
.map(([key, value]) => [key, addAttribute(value, 'name', key)])
|
||||
.map(([, value]) => value)
|
||||
type Releases = Record<string, ReleaseMetaData>;
|
||||
|
||||
type ReleaseMetaData = {
|
||||
createdRelease: {
|
||||
version: string;
|
||||
date: string;
|
||||
};
|
||||
changedRelease: {
|
||||
version: string;
|
||||
date: string;
|
||||
};
|
||||
};
|
||||
|
||||
type ReleaseMetaDataWithName = ReleaseMetaData & {
|
||||
name: string;
|
||||
};
|
||||
|
||||
function convertReleaseMetaData(releases: Releases) {
|
||||
return Object.entries(releases)
|
||||
.map(([key, data]) => ({
|
||||
...data,
|
||||
name: key,
|
||||
}))
|
||||
.sort((a, b) => sortMultiple(a, b, [sortByCreatedReleaseDate, sortByName]))
|
||||
.map((value, index) => addAttribute(value, 'index', index))
|
||||
.map((value, index) => addAttribute(value, 'unicode', index + startUnicode));
|
||||
.map((value, index) => ({ ...value, index }))
|
||||
.map((value, index) => ({
|
||||
...value,
|
||||
unicode: index + startUnicode,
|
||||
}));
|
||||
}
|
||||
|
||||
function addAttribute(obj, attribute, value) {
|
||||
obj[attribute] = value;
|
||||
return obj;
|
||||
}
|
||||
type CollatorFunction = (a: ReleaseMetaDataWithName, b: ReleaseMetaDataWithName) => number;
|
||||
|
||||
function sortMultiple(a, b, collators = []) {
|
||||
const comparison = collators.shift()(a, b);
|
||||
function sortMultiple(
|
||||
a: ReleaseMetaDataWithName,
|
||||
b: ReleaseMetaDataWithName,
|
||||
collators: CollatorFunction[] = [],
|
||||
) {
|
||||
const comparison = collators?.shift?.()?.(a, b) ?? 0;
|
||||
if (comparison === 0 && collators.length > 0) return sortMultiple(a, b, collators);
|
||||
return comparison;
|
||||
}
|
||||
|
||||
function sortByCreatedReleaseDate(a, b) {
|
||||
const dates = [a, b].map((value) => new Date(value.createdRelease.date).valueOf());
|
||||
return (dates[0] > dates[1]) - (dates[0] < dates[1]);
|
||||
function sortByCreatedReleaseDate(a: ReleaseMetaDataWithName, b: ReleaseMetaDataWithName) {
|
||||
const [dateA, dateB] = [a, b].map((value) => new Date(value.createdRelease.date).valueOf());
|
||||
return Number(dateA > dateB) - Number(dateA < dateB);
|
||||
}
|
||||
|
||||
function sortByName(a, b) {
|
||||
function sortByName(a: ReleaseMetaDataWithName, b: ReleaseMetaDataWithName) {
|
||||
return new Intl.Collator('en-US').compare(a.name, b.name);
|
||||
}
|
||||
|
||||
function getIconUnicode(name) {
|
||||
const { unicode } = releaseMetaData.find(({ name: iconname }) => iconname === name);
|
||||
return String.fromCharCode(unicode);
|
||||
function getIconUnicode(name: string): [string, number] {
|
||||
const { unicode } = releaseMetaData.find(({ name: iconName }) => iconName === name) ?? {
|
||||
unicode: startUnicode,
|
||||
};
|
||||
return [String.fromCharCode(unicode), startUnicode];
|
||||
}
|
||||
|
||||
async function init() {
|
||||
@@ -83,7 +108,7 @@ async function init() {
|
||||
generateInfoData: true,
|
||||
website: {
|
||||
title: 'Lucide',
|
||||
logo: null,
|
||||
logo: undefined,
|
||||
meta: {
|
||||
description: 'Lucide icons as TTF/EOT/WOFF/WOFF2/SVG.',
|
||||
keywords: 'Lucide,TTF,EOT,WOFF,WOFF2,SVG',
|
||||
@@ -3,9 +3,10 @@
|
||||
"description": "A internal used package to build the font.",
|
||||
"private": true,
|
||||
"version": "1.0.0",
|
||||
"main": "index.js",
|
||||
"main": "main.ts",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"start": "node ./main.mjs"
|
||||
"start": "node ./main.ts"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
@@ -14,5 +15,10 @@
|
||||
"fs-extra": "^11.2.0",
|
||||
"minimist": "^1.2.8",
|
||||
"svgtofont": "^6.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/fs-extra": "^11.0.4",
|
||||
"@types/minimist": "^1.2.5",
|
||||
"@types/node": "^22"
|
||||
}
|
||||
}
|
||||
|
||||
18
tools/build-font/tsconfig.json
Normal file
18
tools/build-font/tsconfig.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"strict": true,
|
||||
"declaration": true,
|
||||
"noEmitOnError": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"moduleResolution": "nodenext",
|
||||
"module": "nodenext",
|
||||
"target": "ESNext",
|
||||
"esModuleInterop": true,
|
||||
"lib": ["esnext"],
|
||||
"resolveJsonModule": true,
|
||||
"allowImportingTsExtensions": true,
|
||||
"noEmit": true,
|
||||
"sourceMap": true,
|
||||
"outDir": "./dist",
|
||||
},
|
||||
}
|
||||
@@ -1,20 +0,0 @@
|
||||
export * from './src/toCamelCase.mjs';
|
||||
export * from './src/toPascalCase.mjs';
|
||||
export * from './src/toKebabCase.mjs';
|
||||
export * from './src/resetFile.mjs';
|
||||
export * from './src/readFile.mjs';
|
||||
export * from './src/appendFile.mjs';
|
||||
export * from './src/writeFile.mjs';
|
||||
export * from './src/writeFileIfNotExists.mjs';
|
||||
export * from './src/readAllMetadata.mjs';
|
||||
export * from './src/readMetadata.mjs';
|
||||
export * from './src/readSvgDirectory.mjs';
|
||||
export * from './src/readSvg.mjs';
|
||||
export * from './src/writeSvgFile.mjs';
|
||||
export * from './src/hash.mjs';
|
||||
export * from './src/generateHashedKey.mjs';
|
||||
export * from './src/hasDuplicatedChildren.mjs';
|
||||
export * from './src/mergeArrays.mjs';
|
||||
export * from './src/getCurrentDirPath.mjs';
|
||||
export * from './src/minifySvg.mjs';
|
||||
export * from './src/shuffleArray.mjs';
|
||||
20
tools/build-helpers/helpers.ts
Normal file
20
tools/build-helpers/helpers.ts
Normal file
@@ -0,0 +1,20 @@
|
||||
export * from './src/toCamelCase.ts';
|
||||
export * from './src/toPascalCase.ts';
|
||||
export * from './src/toKebabCase.ts';
|
||||
export * from './src/resetFile.ts';
|
||||
export * from './src/readFile.ts';
|
||||
export * from './src/appendFile.ts';
|
||||
export * from './src/writeFile.ts';
|
||||
export * from './src/writeFileIfNotExists.ts';
|
||||
export * from './src/readAllMetadata.ts';
|
||||
export * from './src/readMetadata.ts';
|
||||
export * from './src/readSvgDirectory.ts';
|
||||
export * from './src/readSvg.ts';
|
||||
export * from './src/writeSvgFile.ts';
|
||||
export * from './src/hash.ts';
|
||||
export * from './src/generateHashedKey.ts';
|
||||
export * from './src/hasDuplicatedChildren.ts';
|
||||
export * from './src/mergeArrays.ts';
|
||||
export * from './src/getCurrentDirPath.ts';
|
||||
export * from './src/minifySvg.ts';
|
||||
export * from './src/shuffleArray.ts';
|
||||
@@ -3,9 +3,12 @@
|
||||
"private": true,
|
||||
"version": "1.0.0",
|
||||
"description": "A internal used package with helpers.",
|
||||
"main": "helpers.mjs",
|
||||
"types": "module",
|
||||
"main": "helpers.ts",
|
||||
"types": "helpers.ts",
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"type": "module"
|
||||
"type": "module",
|
||||
"devDependencies": {
|
||||
"@types/node": "^22"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,5 +9,8 @@ import path from 'path';
|
||||
* @param {string} fileName
|
||||
* @param {string} outputDirectory
|
||||
*/
|
||||
export const appendFile = (content, fileName, outputDirectory) =>
|
||||
fs.appendFile(path.join(outputDirectory, fileName), content, 'utf-8');
|
||||
export const appendFile = (
|
||||
content: string,
|
||||
fileName: string,
|
||||
outputDirectory: string,
|
||||
): Promise<void> => fs.appendFile(path.join(outputDirectory, fileName), content, 'utf-8');
|
||||
@@ -1,5 +1,5 @@
|
||||
/* eslint-disable import/prefer-default-export */
|
||||
import { hash } from './hash.mjs';
|
||||
import { hash } from './hash.ts';
|
||||
|
||||
/**
|
||||
* Generate Hashed string based on name and attributes
|
||||
@@ -9,4 +9,10 @@ import { hash } from './hash.mjs';
|
||||
* @param {object} seed.attributes An object of SVGElement Attrbutes
|
||||
* @returns {string} A hashed string of 6 characters
|
||||
*/
|
||||
export const generateHashedKey = ({ name, attributes }) => hash(JSON.stringify([name, attributes]));
|
||||
export const generateHashedKey = ({
|
||||
name,
|
||||
attributes,
|
||||
}: {
|
||||
name: string;
|
||||
attributes: Record<string, unknown>;
|
||||
}): string => hash(JSON.stringify([name, attributes]));
|
||||
@@ -8,4 +8,5 @@ import { fileURLToPath } from 'url';
|
||||
* @param {string} currentPath
|
||||
* @returns {string}
|
||||
*/
|
||||
export const getCurrentDirPath = (currentPath) => path.dirname(fileURLToPath(currentPath));
|
||||
export const getCurrentDirPath = (currentPath: string): string =>
|
||||
path.dirname(fileURLToPath(currentPath));
|
||||
@@ -1,5 +1,5 @@
|
||||
/* eslint-disable import/prefer-default-export */
|
||||
import { generateHashedKey } from './generateHashedKey.mjs';
|
||||
import { generateHashedKey } from './generateHashedKey.ts';
|
||||
|
||||
/**
|
||||
* Checks if array of items contains duplicated items
|
||||
@@ -7,7 +7,9 @@ import { generateHashedKey } from './generateHashedKey.mjs';
|
||||
* @param {array} children an array of items
|
||||
* @returns {Boolean} if items contains duplicated items.
|
||||
*/
|
||||
export const hasDuplicatedChildren = (children) => {
|
||||
export const hasDuplicatedChildren = (
|
||||
children: Array<{ name: string; attributes: Record<string, unknown> }>,
|
||||
): boolean => {
|
||||
const hashedKeys = children.map(generateHashedKey);
|
||||
|
||||
return !hashedKeys.every(
|
||||
@@ -6,7 +6,7 @@
|
||||
* @param {number} seed
|
||||
* @returns {string} A hashed string of 6 characters
|
||||
*/
|
||||
export const hash = (string, seed = 5381) => {
|
||||
export const hash = (string: string, seed: number = 5381): string => {
|
||||
let i = string.length;
|
||||
|
||||
while (i) {
|
||||
@@ -6,7 +6,7 @@
|
||||
* @param {array} b
|
||||
* @returns {array}
|
||||
*/
|
||||
export const mergeArrays = (a, b) => {
|
||||
export const mergeArrays = <T>(a: T[], b: T[]): T[] => {
|
||||
a = a.concat(b);
|
||||
a = a.filter((i, p) => a.indexOf(i) === p);
|
||||
return a;
|
||||
@@ -5,7 +5,7 @@
|
||||
* @param {string} string
|
||||
* @returns string
|
||||
*/
|
||||
export function minifySvg(string) {
|
||||
export function minifySvg(string: string): string {
|
||||
return string
|
||||
? string
|
||||
.replace(/>[\r\n ]+</g, '><')
|
||||
@@ -1,7 +1,6 @@
|
||||
/* eslint-disable import/prefer-default-export */
|
||||
import fs from 'fs/promises';
|
||||
import path from 'path';
|
||||
import { readMetadata } from './readMetadata.mjs';
|
||||
import { readMetadata } from './readMetadata.ts';
|
||||
|
||||
/**
|
||||
* Reads metadata from the icons/categories directories
|
||||
@@ -9,7 +8,7 @@ import { readMetadata } from './readMetadata.mjs';
|
||||
* @param {string} directory
|
||||
* @returns {object} A map of icon or category metadata
|
||||
*/
|
||||
export const readAllMetadata = async (directory) => {
|
||||
export const readAllMetadata = async (directory: string): Promise<Record<string, unknown>> => {
|
||||
const directoryContent = await fs.readdir(directory);
|
||||
|
||||
const metaDataPromises = directoryContent
|
||||
@@ -8,4 +8,5 @@ import path from 'path';
|
||||
* @param {string} path
|
||||
* @returns {string} The contents of a file
|
||||
*/
|
||||
export const readFile = (path) => fs.readFile(path.resolve(__dirname, '../', path), 'utf-8');
|
||||
export const readFile = (filePath: string): Promise<string | Buffer> =>
|
||||
fs.readFile(path.resolve(__dirname, '../', filePath), 'utf-8');
|
||||
@@ -1,16 +0,0 @@
|
||||
/* eslint-disable import/prefer-default-export */
|
||||
import fs from 'fs/promises';
|
||||
import path from 'path';
|
||||
|
||||
/**
|
||||
* Reads metadata for an icon or category
|
||||
*
|
||||
* @param {string} fileName
|
||||
* @param {string} directory
|
||||
* @returns {object} The metadata for the icon or category
|
||||
*/
|
||||
export const readMetadata = async (fileName, directory) => {
|
||||
const metadataFileContent = await fs.readFile(path.join(directory, fileName), 'utf-8');
|
||||
|
||||
return JSON.parse(metadataFileContent);
|
||||
};
|
||||
23
tools/build-helpers/src/readMetadata.ts
Normal file
23
tools/build-helpers/src/readMetadata.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
/* eslint-disable import/prefer-default-export */
|
||||
import fs from 'fs/promises';
|
||||
import path from 'path';
|
||||
|
||||
/**
|
||||
* Reads metadata for an icon or category
|
||||
*
|
||||
* @param {string} fileName
|
||||
* @param {string} directory
|
||||
* @returns {object} The metadata for the icon or category
|
||||
*/
|
||||
export const readMetadata = async (fileName: string, directory: string): Promise<unknown> => {
|
||||
let metadataFileContent: string | Buffer = await fs.readFile(
|
||||
path.join(directory, fileName),
|
||||
'utf-8',
|
||||
);
|
||||
|
||||
if (Buffer.isBuffer(metadataFileContent)) {
|
||||
metadataFileContent = metadataFileContent.toString('utf-8');
|
||||
}
|
||||
|
||||
return JSON.parse(metadataFileContent);
|
||||
};
|
||||
@@ -8,5 +8,5 @@ import path from 'path';
|
||||
* @param {string} fileName
|
||||
* @param {string} directory
|
||||
*/
|
||||
export const readSvg = (fileName, directory) =>
|
||||
export const readSvg = (fileName: string, directory: string): Promise<string> =>
|
||||
fs.readFile(path.join(directory, fileName), 'utf-8');
|
||||
@@ -1,4 +1,5 @@
|
||||
/* eslint-disable import/prefer-default-export */
|
||||
import { type PathLike } from 'fs';
|
||||
import fs from 'fs/promises';
|
||||
import path from 'path';
|
||||
|
||||
@@ -9,7 +10,10 @@ import path from 'path';
|
||||
* @param {string} fileExtension
|
||||
* @returns {array} An array of file paths containing svgs
|
||||
*/
|
||||
export const readSvgDirectory = async (directory, fileExtension = '.svg') => {
|
||||
export const readSvgDirectory = async (
|
||||
directory: PathLike,
|
||||
fileExtension: string = '.svg',
|
||||
): Promise<string[]> => {
|
||||
const directoryContents = await fs.readdir(directory);
|
||||
|
||||
return directoryContents.filter((file) => path.extname(file) === fileExtension);
|
||||
@@ -8,5 +8,5 @@ import path from 'path';
|
||||
* @param {string} fileName
|
||||
* @param {string} outputDirectory
|
||||
*/
|
||||
export const resetFile = (fileName, outputDirectory) =>
|
||||
export const resetFile = (fileName: string, outputDirectory: string): Promise<void> =>
|
||||
fs.writeFile(path.join(outputDirectory, fileName), '', 'utf-8');
|
||||
@@ -3,7 +3,7 @@
|
||||
* @param {array} array
|
||||
* @returns {array}
|
||||
*/
|
||||
export const shuffleArray = (array) => {
|
||||
export const shuffleArray = <T>(array: T[]): T[] => {
|
||||
// eslint-disable-next-line no-plusplus
|
||||
for (let i = array.length - 1; i > 0; i--) {
|
||||
const j = Math.floor(Math.random() * (i + 1));
|
||||
@@ -5,7 +5,7 @@
|
||||
* @param {string} string
|
||||
* @returns {string} A camelized string
|
||||
*/
|
||||
export const toCamelCase = (string) =>
|
||||
export const toCamelCase = (string: string): string =>
|
||||
string.replace(/^([A-Z])|[\s-_]+(\w)/g, (match, p1, p2) =>
|
||||
p2 ? p2.toUpperCase() : p1.toLowerCase(),
|
||||
);
|
||||
@@ -5,4 +5,5 @@
|
||||
* @param {string} string
|
||||
* @returns {string} A kebabized string
|
||||
*/
|
||||
export const toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
|
||||
export const toKebabCase = (string: string): string =>
|
||||
string.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase();
|
||||
@@ -1,5 +1,5 @@
|
||||
/* eslint-disable import/prefer-default-export */
|
||||
import { toCamelCase } from './toCamelCase.mjs';
|
||||
import { toCamelCase } from './toCamelCase.ts';
|
||||
|
||||
/**
|
||||
* Converts string to PascalCase
|
||||
@@ -7,7 +7,7 @@ import { toCamelCase } from './toCamelCase.mjs';
|
||||
* @param {string} string
|
||||
* @returns {string} A pascalized string
|
||||
*/
|
||||
export const toPascalCase = (string) => {
|
||||
export const toPascalCase = (string: string): string => {
|
||||
const camelCase = toCamelCase(string);
|
||||
|
||||
return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
|
||||
@@ -9,5 +9,8 @@ import path from 'path';
|
||||
* @param {string} fileName
|
||||
* @param {string} outputDirectory
|
||||
*/
|
||||
export const writeFile = (content, fileName, outputDirectory) =>
|
||||
fs.writeFile(path.join(outputDirectory, fileName), content, 'utf-8');
|
||||
export const writeFile = (
|
||||
content: string,
|
||||
fileName: string,
|
||||
outputDirectory: string,
|
||||
): Promise<void> => fs.writeFile(path.join(outputDirectory, fileName), content, 'utf-8');
|
||||
@@ -1,7 +1,7 @@
|
||||
/* eslint-disable import/prefer-default-export */
|
||||
import fs from 'fs/promises';
|
||||
import fs from 'fs';
|
||||
import path from 'path';
|
||||
import { writeFile } from './writeFile.mjs';
|
||||
import { writeFile } from './writeFile.ts';
|
||||
|
||||
/**
|
||||
* writes content to a file if it does not exist
|
||||
@@ -10,7 +10,11 @@ import { writeFile } from './writeFile.mjs';
|
||||
* @param {string} fileName
|
||||
* @param {string} outputDirectory
|
||||
*/
|
||||
export const writeFileIfNotExists = (content, fileName, outputDirectory) => {
|
||||
export const writeFileIfNotExists = (
|
||||
content: string,
|
||||
fileName: string,
|
||||
outputDirectory: string,
|
||||
): void => {
|
||||
if (!fs.existsSync(path.join(outputDirectory, fileName))) {
|
||||
writeFile(content, fileName, outputDirectory);
|
||||
}
|
||||
@@ -9,5 +9,8 @@ import path from 'path';
|
||||
* @param {string} outputDirectory
|
||||
* @param {string} content
|
||||
*/
|
||||
export const writeSvgFile = (fileName, outputDirectory, content) =>
|
||||
fs.writeFile(path.join(outputDirectory, fileName), content, 'utf-8');
|
||||
export const writeSvgFile = (
|
||||
fileName: string,
|
||||
outputDirectory: string,
|
||||
content: string,
|
||||
): Promise<void> => fs.writeFile(path.join(outputDirectory, fileName), content, 'utf-8');
|
||||
18
tools/build-helpers/tsconfig.json
Normal file
18
tools/build-helpers/tsconfig.json
Normal file
@@ -0,0 +1,18 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"strict": true,
|
||||
"declaration": true,
|
||||
"noEmitOnError": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
"moduleResolution": "node",
|
||||
"module": "ESNext",
|
||||
"target": "ESNext",
|
||||
"esModuleInterop": true,
|
||||
"lib": ["esnext"],
|
||||
"resolveJsonModule": true,
|
||||
"allowImportingTsExtensions": true,
|
||||
"noEmit": true,
|
||||
"sourceMap": true,
|
||||
"outDir": "./dist",
|
||||
},
|
||||
}
|
||||
@@ -2,8 +2,23 @@ import path from 'path';
|
||||
import fs from 'fs';
|
||||
// eslint-disable-next-line import/no-extraneous-dependencies
|
||||
import { toPascalCase, resetFile, appendFile } from '@lucide/helpers';
|
||||
import deprecationReasonTemplate from '../../utils/deprecationReasonTemplate.mjs';
|
||||
import getExportString from './getExportString.mjs';
|
||||
import deprecationReasonTemplate from '../../utils/deprecationReasonTemplate.ts';
|
||||
import getExportString from './getExportString.ts';
|
||||
import type { IconMetadata, IconNode } from '../../types.ts';
|
||||
import { type INode } from 'svgson';
|
||||
|
||||
interface GenerateAliasesFilesOptions {
|
||||
iconNodes: Record<string, INode>;
|
||||
outputDirectory: string;
|
||||
fileExtension: string;
|
||||
iconFileExtension?: string;
|
||||
iconMetaData: Record<string, IconMetadata>;
|
||||
aliasImportFileExtension: string;
|
||||
aliasNamesOnly?: boolean;
|
||||
separateAliasesFile?: boolean;
|
||||
separateAliasesFileExtension?: string;
|
||||
showLog?: boolean;
|
||||
}
|
||||
|
||||
export default async function generateAliasesFiles({
|
||||
iconNodes,
|
||||
@@ -16,7 +31,7 @@ export default async function generateAliasesFiles({
|
||||
separateAliasesFile = false,
|
||||
separateAliasesFileExtension,
|
||||
showLog = true,
|
||||
}) {
|
||||
}: GenerateAliasesFilesOptions) {
|
||||
const iconsDistDirectory = path.join(outputDirectory, `icons`);
|
||||
const icons = Object.keys(iconNodes);
|
||||
|
||||
@@ -47,7 +62,7 @@ export default async function generateAliasesFiles({
|
||||
return {
|
||||
name: alias,
|
||||
deprecated: false,
|
||||
};
|
||||
} as const;
|
||||
}
|
||||
return alias;
|
||||
});
|
||||
@@ -1,8 +1,8 @@
|
||||
const getExportString = (
|
||||
componentName,
|
||||
iconName,
|
||||
aliasImportFileExtension,
|
||||
deprecated,
|
||||
componentName: string,
|
||||
iconName: string,
|
||||
aliasImportFileExtension: string,
|
||||
deprecated?: boolean,
|
||||
deprecationReason = '',
|
||||
) =>
|
||||
deprecated
|
||||
@@ -1,5 +1,14 @@
|
||||
import path from 'path';
|
||||
import { resetFile, appendFile } from '@lucide/helpers';
|
||||
import type { IconMetadata, IconNode } from '../types.ts';
|
||||
|
||||
interface GenerateDynamicImports {
|
||||
iconNodes: Record<string, IconNode>;
|
||||
outputDirectory: string;
|
||||
fileExtension: string;
|
||||
iconMetaData: Record<string, IconMetadata>;
|
||||
showLog?: boolean;
|
||||
}
|
||||
|
||||
export default async function generateDynamicImports({
|
||||
iconNodes,
|
||||
@@ -7,7 +16,7 @@ export default async function generateDynamicImports({
|
||||
fileExtension,
|
||||
iconMetaData,
|
||||
showLog = true,
|
||||
}) {
|
||||
}: GenerateDynamicImports) {
|
||||
const fileName = path.basename(`dynamicIconImports${fileExtension}`);
|
||||
const icons = Object.keys(iconNodes);
|
||||
|
||||
@@ -2,12 +2,13 @@ import path from 'path';
|
||||
|
||||
// eslint-disable-next-line import/no-extraneous-dependencies
|
||||
import { toPascalCase, toCamelCase, resetFile, appendFile } from '@lucide/helpers';
|
||||
import type { IconNode } from '../types.ts';
|
||||
|
||||
export default async function generateExportFile(
|
||||
inputEntry,
|
||||
outputDirectory,
|
||||
iconNodes,
|
||||
exportModuleNameCasing,
|
||||
inputEntry: string,
|
||||
outputDirectory: string,
|
||||
iconNodes: IconNode,
|
||||
exportModuleNameCasing: 'camel' | 'pascal',
|
||||
iconFileExtension = '',
|
||||
) {
|
||||
const fileName = path.basename(inputEntry);
|
||||
@@ -2,7 +2,22 @@ import fs from 'fs';
|
||||
import path from 'path';
|
||||
import prettier from 'prettier';
|
||||
import { readSvg, toPascalCase } from '@lucide/helpers';
|
||||
import deprecationReasonTemplate from '../utils/deprecationReasonTemplate.mjs';
|
||||
import deprecationReasonTemplate from '../utils/deprecationReasonTemplate.ts';
|
||||
import type { IconMetadata, IconNode, Path, TemplateFunction } from '../types.ts';
|
||||
import { type INode } from 'svgson';
|
||||
|
||||
interface GenerateIconFiles {
|
||||
iconNodes: Record<string, INode>;
|
||||
outputDirectory: Path;
|
||||
template: TemplateFunction;
|
||||
showLog?: boolean;
|
||||
iconFileExtension?: string;
|
||||
separateIconFileExport?: boolean;
|
||||
separateIconFileExportExtension?: string;
|
||||
pretty?: boolean;
|
||||
iconsDir: string;
|
||||
iconMetaData: Record<string, IconMetadata>;
|
||||
}
|
||||
|
||||
function generateIconFiles({
|
||||
iconNodes,
|
||||
@@ -15,7 +30,7 @@ function generateIconFiles({
|
||||
pretty = true,
|
||||
iconsDir,
|
||||
iconMetaData,
|
||||
}) {
|
||||
}: GenerateIconFiles) {
|
||||
const icons = Object.keys(iconNodes);
|
||||
const iconsDistDirectory = path.join(outputDirectory, `icons`);
|
||||
|
||||
@@ -27,13 +42,15 @@ function generateIconFiles({
|
||||
const location = path.join(iconsDistDirectory, `${iconName}${iconFileExtension}`);
|
||||
const componentName = toPascalCase(iconName);
|
||||
|
||||
let { children } = iconNodes[iconName];
|
||||
children = children.map(({ name, attributes }) => [name, attributes]);
|
||||
const children: IconNode = iconNodes[iconName].children.map(({ name, attributes }) => [
|
||||
name,
|
||||
attributes,
|
||||
]);
|
||||
|
||||
const getSvg = () => readSvg(`${iconName}.svg`, iconsDir);
|
||||
const { deprecated = false, toBeRemovedInVersion = null } = iconMetaData[iconName];
|
||||
const { deprecated = false, toBeRemovedInVersion = undefined } = iconMetaData[iconName];
|
||||
const deprecationReason = deprecated
|
||||
? deprecationReasonTemplate(iconMetaData[iconName].deprecationReason, {
|
||||
? deprecationReasonTemplate(iconMetaData[iconName]?.deprecationReason ?? '', {
|
||||
componentName,
|
||||
iconName,
|
||||
toBeRemovedInVersion,
|
||||
@@ -50,7 +67,7 @@ function generateIconFiles({
|
||||
});
|
||||
|
||||
const output = pretty
|
||||
? prettier.format(elementTemplate, {
|
||||
? await prettier.format(elementTemplate, {
|
||||
singleQuote: true,
|
||||
trailingComma: 'all',
|
||||
printWidth: 100,
|
||||
@@ -4,16 +4,37 @@ import path from 'path';
|
||||
import getArgumentOptions from 'minimist';
|
||||
|
||||
import { readSvgDirectory } from '@lucide/helpers';
|
||||
import renderIconsObject from './render/renderIconsObject.mjs';
|
||||
import generateIconFiles from './building/generateIconFiles.mjs';
|
||||
import generateExportsFile from './building/generateExportsFile.mjs';
|
||||
import renderIconsObject from './render/renderIconsObject.ts';
|
||||
import generateIconFiles from './building/generateIconFiles.ts';
|
||||
import generateExportsFile from './building/generateExportsFile.ts';
|
||||
|
||||
import generateAliasesFiles from './building/aliases/generateAliasesFiles.mjs';
|
||||
import generateAliasesFiles from './building/aliases/generateAliasesFiles.ts';
|
||||
// eslint-disable-next-line import/no-named-as-default, import/no-named-as-default-member
|
||||
import getIconMetaData from './utils/getIconMetaData.mjs';
|
||||
import generateDynamicImports from './building/generateDynamicImports.mjs';
|
||||
import getIconMetaData from './utils/getIconMetaData.ts';
|
||||
import generateDynamicImports from './building/generateDynamicImports.ts';
|
||||
|
||||
const cliArguments = getArgumentOptions(process.argv.slice(2));
|
||||
interface CliArguments {
|
||||
renderUniqueKey?: boolean;
|
||||
templateSrc?: string;
|
||||
silent?: boolean;
|
||||
iconFileExtension?: string;
|
||||
importImportFileExtension?: string;
|
||||
exportFileName?: string;
|
||||
exportModuleNameCasing?: 'camel' | 'pascal';
|
||||
withAliases?: boolean;
|
||||
aliasNamesOnly?: boolean;
|
||||
withDynamicImports?: boolean;
|
||||
separateAliasesFile?: boolean;
|
||||
separateAliasesFileExtension?: string;
|
||||
separateIconFileExport?: boolean;
|
||||
separateIconFileExportExtension?: string;
|
||||
aliasesFileExtension?: string;
|
||||
aliasImportFileExtension?: string;
|
||||
pretty?: boolean;
|
||||
output: string | undefined;
|
||||
}
|
||||
|
||||
const cliArguments = getArgumentOptions(process.argv.slice(2)) as unknown as CliArguments;
|
||||
|
||||
const ICONS_DIR = path.resolve(process.cwd(), '../../icons');
|
||||
const OUTPUT_DIR = path.resolve(process.cwd(), cliArguments.output || '../build');
|
||||
@@ -64,7 +85,7 @@ async function buildIcons() {
|
||||
iconFileExtension,
|
||||
separateIconFileExport,
|
||||
separateIconFileExportExtension,
|
||||
pretty: JSON.parse(pretty),
|
||||
pretty: JSON.parse(String(pretty)),
|
||||
iconsDir: ICONS_DIR,
|
||||
iconMetaData,
|
||||
});
|
||||
@@ -1,3 +1,3 @@
|
||||
export { default as getAliases } from './utils/getAliases.mjs';
|
||||
export { default as getIconMetaData } from './utils/getIconMetaData.mjs';
|
||||
export { default as renderIconsObject } from './render/renderIconsObject.mjs';
|
||||
export { default as getAliases } from './utils/getAliases';
|
||||
export { default as getIconMetaData } from './utils/getIconMetaData';
|
||||
export { default as renderIconsObject } from './render/renderIconsObject';
|
||||
@@ -2,22 +2,38 @@
|
||||
"name": "@lucide/build-icons",
|
||||
"description": "A internal used package to build icon code files for the lucide icon library packages.",
|
||||
"version": "1.1.0",
|
||||
"main": "index.mjs",
|
||||
"main": "index.ts",
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"start": "node ./cli.mjs"
|
||||
"start": "node ./cli.ts"
|
||||
},
|
||||
"bin": {
|
||||
"build-icons": "./cli.mjs"
|
||||
"build-icons": "./cli.ts"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=23.0.0"
|
||||
"node": ">= 23"
|
||||
},
|
||||
"exports": {
|
||||
".": {
|
||||
"import": "./index.ts",
|
||||
"require": "./index.ts"
|
||||
},
|
||||
"./cli": {
|
||||
"import": "./cli.ts",
|
||||
"require": "./cli.ts"
|
||||
},
|
||||
"./utils/*": {
|
||||
"import": "./utils/*.ts",
|
||||
"require": "./utils/*.ts"
|
||||
}
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"devDependencies": {
|
||||
"@lucide/helpers": "workspace:*"
|
||||
"@lucide/helpers": "workspace:*",
|
||||
"@types/minimist": "^1.2.5",
|
||||
"@types/node": "^22"
|
||||
},
|
||||
"dependencies": {
|
||||
"minimist": "^1.2.7",
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
import { basename } from 'path';
|
||||
import { parseSync } from 'svgson';
|
||||
import { type INode, parseSync } from 'svgson';
|
||||
import { generateHashedKey, readSvg, hasDuplicatedChildren } from '@lucide/helpers';
|
||||
|
||||
/**
|
||||
* Build an object in the format: `{ <name>: <contents> }`.
|
||||
* @param {string[]} svgFiles - A list of filenames.
|
||||
* @param {Function} getSvg - A function that returns the contents of an SVG file given a filename.
|
||||
* @param {string} iconsDirectory - The directory where the icons are stored.
|
||||
* @returns {Object}
|
||||
*/
|
||||
export default async function generateIconObject(
|
||||
svgFiles,
|
||||
iconsDirectory,
|
||||
svgFiles: string[],
|
||||
iconsDirectory: string,
|
||||
renderUniqueKey = false,
|
||||
) {
|
||||
const svgsContentPromises = svgFiles.map(async (svgFile) => {
|
||||
@@ -39,7 +39,7 @@ export default async function generateIconObject(
|
||||
|
||||
const svgsContents = await Promise.all(svgsContentPromises);
|
||||
|
||||
return svgsContents.reduce((icons, icon) => {
|
||||
return svgsContents.reduce<Record<string, INode>>((icons, icon) => {
|
||||
icons[icon.name] = icon.contents;
|
||||
return icons;
|
||||
}, {});
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"strict": false,
|
||||
"strict": true,
|
||||
"declaration": true,
|
||||
"noEmitOnError": true,
|
||||
"noFallthroughCasesInSwitch": true,
|
||||
@@ -8,10 +8,10 @@
|
||||
"module": "ESNext",
|
||||
"target": "ESNext",
|
||||
"esModuleInterop": true,
|
||||
"allowJs": true,
|
||||
"lib": ["esnext"],
|
||||
"resolveJsonModule": true,
|
||||
"allowImportingTsExtensions": true,
|
||||
"noEmit": true,
|
||||
"sourceMap": true,
|
||||
"outDir": "./dist",
|
||||
},
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user