({
packageName,
packageRoot,
includeNativeFiles,
includeEntryJs = true,
nativeFileRelatives = [],
})
| 156 | } |
| 157 | |
| 158 | async function collectPackageFiles({ |
| 159 | packageName, |
| 160 | packageRoot, |
| 161 | includeNativeFiles, |
| 162 | includeEntryJs = true, |
| 163 | nativeFileRelatives = [], |
| 164 | }) { |
| 165 | const packageJsonPath = join(packageRoot, 'package.json'); |
| 166 | const packageJson = await readJson(packageJsonPath); |
| 167 | const selected = new Set([packageJsonPath]); |
| 168 | |
| 169 | if (includeEntryJs) { |
| 170 | const entry = resolvePackageEntry(packageRoot, packageJson); |
| 171 | if (entry !== null) { |
| 172 | selected.add(entry); |
| 173 | await addRuntimeDependencyFiles(packageRoot, entry, selected); |
| 174 | } |
| 175 | } |
| 176 | |
| 177 | for (const nativeFileRelative of nativeFileRelatives) { |
| 178 | const nativeFile = resolve(packageRoot, nativeFileRelative); |
| 179 | if (!existsSync(nativeFile)) { |
| 180 | fail(`Native package ${packageName} does not contain ${nativeFileRelative} at ${packageRoot}`); |
| 181 | } |
| 182 | selected.add(nativeFile); |
| 183 | } |
| 184 | |
| 185 | if (includeNativeFiles) { |
| 186 | const files = await listFiles(packageRoot); |
| 187 | for (const file of files) { |
| 188 | if (file.endsWith('.node')) { |
| 189 | selected.add(file); |
| 190 | } |
| 191 | } |
| 192 | } |
| 193 | |
| 194 | const sorted = [...selected].sort((a, b) => a.localeCompare(b)); |
| 195 | if (includeNativeFiles && !sorted.some((file) => file.endsWith('.node'))) { |
| 196 | fail(`Native package ${packageName} does not contain a .node file at ${packageRoot}`); |
| 197 | } |
| 198 | return sorted; |
| 199 | } |
| 200 | |
| 201 | async function packageManifestEntries({ packageName, packageRoot, files, target }) { |
| 202 | const root = `node_modules/${packageName}`; |
no test coverage detected