Compare commits

...

3 Commits

Author SHA1 Message Date
it-is-not
7af26002a0 add icons (#1222) 2023-12-24 12:53:44 +01:00
CokaKoala
e71a776acc Fixed export maps, types, and packaging for lucide-svelte (#1707)
* add extensions for `NodeNext` support

* fixed exports map and replaced the packaging system for `@sveltejs/pacakge`

* lockfile

* ignore generated `.svelte-kit` dir

* no longer needed

* fixed main export

* fixed IconNode and IconProps types

* have icon props extend svg attributes

* build script for prepending the license to each `dist` file

* Update packages/lucide-svelte/scripts/addLicense.mjs

---------

Co-authored-by: Eric Fennis <eric.fennis@gmail.com>
2023-12-24 12:45:57 +01:00
Jakob Guddas
0a69fb9e52 Fix gavel gap (#1744)
* Fix `gavel` gap

* Update gavel.json
2023-12-24 12:26:02 +01:00
16 changed files with 250 additions and 179 deletions

20
icons/a-arrow-down.json Normal file
View File

@@ -0,0 +1,20 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"it-is-not",
"jguddas",
"danielbayley",
"ericfennis"
],
"tags": [
"letter",
"font size",
"text",
"formatting",
"smaller"
],
"categories": [
"text",
"design"
]
}

16
icons/a-arrow-down.svg Normal file
View File

@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3.5 13h6" />
<path d="m2 16 4.5-9 4.5 9" />
<path d="M18 7v9" />
<path d="m14 12 4 4 4-4" />
</svg>

After

Width:  |  Height:  |  Size: 318 B

21
icons/a-arrow-up.json Normal file
View File

@@ -0,0 +1,21 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"it-is-not",
"jguddas",
"danielbayley",
"ericfennis"
],
"tags": [
"letter",
"font size",
"text",
"formatting",
"larger",
"bigger"
],
"categories": [
"text",
"design"
]
}

16
icons/a-arrow-up.svg Normal file
View File

@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M3.5 13h6" />
<path d="m2 16 4.5-9 4.5 9" />
<path d="M18 16V7" />
<path d="m14 11 4-4 4 4" />
</svg>

After

Width:  |  Height:  |  Size: 319 B

19
icons/a-large-small.json Normal file
View File

@@ -0,0 +1,19 @@
{
"$schema": "../icon.schema.json",
"contributors": [
"it-is-not",
"jguddas",
"danielbayley",
"ericfennis"
],
"tags": [
"letter",
"font size",
"text",
"formatting"
],
"categories": [
"text",
"design"
]
}

16
icons/a-large-small.svg Normal file
View File

@@ -0,0 +1,16 @@
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="M21 14h-5" />
<path d="M16 16v-3.5a2.5 2.5 0 0 1 5 0V16" />
<path d="M4.5 13h6" />
<path d="m3 16 4.5-9 4.5 9" />
</svg>

After

Width:  |  Height:  |  Size: 338 B

View File

@@ -2,7 +2,8 @@
"$schema": "../icon.schema.json",
"contributors": [
"Andreto",
"ericfennis"
"ericfennis",
"jguddas"
],
"tags": [
"hammer",
@@ -12,4 +13,4 @@
"maps",
"tools"
]
}
}

View File

@@ -9,7 +9,7 @@
stroke-linecap="round"
stroke-linejoin="round"
>
<path d="m14 13-7.5 7.5c-.83.83-2.17.83-3 0 0 0 0 0 0 0a2.12 2.12 0 0 1 0-3L11 10" />
<path d="m14.5 12.5-8 8a2.119 2.119 0 1 1-3-3l8-8" />
<path d="m16 16 6-6" />
<path d="m8 8 6-6" />
<path d="m9 7 8 8" />

Before

Width:  |  Height:  |  Size: 396 B

After

Width:  |  Height:  |  Size: 364 B

View File

