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