Compare commits
4 commits
main
...
ps/svelte-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e3b943b4ae | ||
|
|
ea0f093c12 | ||
|
|
b07832772a | ||
|
|
744e43fc0e |
29 changed files with 761 additions and 118 deletions
|
|
@ -12,7 +12,7 @@
|
||||||
"homepage": "https://tailwindcss.com",
|
"homepage": "https://tailwindcss.com",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"lint": "tsc --noEmit",
|
"lint": "tsc --noEmit",
|
||||||
"build": "tsup-node ./src/index.ts --format esm --minify --clean",
|
"build": "tsup-node",
|
||||||
"dev": "pnpm run build -- --watch"
|
"dev": "pnpm run build -- --watch"
|
||||||
},
|
},
|
||||||
"bin": {
|
"bin": {
|
||||||
|
|
@ -36,7 +36,8 @@
|
||||||
"picocolors": "^1.0.1",
|
"picocolors": "^1.0.1",
|
||||||
"postcss": "8.4.24",
|
"postcss": "8.4.24",
|
||||||
"postcss-import": "^16.1.0",
|
"postcss-import": "^16.1.0",
|
||||||
"tailwindcss": "workspace:^"
|
"tailwindcss": "workspace:^",
|
||||||
|
"internal-postcss-fix-relative-paths": "workspace:^"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/postcss-import": "^14.0.3"
|
"@types/postcss-import": "^14.0.3"
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import watcher from '@parcel/watcher'
|
import watcher from '@parcel/watcher'
|
||||||
import { IO, Parsing, scanDir, scanFiles, type ChangedContent } from '@tailwindcss/oxide'
|
import { IO, Parsing, scanDir, scanFiles, type ChangedContent } from '@tailwindcss/oxide'
|
||||||
|
import fixRelativePathsPlugin from 'internal-postcss-fix-relative-paths'
|
||||||
import { Features, transform } from 'lightningcss'
|
import { Features, transform } from 'lightningcss'
|
||||||
import { existsSync } from 'node:fs'
|
import { existsSync } from 'node:fs'
|
||||||
import fs from 'node:fs/promises'
|
import fs from 'node:fs/promises'
|
||||||
|
|
@ -259,6 +260,7 @@ function handleImports(
|
||||||
|
|
||||||
return postcss()
|
return postcss()
|
||||||
.use(atImport())
|
.use(atImport())
|
||||||
|
.use(fixRelativePathsPlugin())
|
||||||
.process(input, { from: file })
|
.process(input, { from: file })
|
||||||
.then((result) => [
|
.then((result) => [
|
||||||
result.css,
|
result.css,
|
||||||
|
|
|
||||||
9
packages/@tailwindcss-cli/tsup.config.ts
Normal file
9
packages/@tailwindcss-cli/tsup.config.ts
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
import { defineConfig } from 'tsup'
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
format: ['esm'],
|
||||||
|
clean: true,
|
||||||
|
minify: true,
|
||||||
|
entry: ['src/index.ts'],
|
||||||
|
noExternal: ['internal-postcss-fix-relative-paths'],
|
||||||
|
})
|
||||||
|
|
@ -12,7 +12,7 @@
|
||||||
"homepage": "https://tailwindcss.com",
|
"homepage": "https://tailwindcss.com",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"lint": "tsc --noEmit",
|
"lint": "tsc --noEmit",
|
||||||
"build": "tsup-node ./src/index.ts --format cjs,esm --dts --cjsInterop --splitting --minify --clean",
|
"build": "tsup-node",
|
||||||
"dev": "pnpm run build -- --watch"
|
"dev": "pnpm run build -- --watch"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
|
|
@ -33,7 +33,8 @@
|
||||||
"@tailwindcss/oxide": "workspace:^",
|
"@tailwindcss/oxide": "workspace:^",
|
||||||
"lightningcss": "^1.25.1",
|
"lightningcss": "^1.25.1",
|
||||||
"postcss-import": "^16.1.0",
|
"postcss-import": "^16.1.0",
|
||||||
"tailwindcss": "workspace:^"
|
"tailwindcss": "workspace:^",
|
||||||
|
"internal-postcss-fix-relative-paths": "workspace:^"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.12.12",
|
"@types/node": "^20.12.12",
|
||||||
|
|
|
||||||
1
packages/@tailwindcss-postcss/src/fixtures/example-project/src/relative-import.css
vendored
Normal file
1
packages/@tailwindcss-postcss/src/fixtures/example-project/src/relative-import.css
vendored
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
@plugin '../plugin.js';
|
||||||
|
|
@ -144,7 +144,7 @@ describe('plugins', () => {
|
||||||
let result = await processor.process(
|
let result = await processor.process(
|
||||||
css`
|
css`
|
||||||
@import 'tailwindcss/utilities';
|
@import 'tailwindcss/utilities';
|
||||||
@plugin 'internal-example-plugin';
|
@plugin './plugin.js';
|
||||||
`,
|
`,
|
||||||
{ from: INPUT_CSS_PATH },
|
{ from: INPUT_CSS_PATH },
|
||||||
)
|
)
|
||||||
|
|
@ -166,6 +166,36 @@ describe('plugins', () => {
|
||||||
`)
|
`)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('local CJS plugin from `@import`-ed file', async () => {
|
||||||
|
let processor = postcss([
|
||||||
|
tailwindcss({ base: `${__dirname}/fixtures/example-project`, optimize: { minify: false } }),
|
||||||
|
])
|
||||||
|
|
||||||
|
let result = await processor.process(
|
||||||
|
css`
|
||||||
|
@import 'tailwindcss/utilities';
|
||||||
|
@import '../example-project/src/relative-import.css';
|
||||||
|
`,
|
||||||
|
{ from: `${__dirname}/fixtures/another-project/input.css` },
|
||||||
|
)
|
||||||
|
|
||||||
|
expect(result.css.trim()).toMatchInlineSnapshot(`
|
||||||
|
".underline {
|
||||||
|
text-decoration-line: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media (inverted-colors: inverted) {
|
||||||
|
.inverted\\:flex {
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.hocus\\:underline:focus, .hocus\\:underline:hover {
|
||||||
|
text-decoration-line: underline;
|
||||||
|
}"
|
||||||
|
`)
|
||||||
|
})
|
||||||
|
|
||||||
test('published CJS plugin', async () => {
|
test('published CJS plugin', async () => {
|
||||||
let processor = postcss([
|
let processor = postcss([
|
||||||
tailwindcss({ base: `${__dirname}/fixtures/example-project`, optimize: { minify: false } }),
|
tailwindcss({ base: `${__dirname}/fixtures/example-project`, optimize: { minify: false } }),
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,10 @@ import { scanDir } from '@tailwindcss/oxide'
|
||||||
import fs from 'fs'
|
import fs from 'fs'
|
||||||
import { Features, transform } from 'lightningcss'
|
import { Features, transform } from 'lightningcss'
|
||||||
import path from 'path'
|
import path from 'path'
|
||||||
import postcss, { type AcceptedPlugin, type PluginCreator } from 'postcss'
|
import postcss, { AtRule, type AcceptedPlugin, type PluginCreator } from 'postcss'
|
||||||
import postcssImport from 'postcss-import'
|
import postcssImport from 'postcss-import'
|
||||||
import { compile } from 'tailwindcss'
|
import { compile } from 'tailwindcss'
|
||||||
|
import fixRelativePathsPlugin from '../../internal-postcss-fix-relative-paths/src'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Map that can generate default values for keys that don't exist.
|
* A Map that can generate default values for keys that don't exist.
|
||||||
|
|
@ -48,114 +49,118 @@ function tailwindcss(opts: PluginOptions = {}): AcceptedPlugin {
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
let hasApply: boolean, hasTailwind: boolean
|
||||||
|
|
||||||
return {
|
return {
|
||||||
postcssPlugin: '@tailwindcss/postcss',
|
postcssPlugin: '@tailwindcss/postcss',
|
||||||
plugins: [
|
plugins: [
|
||||||
// We need to run `postcss-import` first to handle `@import` rules.
|
// We need to run `postcss-import` first to handle `@import` rules.
|
||||||
postcssImport(),
|
postcssImport(),
|
||||||
|
fixRelativePathsPlugin(),
|
||||||
|
|
||||||
(root, result) => {
|
{
|
||||||
let inputFile = result.opts.from ?? ''
|
postcssPlugin: 'tailwindcss',
|
||||||
let context = cache.get(inputFile)
|
Once() {
|
||||||
|
// Reset some state between builds
|
||||||
let rebuildStrategy: 'full' | 'incremental' = 'incremental'
|
hasApply = false
|
||||||
|
hasTailwind = false
|
||||||
// Track file modification times to CSS files
|
},
|
||||||
{
|
AtRule(rule: AtRule) {
|
||||||
let files = result.messages.flatMap((message) => {
|
|
||||||
if (message.type !== 'dependency') return []
|
|
||||||
return message.file
|
|
||||||
})
|
|
||||||
files.push(inputFile)
|
|
||||||
for (let file of files) {
|
|
||||||
let changedTime = fs.statSync(file, { throwIfNoEntry: false })?.mtimeMs ?? null
|
|
||||||
if (changedTime === null) {
|
|
||||||
if (file === inputFile) {
|
|
||||||
rebuildStrategy = 'full'
|
|
||||||
}
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
|
|
||||||
let prevTime = context.mtimes.get(file)
|
|
||||||
if (prevTime === changedTime) continue
|
|
||||||
|
|
||||||
rebuildStrategy = 'full'
|
|
||||||
context.mtimes.set(file, changedTime)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let hasApply = false
|
|
||||||
let hasTailwind = false
|
|
||||||
|
|
||||||
root.walkAtRules((rule) => {
|
|
||||||
if (rule.name === 'apply') {
|
if (rule.name === 'apply') {
|
||||||
hasApply = true
|
hasApply = true
|
||||||
} else if (rule.name === 'tailwind') {
|
} else if (rule.name === 'tailwind') {
|
||||||
hasApply = true
|
hasApply = true
|
||||||
hasTailwind = true
|
hasTailwind = true
|
||||||
// If we've found `@tailwind` then we already
|
|
||||||
// know we have to run a "full" build
|
|
||||||
return false
|
|
||||||
}
|
}
|
||||||
})
|
},
|
||||||
|
OnceExit(root, { result }) {
|
||||||
|
let inputFile = result.opts.from ?? ''
|
||||||
|
let context = cache.get(inputFile)
|
||||||
|
|
||||||
// Do nothing if neither `@tailwind` nor `@apply` is used
|
let rebuildStrategy: 'full' | 'incremental' = 'incremental'
|
||||||
if (!hasTailwind && !hasApply) return
|
|
||||||
|
|
||||||
let css = ''
|
// Track file modification times to CSS files
|
||||||
|
{
|
||||||
// Look for candidates used to generate the CSS
|
let files = result.messages.flatMap((message) => {
|
||||||
let { candidates, files, globs } = scanDir({ base, globs: true })
|
if (message.type !== 'dependency') return []
|
||||||
|
return message.file
|
||||||
// Add all found files as direct dependencies
|
})
|
||||||
for (let file of files) {
|
files.push(inputFile)
|
||||||
result.messages.push({
|
for (let file of files) {
|
||||||
type: 'dependency',
|
let changedTime = fs.statSync(file, { throwIfNoEntry: false })?.mtimeMs ?? null
|
||||||
plugin: '@tailwindcss/postcss',
|
if (changedTime === null) {
|
||||||
file,
|
if (file === inputFile) {
|
||||||
parent: result.opts.from,
|
rebuildStrategy = 'full'
|
||||||
})
|
}
|
||||||
}
|
continue
|
||||||
|
|
||||||
// Register dependencies so changes in `base` cause a rebuild while
|
|
||||||
// giving tools like Vite or Parcel a glob that can be used to limit
|
|
||||||
// the files that cause a rebuild to only those that match it.
|
|
||||||
for (let { base, glob } of globs) {
|
|
||||||
result.messages.push({
|
|
||||||
type: 'dir-dependency',
|
|
||||||
plugin: '@tailwindcss/postcss',
|
|
||||||
dir: base,
|
|
||||||
glob,
|
|
||||||
parent: result.opts.from,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
if (rebuildStrategy === 'full') {
|
|
||||||
let basePath = path.dirname(path.resolve(inputFile))
|
|
||||||
let { build } = compile(root.toString(), {
|
|
||||||
loadPlugin: (pluginPath) => {
|
|
||||||
if (pluginPath[0] === '.') {
|
|
||||||
return require(path.resolve(basePath, pluginPath))
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return require(pluginPath)
|
let prevTime = context.mtimes.get(file)
|
||||||
},
|
if (prevTime === changedTime) continue
|
||||||
})
|
|
||||||
context.build = build
|
|
||||||
css = build(hasTailwind ? candidates : [])
|
|
||||||
} else if (rebuildStrategy === 'incremental') {
|
|
||||||
css = context.build!(candidates)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Replace CSS
|
rebuildStrategy = 'full'
|
||||||
if (css !== context.css && optimize) {
|
context.mtimes.set(file, changedTime)
|
||||||
context.optimizedCss = optimizeCss(css, {
|
}
|
||||||
minify: typeof optimize === 'object' ? optimize.minify : true,
|
}
|
||||||
})
|
|
||||||
}
|
// Do nothing if neither `@tailwind` nor `@apply` is used
|
||||||
context.css = css
|
if (!hasTailwind && !hasApply) return
|
||||||
root.removeAll()
|
|
||||||
root.append(postcss.parse(optimize ? context.optimizedCss : context.css, result.opts))
|
let css = ''
|
||||||
|
|
||||||
|
// Look for candidates used to generate the CSS
|
||||||
|
let { candidates, files, globs } = scanDir({ base, globs: true })
|
||||||
|
|
||||||
|
// Add all found files as direct dependencies
|
||||||
|
for (let file of files) {
|
||||||
|
result.messages.push({
|
||||||
|
type: 'dependency',
|
||||||
|
plugin: '@tailwindcss/postcss',
|
||||||
|
file,
|
||||||
|
parent: result.opts.from,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Register dependencies so changes in `base` cause a rebuild while
|
||||||
|
// giving tools like Vite or Parcel a glob that can be used to limit
|
||||||
|
// the files that cause a rebuild to only those that match it.
|
||||||
|
for (let { base, glob } of globs) {
|
||||||
|
result.messages.push({
|
||||||
|
type: 'dir-dependency',
|
||||||
|
plugin: '@tailwindcss/postcss',
|
||||||
|
dir: base,
|
||||||
|
glob,
|
||||||
|
parent: result.opts.from,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (rebuildStrategy === 'full') {
|
||||||
|
let basePath = path.dirname(path.resolve(inputFile))
|
||||||
|
let { build } = compile(root.toString(), {
|
||||||
|
loadPlugin: (pluginPath) => {
|
||||||
|
if (pluginPath[0] === '.') {
|
||||||
|
return require(path.resolve(basePath, pluginPath))
|
||||||
|
}
|
||||||
|
|
||||||
|
return require(pluginPath)
|
||||||
|
},
|
||||||
|
})
|
||||||
|
context.build = build
|
||||||
|
css = build(hasTailwind ? candidates : [])
|
||||||
|
} else if (rebuildStrategy === 'incremental') {
|
||||||
|
css = context.build!(candidates)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Replace CSS
|
||||||
|
if (css !== context.css && optimize) {
|
||||||
|
context.optimizedCss = optimizeCss(css, {
|
||||||
|
minify: typeof optimize === 'object' ? optimize.minify : true,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
context.css = css
|
||||||
|
root.removeAll()
|
||||||
|
root.append(postcss.parse(optimize ? context.optimizedCss : context.css, result.opts))
|
||||||
|
},
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
}
|
}
|
||||||
|
|
|
||||||
12
packages/@tailwindcss-postcss/tsup.config.ts
Normal file
12
packages/@tailwindcss-postcss/tsup.config.ts
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
import { defineConfig } from 'tsup'
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
format: ['esm', 'cjs'],
|
||||||
|
clean: true,
|
||||||
|
minify: true,
|
||||||
|
splitting: true,
|
||||||
|
cjsInterop: true,
|
||||||
|
dts: true,
|
||||||
|
entry: ['src/index.ts'],
|
||||||
|
noExternal: ['internal-postcss-fix-relative-paths'],
|
||||||
|
})
|
||||||
|
|
@ -11,7 +11,7 @@
|
||||||
"bugs": "https://github.com/tailwindlabs/tailwindcss/issues",
|
"bugs": "https://github.com/tailwindlabs/tailwindcss/issues",
|
||||||
"homepage": "https://tailwindcss.com",
|
"homepage": "https://tailwindcss.com",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build": "tsup-node ./src/index.ts --format esm --dts --minify --clean",
|
"build": "tsup-node",
|
||||||
"dev": "pnpm run build -- --watch"
|
"dev": "pnpm run build -- --watch"
|
||||||
},
|
},
|
||||||
"files": [
|
"files": [
|
||||||
|
|
@ -30,10 +30,12 @@
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tailwindcss/oxide": "workspace:^",
|
"@tailwindcss/oxide": "workspace:^",
|
||||||
"lightningcss": "^1.25.1",
|
"lightningcss": "^1.25.1",
|
||||||
|
"postcss-load-config": "^6.0.1",
|
||||||
"tailwindcss": "workspace:^"
|
"tailwindcss": "workspace:^"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@types/node": "^20.12.12",
|
"@types/node": "^20.12.12",
|
||||||
|
"internal-postcss-fix-relative-paths": "workspace:^",
|
||||||
"vite": "^5.2.11"
|
"vite": "^5.2.11"
|
||||||
},
|
},
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,8 @@
|
||||||
import { IO, Parsing, scanFiles } from '@tailwindcss/oxide'
|
import { IO, Parsing, scanFiles } from '@tailwindcss/oxide'
|
||||||
|
import fixRelativePathsPlugin from 'internal-postcss-fix-relative-paths'
|
||||||
import { Features, transform } from 'lightningcss'
|
import { Features, transform } from 'lightningcss'
|
||||||
import path from 'path'
|
import path from 'path'
|
||||||
|
import postcssrc from 'postcss-load-config'
|
||||||
import { compile } from 'tailwindcss'
|
import { compile } from 'tailwindcss'
|
||||||
import type { Plugin, Rollup, Update, ViteDevServer } from 'vite'
|
import type { Plugin, Rollup, Update, ViteDevServer } from 'vite'
|
||||||
|
|
||||||
|
|
@ -101,7 +103,7 @@ export default function tailwindcss(): Plugin[] {
|
||||||
|
|
||||||
for (let plugin of cssPlugins) {
|
for (let plugin of cssPlugins) {
|
||||||
if (!plugin.transform) continue
|
if (!plugin.transform) continue
|
||||||
const transformHandler =
|
let transformHandler =
|
||||||
'handler' in plugin.transform! ? plugin.transform.handler : plugin.transform!
|
'handler' in plugin.transform! ? plugin.transform.handler : plugin.transform!
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
@ -152,6 +154,56 @@ export default function tailwindcss(): Plugin[] {
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
// Append the postcss-fix-relative-paths plugin
|
||||||
|
async config(config) {
|
||||||
|
let postcssConfig = config.css?.postcss
|
||||||
|
|
||||||
|
if (typeof postcssConfig === 'string') {
|
||||||
|
// We expand string configs to their PostCSS config object similar to
|
||||||
|
// how Vite does it.
|
||||||
|
// See: https://github.com/vitejs/vite/blob/440783953a55c6c63cd09ec8d13728dc4693073d/packages/vite/src/node/plugins/css.ts#L1580
|
||||||
|
let searchPath = typeof postcssConfig === 'string' ? postcssConfig : config.root
|
||||||
|
let parsedConfig = await postcssrc({}, searchPath).catch((e: Error) => {
|
||||||
|
if (!e.message.includes('No PostCSS Config found')) {
|
||||||
|
if (e instanceof Error) {
|
||||||
|
let { name, message, stack } = e
|
||||||
|
e.name = 'Failed to load PostCSS config'
|
||||||
|
e.message = `Failed to load PostCSS config (searchPath: ${searchPath}): [${name}] ${message}\n${stack}`
|
||||||
|
e.stack = '' // add stack to message to retain stack
|
||||||
|
throw e
|
||||||
|
} else {
|
||||||
|
throw new Error(`Failed to load PostCSS config: ${e}`)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
})
|
||||||
|
if (parsedConfig !== null) {
|
||||||
|
postcssConfig = {
|
||||||
|
options: parsedConfig.options,
|
||||||
|
plugins: parsedConfig.plugins,
|
||||||
|
} as any
|
||||||
|
} else {
|
||||||
|
postcssConfig = {}
|
||||||
|
}
|
||||||
|
config.css = { postcss: postcssConfig }
|
||||||
|
}
|
||||||
|
|
||||||
|
// postcssConfig is no longer a string after the above. This test is to
|
||||||
|
// avoid TypeScript errors below.
|
||||||
|
if (typeof postcssConfig === 'string') {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!postcssConfig || !postcssConfig?.plugins) {
|
||||||
|
config.css = config.css || {}
|
||||||
|
config.css.postcss = postcssConfig || {}
|
||||||
|
config.css.postcss.plugins = [fixRelativePathsPlugin() as any, fixSvelte() as any]
|
||||||
|
} else {
|
||||||
|
postcssConfig.plugins.push(fixRelativePathsPlugin() as any)
|
||||||
|
postcssConfig.plugins.push(fixSvelte() as any)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
// Scan index.html for candidates
|
// Scan index.html for candidates
|
||||||
transformIndexHtml(html) {
|
transformIndexHtml(html) {
|
||||||
let updated = scan(html, 'html')
|
let updated = scan(html, 'html')
|
||||||
|
|
@ -244,7 +296,11 @@ function getExtension(id: string) {
|
||||||
|
|
||||||
function isTailwindCssFile(id: string, src: string) {
|
function isTailwindCssFile(id: string, src: string) {
|
||||||
if (id.includes('/.vite/')) return
|
if (id.includes('/.vite/')) return
|
||||||
return getExtension(id) === 'css' && src.includes('@tailwind')
|
const extension = getExtension(id)
|
||||||
|
const isTailwind =
|
||||||
|
(extension === 'css' && src.includes('@tailwind')) ||
|
||||||
|
(extension === 'svelte' && id.endsWith('&lang.css'))
|
||||||
|
return isTailwind
|
||||||
}
|
}
|
||||||
|
|
||||||
function optimizeCss(
|
function optimizeCss(
|
||||||
|
|
@ -270,3 +326,18 @@ function optimizeCss(
|
||||||
errorRecovery: true,
|
errorRecovery: true,
|
||||||
}).code.toString()
|
}).code.toString()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function fixSvelte() {
|
||||||
|
return {
|
||||||
|
postcssPlugin: 'tailwindcss-postcss-fix-svelte',
|
||||||
|
OnceExit: (root: any) => {
|
||||||
|
const filename = root.source.input.file
|
||||||
|
if (!filename.endsWith('.svelte?svelte&type=style&lang.css')) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const content = root.toString()
|
||||||
|
let compiled = compile(content.replace('@tailwind ', '@failwind '), {}).build([''])
|
||||||
|
root.replaceWith(compiled.replace('@failwind ', ' @tailwind '))
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
10
packages/@tailwindcss-vite/tsup.config.ts
Normal file
10
packages/@tailwindcss-vite/tsup.config.ts
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
import { defineConfig } from 'tsup'
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
format: ['esm'],
|
||||||
|
clean: true,
|
||||||
|
minify: true,
|
||||||
|
dts: true,
|
||||||
|
entry: ['src/index.ts'],
|
||||||
|
noExternal: ['internal-postcss-fix-relative-paths'],
|
||||||
|
})
|
||||||
27
packages/internal-postcss-fix-relative-paths/package.json
Normal file
27
packages/internal-postcss-fix-relative-paths/package.json
Normal file
|
|
@ -0,0 +1,27 @@
|
||||||
|
{
|
||||||
|
"name": "internal-postcss-fix-relative-paths",
|
||||||
|
"version": "0.0.0",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"lint": "tsc --noEmit",
|
||||||
|
"build": "tsup-node ./src/index.ts --format cjs,esm --dts --cjsInterop --splitting --minify --clean",
|
||||||
|
"dev": "pnpm run build -- --watch"
|
||||||
|
},
|
||||||
|
"files": [
|
||||||
|
"dist/"
|
||||||
|
],
|
||||||
|
"exports": {
|
||||||
|
".": {
|
||||||
|
"types": "./dist/index.d.ts",
|
||||||
|
"import": "./dist/index.mjs",
|
||||||
|
"require": "./dist/index.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dependencies": {},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^20.12.12",
|
||||||
|
"@types/postcss-import": "^14.0.3",
|
||||||
|
"postcss": "8.4.24",
|
||||||
|
"postcss-import": "^16.1.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
@content "./**/*.ts";
|
||||||
|
@plugin "./plugin.js";
|
||||||
|
@plugin "./what\"s-this.js";
|
||||||
|
|
@ -0,0 +1,4 @@
|
||||||
|
@plugin "/absolute/paths";
|
||||||
|
@plugin "C:\Program Files\HAL 9000";
|
||||||
|
@plugin "\\Media\Pictures\Worth\1000 words";
|
||||||
|
@plugin "some-node-dep";
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
@import '../../example-project/src/index.css';
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
@import '../../example-project/src/invalid.css';
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
@import './plugins-in-sibling.css';
|
||||||
|
|
||||||
|
@plugin './plugin-in-root.ts';
|
||||||
|
@plugin '../plugin-in-root.ts';
|
||||||
|
@plugin 'plugin-in-root';
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
@plugin './plugin-in-sibling.ts';
|
||||||
|
@plugin '../plugin-in-sibling.ts';
|
||||||
|
@plugin 'plugin-in-sibling';
|
||||||
|
|
@ -0,0 +1,56 @@
|
||||||
|
import fs from 'node:fs'
|
||||||
|
import postcss from 'postcss'
|
||||||
|
import atImport from 'postcss-import'
|
||||||
|
import { describe, expect, test } from 'vitest'
|
||||||
|
import fixRelativePathsPlugin from '.'
|
||||||
|
|
||||||
|
describe('fixRelativePathsPlugin', () => {
|
||||||
|
test('rewrites @content and @plugin to be relative to the initial css file', async () => {
|
||||||
|
let cssPath = `${__dirname}/fixtures/external-import/src/index.css`
|
||||||
|
let css = fs.readFileSync(cssPath, 'utf-8')
|
||||||
|
|
||||||
|
let processor = postcss([atImport(), fixRelativePathsPlugin()])
|
||||||
|
|
||||||
|
let result = await processor.process(css, { from: cssPath })
|
||||||
|
|
||||||
|
expect(result.css.trim()).toMatchInlineSnapshot(`
|
||||||
|
"@content "../../example-project/src/**/*.ts";
|
||||||
|
@plugin "../../example-project/src/plugin.js";
|
||||||
|
@plugin "../../example-project/src/what\\"s-this.js";"
|
||||||
|
`)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('should not rewrite non-relative paths', async () => {
|
||||||
|
let cssPath = `${__dirname}/fixtures/external-import/src/invalid.css`
|
||||||
|
let css = fs.readFileSync(cssPath, 'utf-8')
|
||||||
|
|
||||||
|
let processor = postcss([atImport(), fixRelativePathsPlugin()])
|
||||||
|
|
||||||
|
let result = await processor.process(css, { from: cssPath })
|
||||||
|
|
||||||
|
expect(result.css.trim()).toMatchInlineSnapshot(`
|
||||||
|
"@plugin "/absolute/paths";
|
||||||
|
@plugin "C:\\Program Files\\HAL 9000";
|
||||||
|
@plugin "\\\\Media\\Pictures\\Worth\\1000 words";
|
||||||
|
@plugin "some-node-dep";"
|
||||||
|
`)
|
||||||
|
})
|
||||||
|
|
||||||
|
test('should return relative paths even if the file is resolved in the same basedir as the root stylesheet', async () => {
|
||||||
|
let cssPath = `${__dirname}/fixtures/external-import/src/plugins-in-root.css`
|
||||||
|
let css = fs.readFileSync(cssPath, 'utf-8')
|
||||||
|
|
||||||
|
let processor = postcss([atImport(), fixRelativePathsPlugin()])
|
||||||
|
|
||||||
|
let result = await processor.process(css, { from: cssPath })
|
||||||
|
|
||||||
|
expect(result.css.trim()).toMatchInlineSnapshot(`
|
||||||
|
"@plugin './plugin-in-sibling.ts';
|
||||||
|
@plugin '../plugin-in-sibling.ts';
|
||||||
|
@plugin 'plugin-in-sibling';
|
||||||
|
@plugin './plugin-in-root.ts';
|
||||||
|
@plugin '../plugin-in-root.ts';
|
||||||
|
@plugin 'plugin-in-root';"
|
||||||
|
`)
|
||||||
|
})
|
||||||
|
})
|
||||||
101
packages/internal-postcss-fix-relative-paths/src/index.ts
Normal file
101
packages/internal-postcss-fix-relative-paths/src/index.ts
Normal file
|
|
@ -0,0 +1,101 @@
|
||||||
|
import path from 'node:path'
|
||||||
|
import type { AtRule, Container, Plugin } from 'postcss'
|
||||||
|
|
||||||
|
const SINGLE_QUOTE = "'"
|
||||||
|
const DOUBLE_QUOTE = '"'
|
||||||
|
|
||||||
|
export default function fixRelativePathsPlugin(): Plugin {
|
||||||
|
// Retain a list of touched at-rules to avoid infinite loops
|
||||||
|
let touched: WeakSet<AtRule> = new WeakSet()
|
||||||
|
|
||||||
|
function fixRelativePath(atRule: AtRule) {
|
||||||
|
let rootPath = getRoot(atRule)?.source?.input.file
|
||||||
|
if (!rootPath) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let inputFilePath = atRule?.source?.input.file
|
||||||
|
if (!inputFilePath) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (touched.has(atRule)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let value = atRule.params[0]
|
||||||
|
|
||||||
|
let quote =
|
||||||
|
value[0] === DOUBLE_QUOTE && value[value.length - 1] === DOUBLE_QUOTE
|
||||||
|
? DOUBLE_QUOTE
|
||||||
|
: value[0] === SINGLE_QUOTE && value[value.length - 1] === SINGLE_QUOTE
|
||||||
|
? SINGLE_QUOTE
|
||||||
|
: null
|
||||||
|
if (!quote) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let content = atRule.params.slice(1, -1)
|
||||||
|
|
||||||
|
// We only want to rewrite relative paths.
|
||||||
|
if (!content.startsWith('./') && !content.startsWith('../')) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let rulePath = path.posix.join(path.posix.dirname(inputFilePath), content)
|
||||||
|
let relative = path.posix.relative(path.posix.dirname(rootPath), rulePath)
|
||||||
|
|
||||||
|
// If the path points to a file in the same directory, `path.relative` will
|
||||||
|
// remove the leading `./` and we need to add it back in order to still
|
||||||
|
// consider the path relative
|
||||||
|
if (!relative.startsWith('.')) {
|
||||||
|
relative = './' + relative
|
||||||
|
}
|
||||||
|
|
||||||
|
atRule.params = quote + relative + quote
|
||||||
|
touched.add(atRule)
|
||||||
|
}
|
||||||
|
|
||||||
|
function getRoot(node: AtRule | Container | undefined): Container | undefined {
|
||||||
|
if (node?.parent) {
|
||||||
|
return getRoot(node.parent as Container)
|
||||||
|
}
|
||||||
|
return node
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
postcssPlugin: 'tailwindcss-postcss-fix-relative-paths',
|
||||||
|
AtRule: {
|
||||||
|
content: fixRelativePath,
|
||||||
|
plugin: fixRelativePath,
|
||||||
|
// theme: function (atRule: AtRule, { postcss }: { postcss: any }) {
|
||||||
|
// if (touched.has(atRule)) {
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
// }
|
||||||
|
// apply: function (atRule: AtRule, { postcss }: { postcss: any }) {
|
||||||
|
// if (touched.has(atRule)) {
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
// if(atRule.name)
|
||||||
|
// if (atRule.params[0] === "'") {
|
||||||
|
// return
|
||||||
|
// }
|
||||||
|
// atRule.params = `'${atRule.params}'`
|
||||||
|
// touched.add(atRule)
|
||||||
|
// // Convert atRule to a comment
|
||||||
|
// // atRule.replaceWith(
|
||||||
|
// // postcss.rule({
|
||||||
|
// // selector: '& .CUSTOM-foo-base476',
|
||||||
|
// // nodes: [],
|
||||||
|
// // }),
|
||||||
|
// // )
|
||||||
|
// // atRule.before(postcss.comment({ text: '! custom' + atRule.toString() }))
|
||||||
|
// // if (atRule.name === 'apply') {
|
||||||
|
// // atRule.name = 'comment'
|
||||||
|
// // atRule.params = 'tailwindcss-apply'
|
||||||
|
// // return
|
||||||
|
// // }
|
||||||
|
// },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,3 @@
|
||||||
|
{
|
||||||
|
"extends": "../tsconfig.base.json",
|
||||||
|
}
|
||||||
|
|
@ -305,10 +305,15 @@ export function compile(
|
||||||
if (css.includes('@apply')) {
|
if (css.includes('@apply')) {
|
||||||
walk(ast, (node, { replaceWith }) => {
|
walk(ast, (node, { replaceWith }) => {
|
||||||
if (node.kind === 'rule' && node.selector[0] === '@' && node.selector.startsWith('@apply')) {
|
if (node.kind === 'rule' && node.selector[0] === '@' && node.selector.startsWith('@apply')) {
|
||||||
let candidates = node.selector
|
let candidates: any = node.selector
|
||||||
.slice(7 /* Ignore `@apply ` when parsing the selector */)
|
.slice(7 /* Ignore `@apply ` when parsing the selector */)
|
||||||
.trim()
|
.trim()
|
||||||
.split(/\s+/g)
|
|
||||||
|
if (candidates[0] === "'" || candidates[0] === '"') {
|
||||||
|
candidates = candidates.slice(1, -1)
|
||||||
|
}
|
||||||
|
|
||||||
|
candidates = candidates.split(/\s+/g)
|
||||||
|
|
||||||
// Replace the `@apply` rule with the actual utility classes
|
// Replace the `@apply` rule with the actual utility classes
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -435,7 +435,8 @@
|
||||||
--transition-timing-function-in: cubic-bezier(0.4, 0, 1, 1);
|
--transition-timing-function-in: cubic-bezier(0.4, 0, 1, 1);
|
||||||
--transition-timing-function-out: cubic-bezier(0, 0, 0.2, 1);
|
--transition-timing-function-out: cubic-bezier(0, 0, 0.2, 1);
|
||||||
--transition-timing-function-in-out: cubic-bezier(0.4, 0, 0.2, 1);
|
--transition-timing-function-in-out: cubic-bezier(0.4, 0, 0.2, 1);
|
||||||
|
}
|
||||||
|
@theme {
|
||||||
@keyframes spin {
|
@keyframes spin {
|
||||||
to {
|
to {
|
||||||
transform: rotate(360deg);
|
transform: rotate(360deg);
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,13 @@
|
||||||
"preview": "bun --bun vite preview"
|
"preview": "bun --bun vite preview"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"@sveltejs/vite-plugin-svelte": "^3.1.1",
|
||||||
"@tailwindcss/vite": "workspace:^",
|
"@tailwindcss/vite": "workspace:^",
|
||||||
"@vitejs/plugin-react": "^4.3.0",
|
"@vitejs/plugin-react": "^4.3.0",
|
||||||
"react": "^18.3.1",
|
"react": "^18.3.1",
|
||||||
"react-dom": "^18.3.1",
|
"react-dom": "^18.3.1",
|
||||||
|
"svelte": "^4.2.18",
|
||||||
|
"svelte-preprocess": "^6.0.2",
|
||||||
"tailwindcss": "workspace:^"
|
"tailwindcss": "workspace:^"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
|
||||||
9
playgrounds/vite/src/App.svelte
Normal file
9
playgrounds/vite/src/App.svelte
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
<script>
|
||||||
|
let name = 'world'
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<h1 class="foo any-hover:text-red-500 hover:underline">Hello {name}!</h1>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
@tailwind utilities;
|
||||||
|
</style>
|
||||||
|
|
@ -1,2 +0,0 @@
|
||||||
@import 'tailwindcss';
|
|
||||||
@plugin "./plugin.js";
|
|
||||||
|
|
@ -1,9 +1,7 @@
|
||||||
import React from 'react'
|
import App from './App.svelte'
|
||||||
import ReactDOM from 'react-dom/client'
|
|
||||||
import { App } from './app'
|
|
||||||
|
|
||||||
ReactDOM.createRoot(document.getElementById('app')!).render(
|
const app = new App({
|
||||||
<React.StrictMode>
|
target: document.getElementById('app'),
|
||||||
<App />
|
})
|
||||||
</React.StrictMode>,
|
|
||||||
)
|
export default app
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,35 @@
|
||||||
|
import { svelte, vitePreprocess } from '@sveltejs/vite-plugin-svelte'
|
||||||
import tailwindcss from '@tailwindcss/vite'
|
import tailwindcss from '@tailwindcss/vite'
|
||||||
import react from '@vitejs/plugin-react'
|
|
||||||
import { defineConfig } from 'vite'
|
import { defineConfig } from 'vite'
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [react(), tailwindcss()],
|
plugins: [
|
||||||
|
svelte({
|
||||||
|
preprocess: [
|
||||||
|
// sveltePreprocess({
|
||||||
|
// aliases: [
|
||||||
|
// ['tailwindcss', 'tailwindcss'],
|
||||||
|
// ['tailwind', 'tailwindcss'],
|
||||||
|
// ['postcss', 'tailwindcss'],
|
||||||
|
// ],
|
||||||
|
// /** Add a custom language preprocessor */
|
||||||
|
// tailwindcss({ content, filename, attributes }) {
|
||||||
|
// let compiled = compile(content.replace('@tailwind ', '@failwind '), {}).build(
|
||||||
|
// Array.from(['']),
|
||||||
|
// )
|
||||||
|
// console.log({ compiled, attributes })
|
||||||
|
// return Promise.resolve({
|
||||||
|
// code: compiled.replace('@failwind ', '@tailwind '),
|
||||||
|
// map: '',
|
||||||
|
// attributes,
|
||||||
|
// })
|
||||||
|
// },
|
||||||
|
// }),
|
||||||
|
vitePreprocess(),
|
||||||
|
],
|
||||||
|
}),
|
||||||
|
tailwindcss(),
|
||||||
|
],
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// @tailwindcss/svelte
|
||||||
|
|
|
||||||
259
pnpm-lock.yaml
generated
259
pnpm-lock.yaml
generated
|
|
@ -109,6 +109,9 @@ importers:
|
||||||
'@tailwindcss/oxide':
|
'@tailwindcss/oxide':
|
||||||
specifier: workspace:^
|
specifier: workspace:^
|
||||||
version: link:../../crates/node
|
version: link:../../crates/node
|
||||||
|
internal-postcss-fix-relative-paths:
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../internal-postcss-fix-relative-paths
|
||||||
lightningcss:
|
lightningcss:
|
||||||
specifier: ^1.25.1
|
specifier: ^1.25.1
|
||||||
version: 1.25.1
|
version: 1.25.1
|
||||||
|
|
@ -137,6 +140,9 @@ importers:
|
||||||
'@tailwindcss/oxide':
|
'@tailwindcss/oxide':
|
||||||
specifier: workspace:^
|
specifier: workspace:^
|
||||||
version: link:../../crates/node
|
version: link:../../crates/node
|
||||||
|
internal-postcss-fix-relative-paths:
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../internal-postcss-fix-relative-paths
|
||||||
lightningcss:
|
lightningcss:
|
||||||
specifier: ^1.25.1
|
specifier: ^1.25.1
|
||||||
version: 1.25.1
|
version: 1.25.1
|
||||||
|
|
@ -168,6 +174,9 @@ importers:
|
||||||
lightningcss:
|
lightningcss:
|
||||||
specifier: ^1.25.1
|
specifier: ^1.25.1
|
||||||
version: 1.25.1
|
version: 1.25.1
|
||||||
|
postcss-load-config:
|
||||||
|
specifier: ^6.0.1
|
||||||
|
version: 6.0.1(postcss@8.4.38)(yaml@2.4.2)
|
||||||
tailwindcss:
|
tailwindcss:
|
||||||
specifier: workspace:^
|
specifier: workspace:^
|
||||||
version: link:../tailwindcss
|
version: link:../tailwindcss
|
||||||
|
|
@ -175,12 +184,30 @@ importers:
|
||||||
'@types/node':
|
'@types/node':
|
||||||
specifier: ^20.12.12
|
specifier: ^20.12.12
|
||||||
version: 20.12.12
|
version: 20.12.12
|
||||||
|
internal-postcss-fix-relative-paths:
|
||||||
|
specifier: workspace:^
|
||||||
|
version: link:../internal-postcss-fix-relative-paths
|
||||||
vite:
|
vite:
|
||||||
specifier: ^5.2.11
|
specifier: ^5.2.11
|
||||||
version: 5.2.11(@types/node@20.12.12)(lightningcss@1.25.1)
|
version: 5.2.11(@types/node@20.12.12)(lightningcss@1.25.1)
|
||||||
|
|
||||||
packages/internal-example-plugin: {}
|
packages/internal-example-plugin: {}
|
||||||
|
|
||||||
|
packages/internal-postcss-fix-relative-paths:
|
||||||
|
devDependencies:
|
||||||
|
'@types/node':
|
||||||
|
specifier: ^20.12.12
|
||||||
|
version: 20.12.12
|
||||||
|
'@types/postcss-import':
|
||||||
|
specifier: ^14.0.3
|
||||||
|
version: 14.0.3
|
||||||
|
postcss:
|
||||||
|
specifier: 8.4.24
|
||||||
|
version: 8.4.24
|
||||||
|
postcss-import:
|
||||||
|
specifier: ^16.1.0
|
||||||
|
version: 16.1.0(postcss@8.4.24)
|
||||||
|
|
||||||
packages/tailwindcss:
|
packages/tailwindcss:
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@tailwindcss/oxide':
|
'@tailwindcss/oxide':
|
||||||
|
|
@ -235,6 +262,9 @@ importers:
|
||||||
|
|
||||||
playgrounds/vite:
|
playgrounds/vite:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
'@sveltejs/vite-plugin-svelte':
|
||||||
|
specifier: ^3.1.1
|
||||||
|
version: 3.1.1(svelte@4.2.18)(vite@5.2.11(@types/node@20.12.12)(lightningcss@1.25.1))
|
||||||
'@tailwindcss/vite':
|
'@tailwindcss/vite':
|
||||||
specifier: workspace:^
|
specifier: workspace:^
|
||||||
version: link:../../packages/@tailwindcss-vite
|
version: link:../../packages/@tailwindcss-vite
|
||||||
|
|
@ -247,6 +277,12 @@ importers:
|
||||||
react-dom:
|
react-dom:
|
||||||
specifier: ^18.3.1
|
specifier: ^18.3.1
|
||||||
version: 18.3.1(react@18.3.1)
|
version: 18.3.1(react@18.3.1)
|
||||||
|
svelte:
|
||||||
|
specifier: ^4.2.18
|
||||||
|
version: 4.2.18
|
||||||
|
svelte-preprocess:
|
||||||
|
specifier: ^6.0.2
|
||||||
|
version: 6.0.2(@babel/core@7.24.6)(postcss-load-config@6.0.1(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.18)(typescript@5.4.5)
|
||||||
tailwindcss:
|
tailwindcss:
|
||||||
specifier: workspace:^
|
specifier: workspace:^
|
||||||
version: link:../../packages/tailwindcss
|
version: link:../../packages/tailwindcss
|
||||||
|
|
@ -1008,6 +1044,21 @@ packages:
|
||||||
'@sinclair/typebox@0.27.8':
|
'@sinclair/typebox@0.27.8':
|
||||||
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
|
resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==}
|
||||||
|
|
||||||
|
'@sveltejs/vite-plugin-svelte-inspector@2.1.0':
|
||||||
|
resolution: {integrity: sha512-9QX28IymvBlSCqsCll5t0kQVxipsfhFFL+L2t3nTWfXnddYwxBuAEtTtlaVQpRz9c37BhJjltSeY4AJSC03SSg==}
|
||||||
|
engines: {node: ^18.0.0 || >=20}
|
||||||
|
peerDependencies:
|
||||||
|
'@sveltejs/vite-plugin-svelte': ^3.0.0
|
||||||
|
svelte: ^4.0.0 || ^5.0.0-next.0
|
||||||
|
vite: ^5.0.0
|
||||||
|
|
||||||
|
'@sveltejs/vite-plugin-svelte@3.1.1':
|
||||||
|
resolution: {integrity: sha512-rimpFEAboBBHIlzISibg94iP09k/KYdHgVhJlcsTfn7KMBhc70jFX/GRWkRdFCc2fdnk+4+Bdfej23cMDnJS6A==}
|
||||||
|
engines: {node: ^18.0.0 || >=20}
|
||||||
|
peerDependencies:
|
||||||
|
svelte: ^4.0.0 || ^5.0.0-next.0
|
||||||
|
vite: ^5.0.0
|
||||||
|
|
||||||
'@swc/helpers@0.5.2':
|
'@swc/helpers@0.5.2':
|
||||||
resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==}
|
resolution: {integrity: sha512-E4KcWTpoLHqwPHLxidpOqQbcrZVgi0rsmmZXUle1jXmJfuIf/UWpczUJ7MZZ5tlxytgJXyp0w4PGkkeLiuIdZw==}
|
||||||
|
|
||||||
|
|
@ -1213,6 +1264,10 @@ packages:
|
||||||
axobject-query@3.2.1:
|
axobject-query@3.2.1:
|
||||||
resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==}
|
resolution: {integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==}
|
||||||
|
|
||||||
|
axobject-query@4.1.0:
|
||||||
|
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
|
||||||
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
balanced-match@1.0.2:
|
balanced-match@1.0.2:
|
||||||
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
|
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
|
||||||
|
|
||||||
|
|
@ -1237,6 +1292,7 @@ packages:
|
||||||
|
|
||||||
bun@1.1.10:
|
bun@1.1.10:
|
||||||
resolution: {integrity: sha512-qOJXrQZSzJ5DbJMt47GZGWtUSmIkbwD7fPSN/XS/T46D4cTTnPK46QDHlyC8VD+Anvs6uKNwuwKIyB31kUdHmQ==}
|
resolution: {integrity: sha512-qOJXrQZSzJ5DbJMt47GZGWtUSmIkbwD7fPSN/XS/T46D4cTTnPK46QDHlyC8VD+Anvs6uKNwuwKIyB31kUdHmQ==}
|
||||||
|
cpu: [arm64, x64]
|
||||||
os: [darwin, linux, win32]
|
os: [darwin, linux, win32]
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
|
@ -1287,6 +1343,9 @@ packages:
|
||||||
client-only@0.0.1:
|
client-only@0.0.1:
|
||||||
resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
|
resolution: {integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==}
|
||||||
|
|
||||||
|
code-red@1.0.4:
|
||||||
|
resolution: {integrity: sha512-7qJWqItLA8/VPVlKJlFXU+NBlo/qyfs39aJcuMT/2ere32ZqvF5OSxgdM5xOfJJ7O429gg2HM47y8v9P+9wrNw==}
|
||||||
|
|
||||||
color-convert@1.9.3:
|
color-convert@1.9.3:
|
||||||
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
|
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
|
||||||
|
|
||||||
|
|
@ -1317,6 +1376,10 @@ packages:
|
||||||
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
|
resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
|
||||||
engines: {node: '>= 8'}
|
engines: {node: '>= 8'}
|
||||||
|
|
||||||
|
css-tree@2.3.1:
|
||||||
|
resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==}
|
||||||
|
engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0}
|
||||||
|
|
||||||
csstype@3.1.3:
|
csstype@3.1.3:
|
||||||
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
|
resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==}
|
||||||
|
|
||||||
|
|
@ -1359,6 +1422,10 @@ packages:
|
||||||
deep-is@0.1.4:
|
deep-is@0.1.4:
|
||||||
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
|
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
|
||||||
|
|
||||||
|
deepmerge@4.3.1:
|
||||||
|
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
define-data-property@1.1.4:
|
define-data-property@1.1.4:
|
||||||
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
|
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
@ -1853,6 +1920,9 @@ packages:
|
||||||
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
|
resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==}
|
||||||
engines: {node: '>=8'}
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
|
is-reference@3.0.2:
|
||||||
|
resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
|
||||||
|
|
||||||
is-regex@1.1.4:
|
is-regex@1.1.4:
|
||||||
resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
|
resolution: {integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
@ -1973,6 +2043,10 @@ packages:
|
||||||
keyv@4.5.4:
|
keyv@4.5.4:
|
||||||
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
|
resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==}
|
||||||
|
|
||||||
|
kleur@4.1.5:
|
||||||
|
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
|
||||||
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
language-subtag-registry@0.3.23:
|
language-subtag-registry@0.3.23:
|
||||||
resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==}
|
resolution: {integrity: sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==}
|
||||||
|
|
||||||
|
|
@ -2057,6 +2131,9 @@ packages:
|
||||||
resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
|
resolution: {integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==}
|
||||||
engines: {node: '>=14'}
|
engines: {node: '>=14'}
|
||||||
|
|
||||||
|
locate-character@3.0.0:
|
||||||
|
resolution: {integrity: sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==}
|
||||||
|
|
||||||
locate-path@6.0.0:
|
locate-path@6.0.0:
|
||||||
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
|
resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
@ -2091,6 +2168,9 @@ packages:
|
||||||
resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
|
resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
|
mdn-data@2.0.30:
|
||||||
|
resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==}
|
||||||
|
|
||||||
merge-stream@2.0.0:
|
merge-stream@2.0.0:
|
||||||
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
|
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
|
||||||
|
|
||||||
|
|
@ -2288,6 +2368,9 @@ packages:
|
||||||
pathval@1.1.1:
|
pathval@1.1.1:
|
||||||
resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
|
resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==}
|
||||||
|
|
||||||
|
periscopic@3.1.0:
|
||||||
|
resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
|
||||||
|
|
||||||
picocolors@1.0.1:
|
picocolors@1.0.1:
|
||||||
resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
|
resolution: {integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==}
|
||||||
|
|
||||||
|
|
@ -2338,6 +2421,24 @@ packages:
|
||||||
ts-node:
|
ts-node:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
postcss-load-config@6.0.1:
|
||||||
|
resolution: {integrity: sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==}
|
||||||
|
engines: {node: '>= 18'}
|
||||||
|
peerDependencies:
|
||||||
|
jiti: '>=1.21.0'
|
||||||
|
postcss: '>=8.0.9'
|
||||||
|
tsx: ^4.8.1
|
||||||
|
yaml: ^2.4.2
|
||||||
|
peerDependenciesMeta:
|
||||||
|
jiti:
|
||||||
|
optional: true
|
||||||
|
postcss:
|
||||||
|
optional: true
|
||||||
|
tsx:
|
||||||
|
optional: true
|
||||||
|
yaml:
|
||||||
|
optional: true
|
||||||
|
|
||||||
postcss-value-parser@4.2.0:
|
postcss-value-parser@4.2.0:
|
||||||
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
|
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
|
||||||
|
|
||||||
|
|
@ -2618,6 +2719,53 @@ packages:
|
||||||
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
|
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
|
svelte-hmr@0.16.0:
|
||||||
|
resolution: {integrity: sha512-Gyc7cOS3VJzLlfj7wKS0ZnzDVdv3Pn2IuVeJPk9m2skfhcu5bq3wtIZyQGggr7/Iim5rH5cncyQft/kRLupcnA==}
|
||||||
|
engines: {node: ^12.20 || ^14.13.1 || >= 16}
|
||||||
|
peerDependencies:
|
||||||
|
svelte: ^3.19.0 || ^4.0.0
|
||||||
|
|
||||||
|
svelte-preprocess@6.0.2:
|
||||||
|
resolution: {integrity: sha512-OvDTLfaOkkhjprbDKO0SOCkjNYuHy16dbD4SpqbIi6QiabOMHxRT4km5/dzbFFkmW1L0E2INF3MFltG2pgOyKQ==}
|
||||||
|
engines: {node: '>= 18.0.0'}
|
||||||
|
peerDependencies:
|
||||||
|
'@babel/core': ^7.10.2
|
||||||
|
coffeescript: ^2.5.1
|
||||||
|
less: ^3.11.3 || ^4.0.0
|
||||||
|
postcss: ^7 || ^8
|
||||||
|
postcss-load-config: '>=3'
|
||||||
|
pug: ^3.0.0
|
||||||
|
sass: ^1.26.8
|
||||||
|
stylus: '>=0.55'
|
||||||
|
sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0
|
||||||
|
svelte: ^4.0.0 || ^5.0.0-next.100 || ^5.0.0
|
||||||
|
typescript: ^5.0.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@babel/core':
|
||||||
|
optional: true
|
||||||
|
coffeescript:
|
||||||
|
optional: true
|
||||||
|
less:
|
||||||
|
optional: true
|
||||||
|
postcss:
|
||||||
|
optional: true
|
||||||
|
postcss-load-config:
|
||||||
|
optional: true
|
||||||
|
pug:
|
||||||
|
optional: true
|
||||||
|
sass:
|
||||||
|
optional: true
|
||||||
|
stylus:
|
||||||
|
optional: true
|
||||||
|
sugarss:
|
||||||
|
optional: true
|
||||||
|
typescript:
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
svelte@4.2.18:
|
||||||
|
resolution: {integrity: sha512-d0FdzYIiAePqRJEb90WlJDkjUEx42xhivxN8muUBmfZnP+tzUgz12DJ2hRJi8sIHCME7jeK1PTMgKPSfTd8JrA==}
|
||||||
|
engines: {node: '>=16'}
|
||||||
|
|
||||||
tapable@2.2.1:
|
tapable@2.2.1:
|
||||||
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
|
resolution: {integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
@ -2822,6 +2970,14 @@ packages:
|
||||||
terser:
|
terser:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
vitefu@0.2.5:
|
||||||
|
resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==}
|
||||||
|
peerDependencies:
|
||||||
|
vite: ^3.0.0 || ^4.0.0 || ^5.0.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
vite:
|
||||||
|
optional: true
|
||||||
|
|
||||||
vitest@1.6.0:
|
vitest@1.6.0:
|
||||||
resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==}
|
resolution: {integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==}
|
||||||
engines: {node: ^18.0.0 || >=20.0.0}
|
engines: {node: ^18.0.0 || >=20.0.0}
|
||||||
|
|
@ -3451,6 +3607,29 @@ snapshots:
|
||||||
|
|
||||||
'@sinclair/typebox@0.27.8': {}
|
'@sinclair/typebox@0.27.8': {}
|
||||||
|
|
||||||
|
'@sveltejs/vite-plugin-svelte-inspector@2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.2.11(@types/node@20.12.12)(lightningcss@1.25.1)))(svelte@4.2.18)(vite@5.2.11(@types/node@20.12.12)(lightningcss@1.25.1))':
|
||||||
|
dependencies:
|
||||||
|
'@sveltejs/vite-plugin-svelte': 3.1.1(svelte@4.2.18)(vite@5.2.11(@types/node@20.12.12)(lightningcss@1.25.1))
|
||||||
|
debug: 4.3.4
|
||||||
|
svelte: 4.2.18
|
||||||
|
vite: 5.2.11(@types/node@20.12.12)(lightningcss@1.25.1)
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
|
'@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.2.11(@types/node@20.12.12)(lightningcss@1.25.1))':
|
||||||
|
dependencies:
|
||||||
|
'@sveltejs/vite-plugin-svelte-inspector': 2.1.0(@sveltejs/vite-plugin-svelte@3.1.1(svelte@4.2.18)(vite@5.2.11(@types/node@20.12.12)(lightningcss@1.25.1)))(svelte@4.2.18)(vite@5.2.11(@types/node@20.12.12)(lightningcss@1.25.1))
|
||||||
|
debug: 4.3.4
|
||||||
|
deepmerge: 4.3.1
|
||||||
|
kleur: 4.1.5
|
||||||
|
magic-string: 0.30.10
|
||||||
|
svelte: 4.2.18
|
||||||
|
svelte-hmr: 0.16.0(svelte@4.2.18)
|
||||||
|
vite: 5.2.11(@types/node@20.12.12)(lightningcss@1.25.1)
|
||||||
|
vitefu: 0.2.5(vite@5.2.11(@types/node@20.12.12)(lightningcss@1.25.1))
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- supports-color
|
||||||
|
|
||||||
'@swc/helpers@0.5.2':
|
'@swc/helpers@0.5.2':
|
||||||
dependencies:
|
dependencies:
|
||||||
tslib: 2.6.2
|
tslib: 2.6.2
|
||||||
|
|
@ -3732,6 +3911,8 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
dequal: 2.0.3
|
dequal: 2.0.3
|
||||||
|
|
||||||
|
axobject-query@4.1.0: {}
|
||||||
|
|
||||||
balanced-match@1.0.2: {}
|
balanced-match@1.0.2: {}
|
||||||
|
|
||||||
binary-extensions@2.3.0: {}
|
binary-extensions@2.3.0: {}
|
||||||
|
|
@ -3829,6 +4010,14 @@ snapshots:
|
||||||
|
|
||||||
client-only@0.0.1: {}
|
client-only@0.0.1: {}
|
||||||
|
|
||||||
|
code-red@1.0.4:
|
||||||
|
dependencies:
|
||||||
|
'@jridgewell/sourcemap-codec': 1.4.15
|
||||||
|
'@types/estree': 1.0.5
|
||||||
|
acorn: 8.11.3
|
||||||
|
estree-walker: 3.0.3
|
||||||
|
periscopic: 3.1.0
|
||||||
|
|
||||||
color-convert@1.9.3:
|
color-convert@1.9.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
color-name: 1.1.3
|
color-name: 1.1.3
|
||||||
|
|
@ -3855,6 +4044,11 @@ snapshots:
|
||||||
shebang-command: 2.0.0
|
shebang-command: 2.0.0
|
||||||
which: 2.0.2
|
which: 2.0.2
|
||||||
|
|
||||||
|
css-tree@2.3.1:
|
||||||
|
dependencies:
|
||||||
|
mdn-data: 2.0.30
|
||||||
|
source-map-js: 1.2.0
|
||||||
|
|
||||||
csstype@3.1.3: {}
|
csstype@3.1.3: {}
|
||||||
|
|
||||||
damerau-levenshtein@1.0.8: {}
|
damerau-levenshtein@1.0.8: {}
|
||||||
|
|
@ -3891,6 +4085,8 @@ snapshots:
|
||||||
|
|
||||||
deep-is@0.1.4: {}
|
deep-is@0.1.4: {}
|
||||||
|
|
||||||
|
deepmerge@4.3.1: {}
|
||||||
|
|
||||||
define-data-property@1.1.4:
|
define-data-property@1.1.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
es-define-property: 1.0.0
|
es-define-property: 1.0.0
|
||||||
|
|
@ -4092,7 +4288,7 @@ snapshots:
|
||||||
eslint: 8.57.0
|
eslint: 8.57.0
|
||||||
eslint-import-resolver-node: 0.3.9
|
eslint-import-resolver-node: 0.3.9
|
||||||
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.0))(eslint@8.57.0)
|
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.0))(eslint@8.57.0)
|
||||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0)
|
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
|
||||||
eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0)
|
eslint-plugin-jsx-a11y: 6.8.0(eslint@8.57.0)
|
||||||
eslint-plugin-react: 7.34.1(eslint@8.57.0)
|
eslint-plugin-react: 7.34.1(eslint@8.57.0)
|
||||||
eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0)
|
eslint-plugin-react-hooks: 4.6.2(eslint@8.57.0)
|
||||||
|
|
@ -4116,7 +4312,7 @@ snapshots:
|
||||||
enhanced-resolve: 5.16.1
|
enhanced-resolve: 5.16.1
|
||||||
eslint: 8.57.0
|
eslint: 8.57.0
|
||||||
eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0)
|
eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0)
|
||||||
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0)
|
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0)
|
||||||
fast-glob: 3.3.2
|
fast-glob: 3.3.2
|
||||||
get-tsconfig: 4.7.5
|
get-tsconfig: 4.7.5
|
||||||
is-core-module: 2.13.1
|
is-core-module: 2.13.1
|
||||||
|
|
@ -4138,7 +4334,7 @@ snapshots:
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0):
|
eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
array-includes: 3.1.8
|
array-includes: 3.1.8
|
||||||
array.prototype.findlastindex: 1.2.5
|
array.prototype.findlastindex: 1.2.5
|
||||||
|
|
@ -4584,6 +4780,10 @@ snapshots:
|
||||||
|
|
||||||
is-path-inside@3.0.3: {}
|
is-path-inside@3.0.3: {}
|
||||||
|
|
||||||
|
is-reference@3.0.2:
|
||||||
|
dependencies:
|
||||||
|
'@types/estree': 1.0.5
|
||||||
|
|
||||||
is-regex@1.1.4:
|
is-regex@1.1.4:
|
||||||
dependencies:
|
dependencies:
|
||||||
call-bind: 1.0.7
|
call-bind: 1.0.7
|
||||||
|
|
@ -4702,6 +4902,8 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
json-buffer: 3.0.1
|
json-buffer: 3.0.1
|
||||||
|
|
||||||
|
kleur@4.1.5: {}
|
||||||
|
|
||||||
language-subtag-registry@0.3.23: {}
|
language-subtag-registry@0.3.23: {}
|
||||||
|
|
||||||
language-tags@1.0.9:
|
language-tags@1.0.9:
|
||||||
|
|
@ -4765,6 +4967,8 @@ snapshots:
|
||||||
mlly: 1.7.0
|
mlly: 1.7.0
|
||||||
pkg-types: 1.1.1
|
pkg-types: 1.1.1
|
||||||
|
|
||||||
|
locate-character@3.0.0: {}
|
||||||
|
|
||||||
locate-path@6.0.0:
|
locate-path@6.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
p-locate: 5.0.0
|
p-locate: 5.0.0
|
||||||
|
|
@ -4801,6 +5005,8 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
semver: 7.6.2
|
semver: 7.6.2
|
||||||
|
|
||||||
|
mdn-data@2.0.30: {}
|
||||||
|
|
||||||
merge-stream@2.0.0: {}
|
merge-stream@2.0.0: {}
|
||||||
|
|
||||||
merge2@1.4.1: {}
|
merge2@1.4.1: {}
|
||||||
|
|
@ -4996,6 +5202,12 @@ snapshots:
|
||||||
|
|
||||||
pathval@1.1.1: {}
|
pathval@1.1.1: {}
|
||||||
|
|
||||||
|
periscopic@3.1.0:
|
||||||
|
dependencies:
|
||||||
|
'@types/estree': 1.0.5
|
||||||
|
estree-walker: 3.0.3
|
||||||
|
is-reference: 3.0.2
|
||||||
|
|
||||||
picocolors@1.0.1: {}
|
picocolors@1.0.1: {}
|
||||||
|
|
||||||
picomatch@2.3.1: {}
|
picomatch@2.3.1: {}
|
||||||
|
|
@ -5034,6 +5246,13 @@ snapshots:
|
||||||
optionalDependencies:
|
optionalDependencies:
|
||||||
postcss: 8.4.24
|
postcss: 8.4.24
|
||||||
|
|
||||||
|
postcss-load-config@6.0.1(postcss@8.4.38)(yaml@2.4.2):
|
||||||
|
dependencies:
|
||||||
|
lilconfig: 3.1.1
|
||||||
|
optionalDependencies:
|
||||||
|
postcss: 8.4.38
|
||||||
|
yaml: 2.4.2
|
||||||
|
|
||||||
postcss-value-parser@4.2.0: {}
|
postcss-value-parser@4.2.0: {}
|
||||||
|
|
||||||
postcss@8.4.24:
|
postcss@8.4.24:
|
||||||
|
|
@ -5335,6 +5554,36 @@ snapshots:
|
||||||
|
|
||||||
supports-preserve-symlinks-flag@1.0.0: {}
|
supports-preserve-symlinks-flag@1.0.0: {}
|
||||||
|
|
||||||
|
svelte-hmr@0.16.0(svelte@4.2.18):
|
||||||
|
dependencies:
|
||||||
|
svelte: 4.2.18
|
||||||
|
|
||||||
|
svelte-preprocess@6.0.2(@babel/core@7.24.6)(postcss-load-config@6.0.1(postcss@8.4.38))(postcss@8.4.38)(svelte@4.2.18)(typescript@5.4.5):
|
||||||
|
dependencies:
|
||||||
|
svelte: 4.2.18
|
||||||
|
optionalDependencies:
|
||||||
|
'@babel/core': 7.24.6
|
||||||
|
postcss: 8.4.38
|
||||||
|
postcss-load-config: 6.0.1(postcss@8.4.38)(yaml@2.4.2)
|
||||||
|
typescript: 5.4.5
|
||||||
|
|
||||||
|
svelte@4.2.18:
|
||||||
|
dependencies:
|
||||||
|
'@ampproject/remapping': 2.3.0
|
||||||
|
'@jridgewell/sourcemap-codec': 1.4.15
|
||||||
|
'@jridgewell/trace-mapping': 0.3.25
|
||||||
|
'@types/estree': 1.0.5
|
||||||
|
acorn: 8.11.3
|
||||||
|
aria-query: 5.3.0
|
||||||
|
axobject-query: 4.1.0
|
||||||
|
code-red: 1.0.4
|
||||||
|
css-tree: 2.3.1
|
||||||
|
estree-walker: 3.0.3
|
||||||
|
is-reference: 3.0.2
|
||||||
|
locate-character: 3.0.0
|
||||||
|
magic-string: 0.30.10
|
||||||
|
periscopic: 3.1.0
|
||||||
|
|
||||||
tapable@2.2.1: {}
|
tapable@2.2.1: {}
|
||||||
|
|
||||||
test-exclude@6.0.0:
|
test-exclude@6.0.0:
|
||||||
|
|
@ -5542,6 +5791,10 @@ snapshots:
|
||||||
fsevents: 2.3.3
|
fsevents: 2.3.3
|
||||||
lightningcss: 1.25.1
|
lightningcss: 1.25.1
|
||||||
|
|
||||||
|
vitefu@0.2.5(vite@5.2.11(@types/node@20.12.12)(lightningcss@1.25.1)):
|
||||||
|
optionalDependencies:
|
||||||
|
vite: 5.2.11(@types/node@20.12.12)(lightningcss@1.25.1)
|
||||||
|
|
||||||
vitest@1.6.0(@types/node@20.12.12)(lightningcss@1.25.1):
|
vitest@1.6.0(@types/node@20.12.12)(lightningcss@1.25.1):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@vitest/expect': 1.6.0
|
'@vitest/expect': 1.6.0
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue