Skip to content

Commit f170b52

Browse files
authored
Merge pull request #158 from danpacho/157-bug-ts7056-ts4094-error-when-building-dts
[bug] ts7056 ts4094 error when building dts
2 parents 86f5774 + 77d3bf2 commit f170b52

File tree

11 files changed

+166
-141
lines changed

11 files changed

+166
-141
lines changed

README.md

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,18 +29,28 @@ npm i tailwindest@latest
2929
### 3. Create tools
3030

3131
```ts
32-
import { createTools, type CreateTailwindest } from "tailwindest"
32+
import {
33+
createTools,
34+
type CreateTailwindest,
35+
type CreateTailwindLiteral,
36+
} from "tailwindest"
37+
3338
import type { Tailwind, TailwindNestGroups } from "./tailwind"
3439
import { twMerge } from "tailwind-merge"
3540

36-
type Tailwindest = CreateTailwindest<{
41+
export type Tailwindest = CreateTailwindest<{
3742
tailwind: Tailwind
3843
tailwindNestGroups: TailwindNestGroups
3944
groupPrefix: "$" // prefix for nest groups, [optional]
40-
useArbitrary: true // use arbitrary values, [optional]
45+
useArbitrary: true // enable arbitrary values, [optional]
4146
}>
47+
export type TailwindLiteral = CreateTailwindLiteral<Tailwind>
4248

43-
export const tw = createTools<Tailwindest>({
49+
export const tw = createTools<{
50+
tailwindest: Tailwindest
51+
tailwindLiteral: TailwindLiteral
52+
useArbitrary: true // enable arbitrary values, [optional]
53+
}>({
4454
merger: twMerge, // set tailwind-merge as merger, [optional]
4555
})
4656
```

packages/create-tailwind-type/src/generator/__tests__/generator.test.ts

Lines changed: 43 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -4,41 +4,43 @@ import { TailwindCompiler } from "../../internal/compiler"
44
import { CSSAnalyzer } from "../css_analyzer"
55
import { TypeSchemaGenerator } from "../../type_tools"
66

