11import glob from "fast-glob" ;
22import * as fs from "node:fs" ;
33import * as path from "node:path" ;
4+ import { fileURLToPath } from "node:url" ;
45
5- const dir = path . parse ( import . meta. url . replace ( "file://" , "" ) ) . dir ;
6+ const dir = path . parse ( fileURLToPath ( import . meta. url ) ) . dir ;
67
78export type Project = {
89 /**
@@ -114,7 +115,7 @@ export type Files = Record<
114115
115116export function getProjectFiles ( project : Project ) : Files {
116117 const dir = path . resolve ( "../../" , project . pathFromRoot ) ;
117- const files = glob . globSync ( dir + "/**/*" , {
118+ const files = glob . globSync ( replacePathSepToSlash ( dir + "/**/*" ) , {
118119 ignore : [ "**/node_modules/**/*" , "**/dist/**/*" ] ,
119120 } ) ;
120121 const passedFiles = Object . fromEntries (
@@ -140,7 +141,11 @@ export function getProjectFiles(project: Project): Files {
140141 */
141142export function getExampleProjects ( ) : Project [ ] {
142143 const examples : Project [ ] = glob
143- . globSync ( path . join ( dir , "../../../examples/**/*/.bnexample.json" ) )
144+ . globSync (
145+ replacePathSepToSlash (
146+ path . join ( dir , "../../../examples/**/*/.bnexample.json" )
147+ )
148+ )
144149 . map ( ( configPath ) => {
145150 const config = JSON . parse ( fs . readFileSync ( configPath , "utf-8" ) ) ;
146151 const directory = path . dirname ( configPath ) ;
@@ -162,9 +167,8 @@ export function getExampleProjects(): Project[] {
162167 . split ( path . sep ) ;
163168
164169 const group = {
165- pathFromRoot : path . relative (
166- path . resolve ( "../../" ) ,
167- path . join ( directory , ".." )
170+ pathFromRoot : replacePathSepToSlash (
171+ path . relative ( path . resolve ( "../../" ) , path . join ( directory , ".." ) )
168172 ) ,
169173 // remove optional 01- prefix
170174 slug : groupDir . replace ( / ^ \d { 2 } - / , "" ) ,
@@ -174,7 +178,9 @@ export function getExampleProjects(): Project[] {
174178 const project = {
175179 projectSlug,
176180 fullSlug : `${ group . slug } /${ projectSlug } ` ,
177- pathFromRoot : path . relative ( path . resolve ( "../../" ) , directory ) ,
181+ pathFromRoot : replacePathSepToSlash (
182+ path . relative ( path . resolve ( "../../" ) , directory )
183+ ) ,
178184 config,
179185 title,
180186 group,
@@ -196,3 +202,13 @@ export function getExampleProjects(): Project[] {
196202 // });
197203 return examples ;
198204}
205+
206+ export function replacePathSepToSlash ( path : string ) {
207+ const isExtendedLengthPath = path . startsWith ( "\\\\?\\" ) ;
208+
209+ if ( isExtendedLengthPath ) {
210+ return path ;
211+ }
212+
213+ return path . replace ( / \\ / g, "/" ) ;
214+ }
0 commit comments