@@ -1 +1,2 @@
src/icons/*.svelte
.svelte-kit

View File

@@ -23,20 +23,20 @@
],
"author": "Eric Fennis",
"type": "module",
"main": "dist/esm/lucide-svelte.js",
"main": "dist/lucide-svelte.js",
"exports": {
".": {
"svelte": "./dist/svelte/lucide-svelte.js",
"types": "./dist/lucide-svelte.d.ts",
"default": "./dist/esm/lucide-svelte.js"
"svelte": "./dist/lucide-svelte.js",
"default": "./dist/lucide-svelte.js"
},
"./icons": {
"svelte": "./dist/svelte/icons/index.js",
"default": "./dist/esm/icons/index.js"
"types": "./dist/lucide-svelte.d.ts",
"svelte": "./dist/lucide-svelte.js"
},
"./icons/*": {
"svelte": "./dist/svelte/icons/*.svelte",
"default": "./dist/esm/icons/*.js"
"types": "./dist/icons/*.svelte.d.ts",
"svelte": "./dist/icons/*.svelte"
}
},
"typings": "dist/lucide-svelte.d.ts",
@@ -45,31 +45,26 @@
"dist"
],
"scripts": {
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:bundles && pnpm build:strip && pnpm build:types",
"build": "pnpm clean && pnpm copy:license && pnpm build:icons && pnpm build:package && pnpm build:license",
"copy:license": "cp ../../LICENSE ./LICENSE",
"clean": "rm -rf dist && rm -rf stats && rm -rf ./src/icons/*.svelte && rm -f index.js",
"build:icons": "build-icons --output=./src --templateSrc=./scripts/exportTemplate.mjs --exportFileName=index.ts --iconFileExtension=.svelte --importImportFileExtension=.svelte --withAliases --aliasesFileExtension=.ts --aliasImportFileExtension=.svelte --pretty=false",
"build:types": "node ./scripts/buildTypes.mjs",
"build:bundles": "rollup -c ./rollup.config.mjs",
"build:strip": "svelte-strip strip src/ dist/svelte",
"build:package": "svelte-package --input ./src",
"build:license": "node ./scripts/addLicense.mjs",
"test": "vitest run",
"version": "pnpm version --git-tag-version=false"
},
"devDependencies": {
"@lucide/build-icons": "workspace:*",
"@lucide/rollup-plugins": "workspace:*",
"@rollup/plugin-node-resolve": "^15.1.0",
"@sveltejs/package": "^2.2.3",
"@sveltejs/vite-plugin-svelte": "^2.4.2",
"@testing-library/jest-dom": "^6.1.4",
"@testing-library/svelte": "^4.0.2",
"@tsconfig/svelte": "^5.0.0",
"jsdom": "^20.0.3",
"rollup": "^3.25.3",
"rollup-plugin-svelte": "^7.1.6",
"svelte": "^4.0.1",
"svelte-check": "^3.4.4",
"svelte-preprocess": "^5.0.4",
"svelte-strip": "^2.0.0",
"typescript": "^5.1.6",
"vite": "^4.4.12",
"vitest": "^0.32.2"

View File

@@ -1,84 +0,0 @@
/* eslint-disable import/no-extraneous-dependencies */
import svelte from 'rollup-plugin-svelte';
import pkg from './package.json' assert { type: 'json' };
import plugins from '@lucide/rollup-plugins';
import resolve from '@rollup/plugin-node-resolve';
import svelteConfig from './svelte.config.js';
const packageName = 'LucideSvelte';
const outputFileName = 'lucide-svelte';
const outputDir = 'dist';
const inputs = ['./src/lucide-svelte.ts'];
const bundles = [
{
format: 'esm',
inputs,
outputDir,
preserveModules: true,
preserveModulesRoot: 'src',
},
{
format: 'svelte',
inputs,
outputDir,
preserveModules: true,
},
];
const configs = bundles
.map(({ inputs, outputDir, format, minify, preserveModules, preserveModulesRoot }) =>
inputs.map(input => ({
input,
plugins: [
...(format !== 'svelte' ? [
svelte({
...svelteConfig,
include: 'src/**/*.svelte',
compilerOptions: {
dev: false,
css: 'external',
hydratable: true,
},
emitCss: false,
}),
resolve({
browser: true,
exportConditions: ['svelte'],
extensions: ['.svelte']
}),
] : []),
...plugins(pkg, minify),
],
external: format === 'svelte' ? [/\.svelte/] : ['svelte', 'svelte/internal'],
output: {
name: packageName,
...(preserveModules
? {
dir: `${outputDir}/${format}`,
}
: {
file: `${outputDir}/${format}/${outputFileName}${minify ? '.min' : ''}.js`,
}),
preserveModules,
preserveModulesRoot,
format: format === 'svelte' ? 'esm' : format,
sourcemap: true,
globals: {
svelte: 'svelte',
},
entryFileNames: (chunkInfo) => {
if (chunkInfo.name.includes('node_modules')) {
const [pathToReplace, directory] = chunkInfo.name.match(/.*\/([^\/]+)\//);
const fileName = chunkInfo.name.replace(pathToReplace, '');
return `external/${directory}/${fileName}.js`;
}
return '[name].js';
}
},
})),
)
.flat();
export default configs;

View File

@@ -0,0 +1,55 @@
import { getCurrentDirPath } from '../../../scripts/helpers.mjs';
import { lstatSync } from 'fs';
import { readdir, readFile, writeFile } from 'fs/promises';
import path from 'path';
import pkg from '../package.json' assert { type: 'json' };
const BANNER = `@license ${pkg.name} v${pkg.version} - ${pkg.license}
This source code is licensed under the ${pkg.license} license.
See the LICENSE file in the root directory of this source tree.`;
const currentDir = getCurrentDirPath(import.meta.url);
const targetDirectory = path.join(currentDir, '../dist');
const files = await readdir(targetDirectory, {
recursive: true,
encoding: 'utf-8',
});
for (const file of files) {
const filepath = path.join(targetDirectory, file);
const filestat = lstatSync(filepath);
if (filestat.isFile() === false || filestat.isDirectory()) continue;
const contents = await readFile(filepath, { encoding: 'utf-8' });
const ext = path.extname(filepath);
let license;
if (/\.(js|mjs|cjs|ts)/.test(ext)) {
license = getJSBanner();
}
if (/\.svelte/.test(ext)) {
license = getSvelteBanner();
}
if (license) {
await writeFile(filepath, license + contents, { encoding: 'utf-8' });
}
}
function getJSBanner() {
return `/**
* ${BANNER}
*/
\n`;
}
function getSvelteBanner() {
return `<!--
${BANNER}
-->
\n`;
}

View File

@@ -3,7 +3,9 @@ export default ({ iconName, children }) =>
`\
<script lang="ts">
import Icon from '../Icon.svelte';
import type { IconNode } from '../types';
import type { IconNode, IconProps } from '../types.js';
type $$Props = IconProps;
const iconNode: IconNode = ${JSON.stringify(children)};
</script>

View File

@@ -1,4 +1,4 @@
export * from './icons';
export * as icons from './icons';
export * from './aliases';
export { default as defaultAttributes } from './defaultAttributes'
export * from './icons/index.js';
export * as icons from './icons/index.js';
export * from './aliases.js';
export { default as defaultAttributes } from './defaultAttributes.js';

View File

@@ -1,5 +1,13 @@
/// <reference types="svelte" />
/// <reference types="svelte2tsx/svelte-jsx" />
import type { SVGAttributes, SvelteHTMLElements } from 'svelte/elements';
export type Attrs = svelte.JSX.SVGProps<SVGSVGElement>
export type IconNode = [elementName: keyof svelte.JSX.IntrinsicElements, attrs: Attrs][]
type SVGAttrs = SVGAttributes<SVGSVGElement>;
export type IconNode = [elementName: keyof SvelteHTMLElements, attrs: SVGAttrs][];
export interface IconProps extends SVGAttrs {
color?: string;
size?: number | string;
strokeWidth?: number | string;
absoluteStrokeWidth?: boolean;
class?: string;
}

119
pnpm-lock.yaml generated
View File

@@ -550,12 +550,9 @@ importers:
'@lucide/build-icons':
specifier: workspace:*
version: link:../../tools/build-icons
'@lucide/rollup-plugins':
specifier: workspace:*
version: link:../../tools/rollup-plugins
'@rollup/plugin-node-resolve':
specifier: ^15.1.0
version: 15.1.0(rollup@3.27.0)
'@sveltejs/package':
specifier: ^2.2.3
version: 2.2.3(svelte@4.1.2)(typescript@5.1.6)
'@sveltejs/vite-plugin-svelte':
specifier: ^2.4.2
version: 2.4.3(svelte@4.1.2)(vite@4.5.0)
@@ -571,12 +568,6 @@ importers:
jsdom:
specifier: ^20.0.3
version: 20.0.3
rollup:
specifier: ^3.25.3
version: 3.27.0
rollup-plugin-svelte:
specifier: ^7.1.6
version: 7.1.6(rollup@3.27.0)(svelte@4.1.2)
svelte:
specifier: ^4.0.1
version: 4.1.2
@@ -586,9 +577,6 @@ importers:
svelte-preprocess:
specifier: ^5.0.4
version: 5.0.4(svelte@4.1.2)(typescript@5.1.6)
svelte-strip:
specifier: ^2.0.0
version: 2.0.0(svelte@4.1.2)
typescript:
specifier: ^5.1.6
version: 5.1.6
@@ -8510,6 +8498,23 @@ packages:
resolution: {integrity: sha512-Gfkvwk9o9kE9r9XNBmJRfV8zONvXThnm1tcuojL04Uy5uRyqg93DC83lDebl0rocZCfKSjUv+fWYtMQmEDJldg==}
dev: false
/@sveltejs/package@2.2.3(svelte@4.1.2)(typescript@5.1.6):
resolution: {integrity: sha512-iZEC5qw+2RIjfIAHR3O+IeokJIjVM/ieoxPxj6YmZCwu5JKFADtC4jzjSUJ7GkCMUQ4HqE7u4/3cCxXBocxi8A==}
engines: {node: ^16.14 || >=18}
hasBin: true
peerDependencies:
svelte: ^3.44.0 || ^4.0.0
dependencies:
chokidar: 3.5.3
kleur: 4.1.5
sade: 1.8.1
semver: 7.5.4
svelte: 4.1.2
svelte2tsx: 0.6.27(svelte@4.1.2)(typescript@5.1.6)
transitivePeerDependencies:
- typescript
dev: true
/@sveltejs/vite-plugin-svelte-inspector@1.0.3(@sveltejs/vite-plugin-svelte@2.4.3)(svelte@4.1.2)(vite@4.5.0):
resolution: {integrity: sha512-Khdl5jmmPN6SUsVuqSXatKpQTMIifoQPDanaxC84m9JxIibWvSABJyHpyys0Z+1yYrxY5TTEQm+6elh0XCMaOA==}
engines: {node: ^14.18.0 || >= 16}
@@ -12696,6 +12701,10 @@ packages:
resolution: {integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==}
engines: {node: '>=0.10'}
/dedent-js@1.0.1:
resolution: {integrity: sha512-OUepMozQULMLUmhxS95Vudo0jb0UchLimi3+pQ2plj61Fcy8axbP9hbiD4Sz6DPqn6XG3kfmziVfQ1rSys5AJQ==}
dev: true
/deep-eql@4.1.3:
resolution: {integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==}
engines: {node: '>=6'}
@@ -15339,16 +15348,6 @@ packages:
minimatch: 5.1.6
once: 1.4.0
/glob@9.3.5:
resolution: {integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==}
engines: {node: '>=16 || 14 >=14.17'}
dependencies:
fs.realpath: 1.0.0
minimatch: 8.0.4
minipass: 4.2.8
path-scurry: 1.10.1
dev: true
/global@4.4.0:
resolution: {integrity: sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w==}
dependencies:
@@ -17578,6 +17577,12 @@ packages:
get-func-name: 2.0.2
dev: true
/lower-case@2.0.2:
resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==}
dependencies:
tslib: 2.6.1
dev: true
/lru-cache@10.0.3:
resolution: {integrity: sha512-B7gr+F6MkqB3uzINHXNctGieGsRTMwIBgxkp0yq/5BwcuDzD4A8wQpHQW6vDAm1uKSLQghmRdD9sKqf2vJ1cEg==}
engines: {node: 14 || >=16.14}
@@ -18307,20 +18312,6 @@ packages:
dependencies:
brace-expansion: 2.0.1
/minimatch@7.4.6:
resolution: {integrity: sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==}
engines: {node: '>=10'}
dependencies:
brace-expansion: 2.0.1
dev: true
/minimatch@8.0.4:
resolution: {integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==}
engines: {node: '>=16 || 14 >=14.17'}
dependencies:
brace-expansion: 2.0.1
dev: true
/minimatch@9.0.1:
resolution: {integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==}
engines: {node: '>=16 || 14 >=14.17'}
@@ -18408,11 +18399,6 @@ packages:
dependencies:
yallist: 4.0.0
/minipass@4.2.8:
resolution: {integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==}
engines: {node: '>=8'}
dev: true
/minipass@5.0.0:
resolution: {integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==}
engines: {node: '>=8'}
@@ -18420,6 +18406,7 @@ packages:
/minipass@7.0.3:
resolution: {integrity: sha512-LhbbwCfz3vsb12j/WkWQPZfKTsgqIe1Nf/ti1pKjYESGLHIVjWU96G9/ljLH4F9mWNVhlQOm0VySdAWzf05dpg==}
engines: {node: '>=16 || 14 >=14.17'}
dev: false
/minisearch@6.3.0:
resolution: {integrity: sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==}
@@ -18741,6 +18728,13 @@ packages:
- supports-color
dev: true
/no-case@3.0.4:
resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==}
dependencies:
lower-case: 2.0.2
tslib: 2.6.1
dev: true
/nocache@3.0.4:
resolution: {integrity: sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==}
engines: {node: '>=12.0.0'}
@@ -19554,6 +19548,13 @@ packages:
engines: {node: '>= 0.8'}
dev: true
/pascal-case@3.1.2:
resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
dependencies:
no-case: 3.0.4
tslib: 2.6.1
dev: true
/pascalcase@0.1.1:
resolution: {integrity: sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==}
engines: {node: '>=0.10.0'}
@@ -19599,6 +19600,7 @@ packages:
dependencies:
lru-cache: 10.0.3
minipass: 7.0.3
dev: false
/path-to-regexp@0.1.7:
resolution: {integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==}
@@ -21247,11 +21249,6 @@ packages:
resolution: {integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==}
deprecated: https://github.com/lydell/resolve-url#deprecated
/resolve.exports@2.0.2:
resolution: {integrity: sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==}
engines: {node: '>=10'}
dev: true
/resolve@1.22.0:
resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
hasBin: true
@@ -22834,28 +22831,16 @@ packages:
typescript: 5.1.6
dev: true
/svelte-strip@2.0.0(svelte@4.1.2):
resolution: {integrity: sha512-RZ8swt0ddE22ebZvFpMhW/x9rLIAwCZtWWnb5oohQEYcyuxzvzXwxImjFQ8DINXXMbvw6PB/NfnzDmHqMVrdbw==}
hasBin: true
/svelte2tsx@0.6.27(svelte@4.1.2)(typescript@5.1.6):
resolution: {integrity: sha512-E1uPW1o6VsbRz+nUk3fznZ2lSmCITAJoNu8AYefWSvIwE2pSB01i5sId4RMbWNzfcwCQl1DcgGShCPcldl4rvg==}
peerDependencies:
svelte: ^3.0.0
svelte: ^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0
typescript: ^4.9.4 || ^5.0.0
dependencies:
glob: 9.3.5
minimatch: 7.4.6
dedent-js: 1.0.1
pascal-case: 3.1.2
svelte: 4.1.2
svelte-preprocess: 5.0.4(svelte@4.1.2)(typescript@5.1.6)
typescript: 5.1.6
yargs: 17.7.2
transitivePeerDependencies:
- '@babel/core'
- coffeescript
- less
- postcss
- postcss-load-config
- pug
- sass
- stylus
- sugarss
dev: true
/svelte@4.1.2: