@@ -16,6 +16,7 @@ import { normalizeDriveLetter, normalizePath, pathToFileURL } from './utils'
16
16
import postcss from 'postcss'
17
17
import * as oxide from './oxide'
18
18
import { analyzeStylesheet , TailwindStylesheet } from './version-guesser'
19
+ import { OxideSession } from './oxide-session'
19
20
20
21
export interface ProjectConfig {
21
22
/** The folder that contains the project */
@@ -60,7 +61,10 @@ export class ProjectLocator {
60
61
let configs = await this . findConfigs ( )
61
62
62
63
// Create a project for each of the config files
63
- let results = await Promise . allSettled ( configs . map ( ( config ) => this . createProject ( config ) ) )
64
+ let session = new OxideSession ( )
65
+ let results = await Promise . allSettled (
66
+ configs . map ( ( config ) => this . createProject ( config , session ) ) ,
67
+ )
64
68
let projects : ProjectConfig [ ] = [ ]
65
69
66
70
for ( let result of results ) {
@@ -71,6 +75,8 @@ export class ProjectLocator {
71
75
}
72
76
}
73
77
78
+ console . log ( projects [ 0 ] )
79
+
74
80
if ( projects . length === 1 ) {
75
81
projects [ 0 ] . additionalSelectors . push ( {
76
82
pattern : normalizePath ( path . join ( this . base , '**' ) ) ,
@@ -98,6 +104,8 @@ export class ProjectLocator {
98
104
}
99
105
}
100
106
107
+ await session . stop ( )
108
+
101
109
return projects
102
110
}
103
111
@@ -148,7 +156,10 @@ export class ProjectLocator {
148
156
}
149
157
}
150
158
151
- private async createProject ( config : ConfigEntry ) : Promise < ProjectConfig | null > {
159
+ private async createProject (
160
+ config : ConfigEntry ,
161
+ session : OxideSession ,
162
+ ) : Promise < ProjectConfig | null > {
152
163
let tailwind = await this . detectTailwindVersion ( config )
153
164
154
165
let possibleVersions = config . entries . flatMap ( ( entry ) => entry . meta ?. versions ?? [ ] )
@@ -218,7 +229,12 @@ export class ProjectLocator {
218
229
// Look for the package root for the config
219
230
config . packageRoot = await getPackageRoot ( path . dirname ( config . path ) , this . base )
220
231
221
- let selectors = await calculateDocumentSelectors ( config , tailwind . features , this . resolver )
232
+ let selectors = await calculateDocumentSelectors (
233
+ config ,
234
+ tailwind . features ,
235
+ this . resolver ,
236
+ session ,
237
+ )
222
238
223
239
return {
224
240
config,
@@ -520,10 +536,11 @@ function contentSelectorsFromConfig(
520
536
entry : ConfigEntry ,
521
537
features : Feature [ ] ,
522
538
resolver : Resolver ,
539
+ session : OxideSession ,
523
540
actualConfig ?: any ,
524
541
) : AsyncIterable < DocumentSelector > {
525
542
if ( entry . type === 'css' ) {
526
- return contentSelectorsFromCssConfig ( entry , resolver )
543
+ return contentSelectorsFromCssConfig ( entry , resolver , session )
527
544
}
528
545
529
546
if ( entry . type === 'js' ) {
@@ -582,6 +599,7 @@ async function* contentSelectorsFromJsConfig(
582
599
async function * contentSelectorsFromCssConfig (
583
600
entry : ConfigEntry ,
584
601
resolver : Resolver ,
602
+ session : OxideSession ,
585
603
) : AsyncIterable < DocumentSelector > {
586
604
let auto = false
587
605
for ( let item of entry . content ) {
@@ -606,6 +624,7 @@ async function* contentSelectorsFromCssConfig(
606
624
entry . path ,
607
625
sources ,
608
626
resolver ,
627
+ session ,
609
628
) ) {
610
629
yield {
611
630
pattern,
@@ -621,14 +640,15 @@ async function* detectContentFiles(
621
640
inputFile : string ,
622
641
sources : SourcePattern [ ] ,
623
642
resolver : Resolver ,
643
+ session : OxideSession ,
624
644
) : AsyncIterable < string > {
625
645
try {
626
646
let oxidePath = await resolver . resolveJsId ( '@tailwindcss/oxide' , base )
627
647
oxidePath = pathToFileURL ( oxidePath ) . href
628
648
let oxidePackageJsonPath = await resolver . resolveJsId ( '@tailwindcss/oxide/package.json' , base )
629
649
let oxidePackageJson = JSON . parse ( await fs . readFile ( oxidePackageJsonPath , 'utf8' ) )
630
650
631
- let result = await oxide . scan ( {
651
+ let result = await session . scan ( {
632
652
oxidePath,
633
653
oxideVersion : oxidePackageJson . version ,
634
654
basePath : base ,
@@ -654,8 +674,8 @@ async function* detectContentFiles(
654
674
base = normalizeDriveLetter ( base )
655
675
yield `${ base } /${ pattern } `
656
676
}
657
- } catch {
658
- //
677
+ } catch ( err ) {
678
+ console . log ( { err } )
659
679
}
660
680
}
661
681
@@ -812,8 +832,15 @@ export async function calculateDocumentSelectors(
812
832
config : ConfigEntry ,
813
833
features : Feature [ ] ,
814
834
resolver : Resolver ,
835
+ session ?: OxideSession ,
815
836
actualConfig ?: any ,
816
837
) {
838
+ let hasTemporarySession = false
839
+ if ( ! session ) {
840
+ hasTemporarySession = true
841
+ session = new OxideSession ( )
842
+ }
843
+
817
844
let selectors : DocumentSelector [ ] = [ ]
818
845
819
846
// selectors:
@@ -834,7 +861,13 @@ export async function calculateDocumentSelectors(
834
861
} )
835
862
836
863
// - Content patterns from config
837
- for await ( let selector of contentSelectorsFromConfig ( config , features , resolver , actualConfig ) ) {
864
+ for await ( let selector of contentSelectorsFromConfig (
865
+ config ,
866
+ features ,
867
+ resolver ,
868
+ session ,
869
+ actualConfig ,
870
+ ) ) {
838
871
selectors . push ( selector )
839
872
}
840
873
@@ -876,5 +909,9 @@ export async function calculateDocumentSelectors(
876
909
return 0
877
910
} )
878
911
912
+ if ( hasTemporarySession ) {
913
+ await session . stop ( )
914
+ }
915
+
879
916
return selectors
880
917
}
0 commit comments