7-
describe("TypeGenerator", () => {
8-
// dependencies
9-
const compiler = new TailwindCompiler({
10-
cssRoot: `${__dirname}/__mocks__/tailwind.css`,
11-
base: "packages/create-tailwind-type/node_modules/tailwindcss",
12-
})
13-
const cssAnalyzer = new CSSAnalyzer()
14-
const schemaGenerator = new TypeSchemaGenerator()
7+
describe(
8+
"TypeGenerator",
9+
() => {
10+
// dependencies
11+
const compiler = new TailwindCompiler({
12+
cssRoot: `${__dirname}/__mocks__/tailwind.css`,
13+
base: "packages/create-tailwind-type/node_modules/tailwindcss",
14+
})
15+
const cssAnalyzer = new CSSAnalyzer()
16+
const schemaGenerator = new TypeSchemaGenerator()
1517

16-
const generator = new TailwindTypeGenerator({
17-
compiler,
18-
cssAnalyzer,
19-
generator: schemaGenerator,
20-
storeRoot: `${__dirname}/__mocks__/store/docs.json`,
21-
}).setGenOptions({
22-
useDocs: true,
23-
useExactVariants: false,
24-
useArbitraryValue: false,
25-
useSoftVariants: true,
26-
useStringKindVariantsOnly: false,
27-
useOptionalProperty: false,
28-
disableVariants: true,
29-
})
18+
const generator = new TailwindTypeGenerator({
19+
compiler,
20+
cssAnalyzer,
21+
generator: schemaGenerator,
22+
storeRoot: `${__dirname}/__mocks__/store/docs.json`,
23+
}).setGenOptions({
24+
useDocs: true,
25+
useExactVariants: false,
26+
useArbitraryValue: false,
27+
useSoftVariants: true,
28+
useStringKindVariantsOnly: false,
29+
useOptionalProperty: false,
30+
disableVariants: true,
31+
})
3032

31-
it("should init", async () => {
32-
await generator.init()
33+
it("should init", async () => {
34+
await generator.init()
3335

34-
expect(generator.ds).toBeDefined()
35-
expect(generator.classList.length).toBeGreaterThan(0)
36-
expect(generator.variantsEntry.length).toBeGreaterThan(0)
37-
expect(generator.variants.length).toBeGreaterThan(0)
38-
})
36+
expect(generator.ds).toBeDefined()
37+
expect(generator.classList.length).toBeGreaterThan(0)
38+
expect(generator.variantsEntry.length).toBeGreaterThan(0)
39+
expect(generator.variants.length).toBeGreaterThan(0)
40+
})
3941

40-
it("should extract all the possible variants", () => {
41-
expect(generator.variants).toMatchInlineSnapshot(`
42+
it("should extract all the possible variants", () => {
43+
expect(generator.variants).toMatchInlineSnapshot(`
4244
[
4345
"*",
4446
"**",
@@ -441,11 +443,15 @@ describe("TypeGenerator", () => {
441443
"noscript",
442444
]
443445
`)
444-
})
446+
})
445447

446-
it("should build types", async () => {
447-
await generator.buildTypes({
448-
tailwind: `${__dirname}/__mocks__/dist/tailwind.ts`,
448+
it("should build types", async () => {
449+
await generator.buildTypes({
450+
tailwind: `${__dirname}/__mocks__/dist/tailwind.ts`,
451+
})
449452
})
450-
})
451-
})
453+
},
454+
{
455+
timeout: 1000 * 20,
456+
}
457+
)

packages/tailwindest/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,11 @@
11
# tailwindest
22

3+
## 3.2.0
4+
5+
### Minor Changes
6+
7+
- Fix TS7056, TS4094 error for .d.ts building, update tailwindest interface for `createTools` generic param
8+
39
## 3.1.1
410

511
### Patch Changes

packages/tailwindest/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "tailwindest",
3-
"version": "3.1.1",
3+
"version": "3.2.0",
44
"description": "typesafe, reusable tailwind",
55
"homepage": "https://tailwindest.vercel.app",
66
"author": "danpacho",

packages/tailwindest/readme.md

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,28 @@ npm i tailwindest@latest
1717
### 3. Create tools
1818

1919
```ts
20-
import { createTools, type CreateTailwindest } from "tailwindest"
20+
import {
21+
createTools,
22+
type CreateTailwindest,
23+
type CreateTailwindLiteral,
24+
} from "tailwindest"
25+
2126
import type { Tailwind, TailwindNestGroups } from "./tailwind"
2227
import { twMerge } from "tailwind-merge"
2328

24-
export const tw = createTools<
25-
CreateTailwindest<{
26-
tailwind: Tailwind
27-
tailwindNestGroups: TailwindNestGroups
28-
groupPrefix: "$" // prefix for nest groups, [optional]
29-
}>
30-
>({
29+
export type Tailwindest = CreateTailwindest<{
30+
tailwind: Tailwind
31+
tailwindNestGroups: TailwindNestGroups
32+
groupPrefix: "$" // prefix for nest groups, [optional]
33+
useArbitrary: true // enable arbitrary values, [optional]
34+
}>
35+
export type TailwindLiteral = CreateTailwindLiteral<Tailwind>
36+
37+
export const tw = createTools<{
38+
tailwindest: Tailwindest
39+
tailwindLiteral: TailwindLiteral
40+
useArbitrary: true // enable arbitrary values, [optional]
41+
}>({
3142
merger: twMerge, // set tailwind-merge as merger, [optional]
3243
})
3344
```

packages/tailwindest/src/create_tailwindest.ts

Lines changed: 33 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -77,19 +77,11 @@ interface TailwindestConfig {
7777

7878
export interface TailwindestInterface {
7979
/**
80-
* Tailwind
81-
*/
82-
tailwind?: any
83-
/**
84-
* Tailwind Literal
80+
* Tailwind literal typeset
8581
*/
8682
tailwindLiteral?: any
8783
/**
88-
* Tailwind Nest Groups
89-
*/
90-
tailwindNestGroup?: any
91-
/**
92-
* Tailwindest impl
84+
* Tailwindest typeset
9385
*/
9486
tailwindest: any
9587
/**
@@ -99,7 +91,7 @@ export interface TailwindestInterface {
9991
}
10092

10193
/**
102-
* Creates a `tailwindest` typeset.
94+
* Create tailwindest typeset
10395
*
10496
* @description Run `npx create-tailwind-type` to generate tailwind type defs.
10597
* ```bash
@@ -121,34 +113,33 @@ export interface TailwindestInterface {
121113
* }>
122114
* ```
123115
*/
124-
export type CreateTailwindest<Config extends TailwindestConfig> = {
125-
/**
126-
* Tailwind
127-
*/
128-
tailwind: Config["tailwind"]
129-
/**
130-
* Tailwind Literal
131-
*/
132-
tailwindLiteral: Config["tailwind"][keyof Config["tailwind"]]
133-
/**
134-
* Tailwind Nest Groups
135-
*/
136-
tailwindNestGroup: Config["tailwindNestGroups"]
137-
/**
138-
* Tailwindest impl
139-
*/
140-
tailwindest: GetNestStyle<
141-
Config["groupPrefix"] extends string
142-
? `${Config["groupPrefix"]}${Config["tailwindNestGroups"]}`
143-
: Config["tailwindNestGroups"],
144-
Config["tailwind"],
145-
Config["groupPrefix"] extends string
146-
? Config["groupPrefix"] | TAILWIND_IDENTIFIER
147-
: TAILWIND_IDENTIFIER,
148-
Config["useArbitrary"] extends boolean ? Config["useArbitrary"] : false
149-
>
150-
/**
151-
* Enables arbitrary strings as valid style properties if `true`.
152-
*/
153-
useArbitrary: Config["useArbitrary"]
154-
}
116+
export type CreateTailwindest<Config extends TailwindestConfig> = GetNestStyle<
117+
Config["groupPrefix"] extends string
118+
? `${Config["groupPrefix"]}${Config["tailwindNestGroups"]}`
119+
: Config["tailwindNestGroups"],
120+
Config["tailwind"],
121+
Config["groupPrefix"] extends string
122+
? Config["groupPrefix"] | TAILWIND_IDENTIFIER
123+
: TAILWIND_IDENTIFIER,
124+
Config["useArbitrary"] extends boolean ? Config["useArbitrary"] : false
125+
>
126+
127+
/**
128+
* Create tailwind literal typeset
129+
*
130+
* @description Run `npx create-tailwind-type` to generate tailwind type defs.
131+
* ```bash
132+
* npx create-tailwind-type --base node_modules/tailwindcss --no-arbitrary-value --disable-variants
133+
* ```
134+
* @see {@link https://github.com/danpacho/tailwindest#create-tailwind-type create-tailwind-type}
135+
*
136+
* @example
137+
* ```ts
138+
* // 1. import generated types
139+
* import type { Tailwind, TailwindNestGroups } from "~/tailwind.ts"
140+
*
141+
* // 2. create type
142+
* export type TailwindLiteral = CreateTailwindLiteral<Tailwind>
143+
* ```
144+
*/
145+
export type CreateTailwindLiteral<Tailwind> = Tailwind[keyof Tailwind]

packages/tailwindest/src/index.ts

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
import { createTools, type GetVariants } from "./tools"
2-
import { CreateTailwindest } from "./create_tailwindest"
32

43
// Merger public interfaces
54
export type { Merger as TailwindestMerger } from "./tools/merger_interface"
@@ -10,4 +9,18 @@ export type { Tailwindest } from "./legacy/tailwindest"
109
export type { ShortTailwindest } from "./legacy/tailwindest.short"
1110

1211
// V3 + tailwindcss >= 4.0
13-
export { createTools, type GetVariants, type CreateTailwindest }
12+
export type {
13+
CreateTailwindest,
14+
CreateTailwindLiteral,
15+
} from "./create_tailwindest"
16+
17+
// Export styler interfaces
18+
export type {
19+
Styler,
20+
PrimitiveStyler,
21+
RotaryStyler,
22+
ToggleStyler,
23+
VariantsStyler,
24+
} from "./tools"
25+
26+
export { createTools, type GetVariants }

packages/tailwindest/src/tools/__tests__/merger_interface.test.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { expectType, TypeEqual } from "ts-expect"
21
import { describe, expect, it } from "vitest"
32
import { twMerge } from "tailwind-merge"
43
import { Merger } from "../merger_interface"
@@ -9,13 +8,13 @@ import { ClassList } from "../to_class"
98
describe("Merger interface", () => {
109
it("1. tailwind-merge", () => {
1110
const merger: Merger = twMerge
12-
const t = createTools<
13-
CreateTailwindest<{
11+
const t = createTools<{
12+
tailwindest: CreateTailwindest<{
1413
tailwind: Record<string, any>
1514
tailwindNestGroups: ""
1615
useArbitrary: true
1716
}>
18-
>({
17+
}>({
1918
merger: merger,
2019
})
2120

@@ -47,13 +46,13 @@ describe("Merger interface", () => {
4746
return res
4847
}
4948

50-
const t = createTools<
51-
CreateTailwindest<{
49+
const t = createTools<{
50+
tailwindest: CreateTailwindest<{
5251
tailwind: Record<string, any>
5352
tailwindNestGroups: ""
5453
useArbitrary: true
5554
}>
56-
>({
55+
}>({
5756
merger: customMerger,
5857
})
5958

0 commit comments

Comments
 (0)