@@ -127,15 +127,32 @@ function isOptionalMaintainerWebsiteNegativeNeedle(needle) {
127127
128128function createCanonicalAwareReader ( root , readRaw , existsRaw = file => fs . existsSync ( file ) ) {
129129 let deliveryFiles = null
130+ let maintainerWebsiteIgnorePolicy
131+ function hasMaintainerWebsiteIgnorePolicyForReader ( ) {
132+ if ( maintainerWebsiteIgnorePolicy != null ) return maintainerWebsiteIgnorePolicy
133+ try {
134+ const ignore = readRaw ( path . join ( root , '.gitignore' ) )
135+ maintainerWebsiteIgnorePolicy = String ( ignore ) . includes ( 'website/*' ) && String ( ignore ) . includes ( '!website/README.md' )
136+ } catch {
137+ maintainerWebsiteIgnorePolicy = false
138+ }
139+ return maintainerWebsiteIgnorePolicy
140+ }
141+ function isOptionalMaintainerWebsiteAssetForReader ( relative ) {
142+ const normalized = String ( relative || '' ) . replace ( / \\ / g, '/' )
143+ return normalized . startsWith ( 'website/' ) &&
144+ normalized !== 'website/README.md' &&
145+ hasMaintainerWebsiteIgnorePolicyForReader ( )
146+ }
130147 function readCanonicalDelivery ( relative ) {
131148 if ( ! / ^ (?: i n s t r u c t i o n s \. m d | (?: i n s t r u c t i o n s | p r o m p t s ) \/ .+ | s k i l l s \/ .+ ) $ / . test ( relative ) ) {
132149 return null
133150 }
134- if ( ! fs . existsSync ( path . join ( root , 'content' , 'manifest.json' ) ) ) return null
151+ if ( ! existsRaw ( path . join ( root , 'content' , 'manifest.json' ) ) ) return null
135152 const canonicalAsset = resolveControlAsset ( root , relative )
136- if ( canonicalAsset !== path . join ( root , relative ) && fs . existsSync ( canonicalAsset ) &&
153+ if ( canonicalAsset !== path . join ( root , relative ) && existsRaw ( canonicalAsset ) &&
137154 ! / ^ (?: i n s t r u c t i o n s \. m d | (?: i n s t r u c t i o n s | p r o m p t s ) \/ .+ \. m d | s k i l l s \/ [ ^ / ] + \/ S K I L L \. m d ) $ / . test ( relative ) ) {
138- return fs . readFileSync ( canonicalAsset , 'utf8' )
155+ return readRaw ( canonicalAsset )
139156 }
140157 if ( ! deliveryFiles ) {
141158 deliveryFiles = new Map (
@@ -154,7 +171,7 @@ function createCanonicalAwareReader(root, readRaw, existsRaw = file => fs.exists
154171 } catch ( error ) {
155172 const canonical = error ?. code === 'ENOENT' ? readCanonicalDelivery ( relative ) : null
156173 if ( canonical == null ) {
157- if ( ! isOptionalMaintainerWebsiteAsset ( root , relative ) ) throw error
174+ if ( ! isOptionalMaintainerWebsiteAssetForReader ( relative ) ) throw error
158175 optionalMaintainerWebsite = true
159176 value = ''
160177 } else {
@@ -175,7 +192,7 @@ function createCanonicalAwareReader(root, readRaw, existsRaw = file => fs.exists
175192 read . exists = function exists ( file ) {
176193 if ( existsRaw ( file ) ) return true
177194 const relative = path . relative ( root , file ) . replace ( / \\ / g, '/' )
178- if ( isOptionalMaintainerWebsiteAsset ( root , relative ) ) return true
195+ if ( isOptionalMaintainerWebsiteAssetForReader ( relative ) ) return true
179196 return readCanonicalDelivery ( relative ) != null
180197 }
181198
0 commit comments