smartbundle 0.15.0-alpha.2 → 0.15.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__compiled__/cjs/src/args.d.ts +5 -5
- package/__compiled__/cjs/src/detectModules.js +0 -4
- package/__compiled__/cjs/src/detectModules.js.map +1 -1
- package/__compiled__/cjs/src/index.d.ts +1 -1
- package/__compiled__/cjs/src/monorepo/convertPackageJson.d.ts +17 -17
- package/__compiled__/cjs/src/packageJson.d.ts +68 -68
- package/__compiled__/cjs/src/tasks/viteTask.d.ts +2 -2
- package/__compiled__/esm/src/args.d.mts +5 -5
- package/__compiled__/esm/src/detectModules.mjs +0 -4
- package/__compiled__/esm/src/detectModules.mjs.map +1 -1
- package/__compiled__/esm/src/index.d.mts +1 -1
- package/__compiled__/esm/src/monorepo/convertPackageJson.d.mts +17 -17
- package/__compiled__/esm/src/packageJson.d.mts +68 -68
- package/__compiled__/esm/src/tasks/viteTask.d.mts +2 -2
- package/package.json +1 -1
@@ -1,10 +1,10 @@
|
|
1
1
|
export declare const args: {
|
2
2
|
[x: string]: unknown;
|
3
|
-
sourceDir: string;
|
4
|
-
packagePath: string;
|
5
|
-
outputDir: string;
|
6
|
-
seq: boolean;
|
7
|
-
ci: boolean;
|
3
|
+
sourceDir: string | undefined;
|
4
|
+
packagePath: string | undefined;
|
5
|
+
outputDir: string | undefined;
|
6
|
+
seq: boolean | undefined;
|
7
|
+
ci: boolean | undefined;
|
8
8
|
_: (string | number)[];
|
9
9
|
$0: string;
|
10
10
|
};
|
@@ -190,10 +190,6 @@ See https://pnpm.io/settings#dependency-hoisting-settings for more details.`
|
|
190
190
|
{
|
191
191
|
declaration: true,
|
192
192
|
emitDeclarationOnly: true,
|
193
|
-
strict: false,
|
194
|
-
strictNullChecks: false,
|
195
|
-
strictFunctionTypes: false,
|
196
|
-
strictPropertyInitialization: false,
|
197
193
|
skipLibCheck: true,
|
198
194
|
skipDefaultLibCheck: true,
|
199
195
|
outDir: "",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"detectModules.js","sources":["../../../../src/detectModules.ts"],"sourcesContent":["import { type PackageJson } from \"./packageJson.js\";\nimport semver from \"semver\";\nimport { okLog, errorLog, log, lineLog, warnLog } from \"./log.js\";\nimport type { Dirs } from \"./resolveDirs.js\";\nimport type { Monorepo } from \"./args.js\";\n\ntype DetectionResult<T> =\n // We have undefined here is module is not found\n // It is not an error because the user would disable some functionality by not installing deps\n { success: true; module: T | undefined } | { success: false; error: string };\n\ntype ModuleWithVersion<T> = T & { version: string };\n\ntype TSModuleData = {\n ts: typeof import(\"typescript\");\n parsedConfig: import(\"typescript\").ParsedCommandLine;\n host: import(\"typescript\").CompilerHost;\n};\n\ntype BabelModuleData = {\n babel: typeof import(\"@babel/core\");\n};\n\ntype ReactModuleData = {\n transform: \"legacy\" | \"modern\";\n};\n\nexport type TSModule = ModuleWithVersion<TSModuleData>;\nexport type BabelModule = ModuleWithVersion<BabelModuleData>;\nexport type ReactModule = ModuleWithVersion<ReactModuleData>;\n\nexport type DetectedModules = {\n ts?: TSModule;\n babel?: BabelModule;\n react?: ReactModule;\n};\n\nexport type DetectModulesResult =\n | { success: true; modules: DetectedModules }\n | { success: false; errors: string[] };\n\ntype DepType =\n | \"dependencies\"\n | \"devDependencies\"\n | \"peerDependencies\"\n | \"optionalDependencies\";\nexport function getMinVersion(\n packageJson: PackageJson,\n depName: string,\n exclude: DepType[],\n): semver.SemVer | null {\n const allDepKeys = new Set<DepType>([\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n \"optionalDependencies\",\n ]);\n for (const e of exclude) {\n allDepKeys.delete(e);\n }\n\n let minVersion: semver.SemVer | null = null;\n\n for (const depKey of allDepKeys) {\n const depVersion = packageJson[depKey]?.[depName];\n if (depVersion) {\n const version = semver.minVersion(depVersion);\n if (!version) {\n warnLog(\"node-semver cannot parse version of\", depName, \"from\", depKey);\n warnLog(\"Version:\", depVersion);\n continue;\n }\n if (!minVersion) {\n minVersion = version;\n continue;\n }\n if (semver.lt(version, minVersion)) {\n minVersion = version;\n }\n }\n }\n\n return minVersion;\n}\n\nasync function detectBabel(\n packageJson: PackageJson,\n isMonorepoPackage: boolean,\n): Promise<DetectionResult<BabelModule>> {\n const hasBabelInPackage = getMinVersion(packageJson, \"@babel/core\", [\n \"optionalDependencies\",\n ]);\n\n if (isMonorepoPackage && hasBabelInPackage) {\n return {\n success: false,\n error:\n `Babel found in package-level package.json for monorepo package \"${packageJson.name}\".\\n` +\n `In monorepos, build tools like Babel should be defined in the workspace root package.json, not in individual packages.\\n` +\n `Please move \"@babel/core\" from this package's dependencies/devDependencies to the root package.json's devDependencies.`,\n };\n }\n\n if (\"@babel/core\" in (packageJson.optionalDependencies ?? {})) {\n errorLog(\"babel excluded because inside optionalDependencies\");\n return {\n success: false,\n error: \"Babel excluded because it's in optionalDependencies\",\n };\n }\n\n // Check for babel in package deps\n const babelVersion = getMinVersion(packageJson, \"@babel/core\", [\n \"optionalDependencies\",\n ]);\n\n if (!babelVersion) {\n errorLog(\"babel\");\n return { success: true, module: undefined };\n }\n\n try {\n const babel = await import(\"@babel/core\");\n okLog(\"babel, version:\", babel.version);\n return {\n success: true,\n module: {\n babel,\n version: babel.version,\n },\n };\n } catch {\n errorLog(\"babel\");\n return { success: false, error: \"Failed to import @babel/core\" };\n }\n}\n\nasync function detectReact(\n packageJson: PackageJson,\n isMonorepoPackage: boolean,\n): Promise<DetectionResult<ReactModule>> {\n const reactVersionInPackage = getMinVersion(packageJson, \"react\", [\n \"devDependencies\",\n ]);\n\n if (isMonorepoPackage && reactVersionInPackage) {\n return {\n success: false,\n error:\n `React found in package-level package.json for monorepo package \"${packageJson.name}\".\\n` +\n `In monorepos, build tools like React should be defined in the workspace root package.json, not in individual packages.\\n` +\n `Please move \"react\" from this package's dependencies/peerDependencies to the root package.json's dependencies or peerDependencies.`,\n };\n }\n\n const reactVersion = getMinVersion(packageJson, \"react\", [\"devDependencies\"]);\n\n if (reactVersion) {\n const isLegacy = semver.lt(reactVersion, \"17.0.0\");\n const transform = isLegacy ? \"legacy\" : \"modern\";\n okLog(\n `react, min version: ${reactVersion.version}. Transform: ${transform}`,\n );\n return {\n success: true,\n module: {\n transform,\n version: reactVersion.version,\n },\n };\n }\n\n errorLog(\"react\");\n return { success: true, module: undefined };\n}\n\nasync function detectTypescript(\n packageJson: PackageJson,\n dirs: Dirs,\n monorepoType?: \"pnpm\" | null,\n): Promise<DetectionResult<TSModule>> {\n const typescriptVersion = getMinVersion(packageJson, \"typescript\", []);\n\n if (monorepoType != null && typescriptVersion) {\n return {\n success: false,\n error:\n `TypeScript found in package-level package.json for monorepo package \"${packageJson.name}\".\\n` +\n `In monorepos, build tools like TypeScript should be defined in the workspace root package.json, not in individual packages.\\n` +\n `Please move \"typescript\" from this package's dependencies/devDependencies to the root package.json's devDependencies.`,\n };\n }\n\n if (!typescriptVersion) {\n errorLog(\"typescript\");\n return { success: true, module: undefined };\n }\n\n let ts: typeof import(\"typescript\");\n try {\n // ts <=4.3 has no named exports. The all methods are located in the default export\n ts = (await import(\"typescript\")).default;\n } catch {\n if (monorepoType === \"pnpm\") {\n return {\n success: false,\n error:\n 'smartbundle found the .ts entrypoint but required \"typescript\" to build .d.ts files. ' +\n 'Please install the \"typescript\" dependency. ' +\n \"In pnpm workspaces, you may need to either:\\n\" +\n '1. Add \"hoist-workspace-packages=true\" to your pnpm-workspace.yaml file (recommended), or\\n' +\n '2. Add \"public-hoist-pattern[]=[\\\\\"typescript\\\\\"]\" to your pnpm-workspace.yaml file, or\\n' +\n '3. Add \"typescript\" as a devDependency in each package\\'s package.json\\n' +\n \"See https://pnpm.io/settings#dependency-hoisting-settings for more details.\",\n };\n } else {\n return {\n success: false,\n error:\n 'smartbundle found the .ts entrypoint but required \"typescript\" to build .d.ts files. ' +\n 'Please install the \"typescript\" dependency.',\n };\n }\n }\n\n okLog(\"typescript, version:\", ts.version);\n\n const configFilePath = ts.findConfigFile(dirs.sourceDir, ts.sys.fileExists);\n if (!configFilePath) {\n return {\n success: false,\n error:\n \"Cannot find a tsconfig.json file. You should declare it. Please, read the https://github.com/XaveScor/smartbundle/issues/131 for more information\",\n };\n }\n const configFile = ts.readConfigFile(configFilePath, ts.sys.readFile);\n if (configFile.error) {\n const readableError = ts.flattenDiagnosticMessageText(\n configFile.error.messageText,\n \"\\n\",\n );\n return {\n success: false,\n error: `Cannot read tsconfig.json file, error: ${readableError}`,\n };\n }\n const parsedConfig = ts.parseJsonConfigFileContent(\n configFile.config,\n ts.sys,\n dirs.sourceDir,\n {\n declaration: true,\n emitDeclarationOnly: true,\n strict: false,\n strictNullChecks: false,\n strictFunctionTypes: false,\n strictPropertyInitialization: false,\n skipLibCheck: true,\n skipDefaultLibCheck: true,\n outDir: \"\",\n // https://github.com/XaveScor/bobrik/issues/22#issuecomment-2308552352\n noEmit: false,\n },\n configFilePath,\n );\n\n if (!parsedConfig.options.verbatimModuleSyntax) {\n return {\n success: false,\n error:\n \"verbatimModuleSyntax should be enabled in tsconfig.json. Read https://github.com/XaveScor/smartbundle/issues/131 for more explanation.\\n\" +\n \"You also can upvote the issue if you need the support of verbatimModuleSyntax: false in your library\",\n };\n }\n\n const host = ts.createCompilerHost(parsedConfig.options);\n\n return {\n success: true,\n module: {\n ts,\n parsedConfig,\n host,\n version: ts.version,\n },\n };\n}\n\nexport async function detectModules(\n packageJson: PackageJson,\n dirs: Dirs,\n monorepo?: Monorepo,\n): Promise<DetectModulesResult> {\n if (!monorepo) {\n return detectPackageModules(packageJson, dirs);\n }\n\n // First, check if package has ts/babel (which is wrong in monorepo)\n const packageValidation = await detectPackageModules(\n packageJson,\n dirs,\n monorepo.type,\n );\n\n // Collect validation errors\n const errors: string[] = [];\n if (!packageValidation.success) {\n errors.push(...packageValidation.errors);\n } else {\n if (packageValidation.modules.ts) {\n errors.push(\n `Package \"${packageJson.name}\" has ts/babel in package.json, but it's not allowed in monorepo.`,\n );\n }\n if (packageValidation.modules.babel) {\n errors.push(\n `Package \"${packageJson.name}\" has babel in package.json, but it's not allowed in monorepo.`,\n );\n }\n }\n\n // Create merged package.json with workspace devDeps for ts/babel\n const mergedPackageJson: PackageJson = {\n ...packageJson,\n devDependencies: {\n ...monorepo.devDeps,\n ...packageJson.devDependencies,\n },\n };\n\n // Detect modules with merged package.json (ts/babel from workspace, react from package)\n const result = await detectPackageModules(mergedPackageJson, dirs);\n\n if (!result.success) {\n errors.push(...result.errors);\n }\n\n if (errors.length > 0) {\n return { success: false, errors };\n }\n\n return result;\n}\n\nasync function detectPackageModules(\n packageJson: PackageJson,\n dirs: Dirs,\n monorepoType?: \"pnpm\" | null,\n): Promise<DetectModulesResult> {\n log(\"Detecting modules\");\n\n const [tsResult, babelResult, reactResult] = await Promise.all([\n detectTypescript(packageJson, dirs, monorepoType),\n detectBabel(packageJson, monorepoType != null),\n detectReact(packageJson, monorepoType != null),\n ]);\n\n const errors: string[] = [];\n const modules: DetectedModules = {};\n\n if (!tsResult.success) {\n errors.push(tsResult.error);\n } else if (tsResult.module) {\n modules.ts = tsResult.module;\n }\n\n if (!babelResult.success) {\n errors.push(babelResult.error);\n } else if (babelResult.module) {\n modules.babel = babelResult.module;\n }\n\n if (!reactResult.success) {\n errors.push(reactResult.error);\n } else if (reactResult.module) {\n modules.react = reactResult.module;\n }\n\n lineLog();\n\n if (errors.length > 0) {\n return { success: false, errors };\n }\n\n return { success: true, modules };\n}\n"],"names":["warnLog","errorLog","okLog","log","lineLog"],"mappings":"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"}
|
1
|
+
{"version":3,"file":"detectModules.js","sources":["../../../../src/detectModules.ts"],"sourcesContent":["import { type PackageJson } from \"./packageJson.js\";\nimport semver from \"semver\";\nimport { okLog, errorLog, log, lineLog, warnLog } from \"./log.js\";\nimport type { Dirs } from \"./resolveDirs.js\";\nimport type { Monorepo } from \"./args.js\";\n\ntype DetectionResult<T> =\n // We have undefined here is module is not found\n // It is not an error because the user would disable some functionality by not installing deps\n { success: true; module: T | undefined } | { success: false; error: string };\n\ntype ModuleWithVersion<T> = T & { version: string };\n\ntype TSModuleData = {\n ts: typeof import(\"typescript\");\n parsedConfig: import(\"typescript\").ParsedCommandLine;\n host: import(\"typescript\").CompilerHost;\n};\n\ntype BabelModuleData = {\n babel: typeof import(\"@babel/core\");\n};\n\ntype ReactModuleData = {\n transform: \"legacy\" | \"modern\";\n};\n\nexport type TSModule = ModuleWithVersion<TSModuleData>;\nexport type BabelModule = ModuleWithVersion<BabelModuleData>;\nexport type ReactModule = ModuleWithVersion<ReactModuleData>;\n\nexport type DetectedModules = {\n ts?: TSModule;\n babel?: BabelModule;\n react?: ReactModule;\n};\n\nexport type DetectModulesResult =\n | { success: true; modules: DetectedModules }\n | { success: false; errors: string[] };\n\ntype DepType =\n | \"dependencies\"\n | \"devDependencies\"\n | \"peerDependencies\"\n | \"optionalDependencies\";\nexport function getMinVersion(\n packageJson: PackageJson,\n depName: string,\n exclude: DepType[],\n): semver.SemVer | null {\n const allDepKeys = new Set<DepType>([\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n \"optionalDependencies\",\n ]);\n for (const e of exclude) {\n allDepKeys.delete(e);\n }\n\n let minVersion: semver.SemVer | null = null;\n\n for (const depKey of allDepKeys) {\n const depVersion = packageJson[depKey]?.[depName];\n if (depVersion) {\n const version = semver.minVersion(depVersion);\n if (!version) {\n warnLog(\"node-semver cannot parse version of\", depName, \"from\", depKey);\n warnLog(\"Version:\", depVersion);\n continue;\n }\n if (!minVersion) {\n minVersion = version;\n continue;\n }\n if (semver.lt(version, minVersion)) {\n minVersion = version;\n }\n }\n }\n\n return minVersion;\n}\n\nasync function detectBabel(\n packageJson: PackageJson,\n isMonorepoPackage: boolean,\n): Promise<DetectionResult<BabelModule>> {\n const hasBabelInPackage = getMinVersion(packageJson, \"@babel/core\", [\n \"optionalDependencies\",\n ]);\n\n if (isMonorepoPackage && hasBabelInPackage) {\n return {\n success: false,\n error:\n `Babel found in package-level package.json for monorepo package \"${packageJson.name}\".\\n` +\n `In monorepos, build tools like Babel should be defined in the workspace root package.json, not in individual packages.\\n` +\n `Please move \"@babel/core\" from this package's dependencies/devDependencies to the root package.json's devDependencies.`,\n };\n }\n\n if (\"@babel/core\" in (packageJson.optionalDependencies ?? {})) {\n errorLog(\"babel excluded because inside optionalDependencies\");\n return {\n success: false,\n error: \"Babel excluded because it's in optionalDependencies\",\n };\n }\n\n // Check for babel in package deps\n const babelVersion = getMinVersion(packageJson, \"@babel/core\", [\n \"optionalDependencies\",\n ]);\n\n if (!babelVersion) {\n errorLog(\"babel\");\n return { success: true, module: undefined };\n }\n\n try {\n const babel = await import(\"@babel/core\");\n okLog(\"babel, version:\", babel.version);\n return {\n success: true,\n module: {\n babel,\n version: babel.version,\n },\n };\n } catch {\n errorLog(\"babel\");\n return { success: false, error: \"Failed to import @babel/core\" };\n }\n}\n\nasync function detectReact(\n packageJson: PackageJson,\n isMonorepoPackage: boolean,\n): Promise<DetectionResult<ReactModule>> {\n const reactVersionInPackage = getMinVersion(packageJson, \"react\", [\n \"devDependencies\",\n ]);\n\n if (isMonorepoPackage && reactVersionInPackage) {\n return {\n success: false,\n error:\n `React found in package-level package.json for monorepo package \"${packageJson.name}\".\\n` +\n `In monorepos, build tools like React should be defined in the workspace root package.json, not in individual packages.\\n` +\n `Please move \"react\" from this package's dependencies/peerDependencies to the root package.json's dependencies or peerDependencies.`,\n };\n }\n\n const reactVersion = getMinVersion(packageJson, \"react\", [\"devDependencies\"]);\n\n if (reactVersion) {\n const isLegacy = semver.lt(reactVersion, \"17.0.0\");\n const transform = isLegacy ? \"legacy\" : \"modern\";\n okLog(\n `react, min version: ${reactVersion.version}. Transform: ${transform}`,\n );\n return {\n success: true,\n module: {\n transform,\n version: reactVersion.version,\n },\n };\n }\n\n errorLog(\"react\");\n return { success: true, module: undefined };\n}\n\nasync function detectTypescript(\n packageJson: PackageJson,\n dirs: Dirs,\n monorepoType?: \"pnpm\" | null,\n): Promise<DetectionResult<TSModule>> {\n const typescriptVersion = getMinVersion(packageJson, \"typescript\", []);\n\n if (monorepoType != null && typescriptVersion) {\n return {\n success: false,\n error:\n `TypeScript found in package-level package.json for monorepo package \"${packageJson.name}\".\\n` +\n `In monorepos, build tools like TypeScript should be defined in the workspace root package.json, not in individual packages.\\n` +\n `Please move \"typescript\" from this package's dependencies/devDependencies to the root package.json's devDependencies.`,\n };\n }\n\n if (!typescriptVersion) {\n errorLog(\"typescript\");\n return { success: true, module: undefined };\n }\n\n let ts: typeof import(\"typescript\");\n try {\n // ts <=4.3 has no named exports. The all methods are located in the default export\n ts = (await import(\"typescript\")).default;\n } catch {\n if (monorepoType === \"pnpm\") {\n return {\n success: false,\n error:\n 'smartbundle found the .ts entrypoint but required \"typescript\" to build .d.ts files. ' +\n 'Please install the \"typescript\" dependency. ' +\n \"In pnpm workspaces, you may need to either:\\n\" +\n '1. Add \"hoist-workspace-packages=true\" to your pnpm-workspace.yaml file (recommended), or\\n' +\n '2. Add \"public-hoist-pattern[]=[\\\\\"typescript\\\\\"]\" to your pnpm-workspace.yaml file, or\\n' +\n '3. Add \"typescript\" as a devDependency in each package\\'s package.json\\n' +\n \"See https://pnpm.io/settings#dependency-hoisting-settings for more details.\",\n };\n } else {\n return {\n success: false,\n error:\n 'smartbundle found the .ts entrypoint but required \"typescript\" to build .d.ts files. ' +\n 'Please install the \"typescript\" dependency.',\n };\n }\n }\n\n okLog(\"typescript, version:\", ts.version);\n\n const configFilePath = ts.findConfigFile(dirs.sourceDir, ts.sys.fileExists);\n if (!configFilePath) {\n return {\n success: false,\n error:\n \"Cannot find a tsconfig.json file. You should declare it. Please, read the https://github.com/XaveScor/smartbundle/issues/131 for more information\",\n };\n }\n const configFile = ts.readConfigFile(configFilePath, ts.sys.readFile);\n if (configFile.error) {\n const readableError = ts.flattenDiagnosticMessageText(\n configFile.error.messageText,\n \"\\n\",\n );\n return {\n success: false,\n error: `Cannot read tsconfig.json file, error: ${readableError}`,\n };\n }\n const parsedConfig = ts.parseJsonConfigFileContent(\n configFile.config,\n ts.sys,\n dirs.sourceDir,\n {\n declaration: true,\n emitDeclarationOnly: true,\n skipLibCheck: true,\n skipDefaultLibCheck: true,\n outDir: \"\",\n // https://github.com/XaveScor/bobrik/issues/22#issuecomment-2308552352\n noEmit: false,\n },\n configFilePath,\n );\n\n if (!parsedConfig.options.verbatimModuleSyntax) {\n return {\n success: false,\n error:\n \"verbatimModuleSyntax should be enabled in tsconfig.json. Read https://github.com/XaveScor/smartbundle/issues/131 for more explanation.\\n\" +\n \"You also can upvote the issue if you need the support of verbatimModuleSyntax: false in your library\",\n };\n }\n\n const host = ts.createCompilerHost(parsedConfig.options);\n\n return {\n success: true,\n module: {\n ts,\n parsedConfig,\n host,\n version: ts.version,\n },\n };\n}\n\nexport async function detectModules(\n packageJson: PackageJson,\n dirs: Dirs,\n monorepo?: Monorepo,\n): Promise<DetectModulesResult> {\n if (!monorepo) {\n return detectPackageModules(packageJson, dirs);\n }\n\n // First, check if package has ts/babel (which is wrong in monorepo)\n const packageValidation = await detectPackageModules(\n packageJson,\n dirs,\n monorepo.type,\n );\n\n // Collect validation errors\n const errors: string[] = [];\n if (!packageValidation.success) {\n errors.push(...packageValidation.errors);\n } else {\n if (packageValidation.modules.ts) {\n errors.push(\n `Package \"${packageJson.name}\" has ts/babel in package.json, but it's not allowed in monorepo.`,\n );\n }\n if (packageValidation.modules.babel) {\n errors.push(\n `Package \"${packageJson.name}\" has babel in package.json, but it's not allowed in monorepo.`,\n );\n }\n }\n\n // Create merged package.json with workspace devDeps for ts/babel\n const mergedPackageJson: PackageJson = {\n ...packageJson,\n devDependencies: {\n ...monorepo.devDeps,\n ...packageJson.devDependencies,\n },\n };\n\n // Detect modules with merged package.json (ts/babel from workspace, react from package)\n const result = await detectPackageModules(mergedPackageJson, dirs);\n\n if (!result.success) {\n errors.push(...result.errors);\n }\n\n if (errors.length > 0) {\n return { success: false, errors };\n }\n\n return result;\n}\n\nasync function detectPackageModules(\n packageJson: PackageJson,\n dirs: Dirs,\n monorepoType?: \"pnpm\" | null,\n): Promise<DetectModulesResult> {\n log(\"Detecting modules\");\n\n const [tsResult, babelResult, reactResult] = await Promise.all([\n detectTypescript(packageJson, dirs, monorepoType),\n detectBabel(packageJson, monorepoType != null),\n detectReact(packageJson, monorepoType != null),\n ]);\n\n const errors: string[] = [];\n const modules: DetectedModules = {};\n\n if (!tsResult.success) {\n errors.push(tsResult.error);\n } else if (tsResult.module) {\n modules.ts = tsResult.module;\n }\n\n if (!babelResult.success) {\n errors.push(babelResult.error);\n } else if (babelResult.module) {\n modules.babel = babelResult.module;\n }\n\n if (!reactResult.success) {\n errors.push(reactResult.error);\n } else if (reactResult.module) {\n modules.react = reactResult.module;\n }\n\n lineLog();\n\n if (errors.length > 0) {\n return { success: false, errors };\n }\n\n return { success: true, modules };\n}\n"],"names":["warnLog","errorLog","okLog","log","lineLog"],"mappings":"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"}
|
@@ -2,7 +2,7 @@ import { type Args } from "./args.js";
|
|
2
2
|
import { PrettyError } from "./PrettyErrors.js";
|
3
3
|
export declare function defineViteConfig(args?: Args): Promise<import("vite").UserConfig | {
|
4
4
|
error: boolean;
|
5
|
-
errors:
|
5
|
+
errors: string[];
|
6
6
|
}>;
|
7
7
|
type RunResult = {
|
8
8
|
error: false;
|
@@ -1,25 +1,25 @@
|
|
1
1
|
import type { PackageJson } from "../packageJson.js";
|
2
2
|
export declare function convertPackageJson(packageJson: PackageJson): {
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
description?: string;
|
8
|
-
dependencies?: Record<string, string
|
9
|
-
optionalDependencies?: Record<string, string
|
10
|
-
bin?: Map<string, string
|
3
|
+
name: string;
|
4
|
+
version: string;
|
5
|
+
private: boolean;
|
6
|
+
exports?: Map<string, string> | undefined;
|
7
|
+
description?: string | undefined;
|
8
|
+
dependencies?: Record<string, string> | undefined;
|
9
|
+
optionalDependencies?: Record<string, string> | undefined;
|
10
|
+
bin?: Map<string, string> | undefined;
|
11
11
|
repository?: any;
|
12
|
-
keywords?: string[];
|
12
|
+
keywords?: string[] | undefined;
|
13
13
|
author?: any;
|
14
|
-
contributors?: (string | {})[];
|
14
|
+
contributors?: (string | {})[] | undefined;
|
15
15
|
license?: any;
|
16
|
-
devDependencies?: Record<string, string
|
17
|
-
peerDependencies?: Record<string, string
|
18
|
-
engines?: Record<string, string
|
19
|
-
browser?: string | Record<string, string
|
20
|
-
funding?: string | {};
|
21
|
-
os?: string[];
|
22
|
-
cpu?: string[];
|
16
|
+
devDependencies?: Record<string, string> | undefined;
|
17
|
+
peerDependencies?: Record<string, string> | undefined;
|
18
|
+
engines?: Record<string, string> | undefined;
|
19
|
+
browser?: string | Record<string, string> | undefined;
|
20
|
+
funding?: string | {} | undefined;
|
21
|
+
os?: string[] | undefined;
|
22
|
+
cpu?: string[] | undefined;
|
23
23
|
scripts?: any;
|
24
24
|
maintainers?: any;
|
25
25
|
bugs?: any;
|
@@ -44,26 +44,26 @@ declare function createPackageJsonSchema(sourceDir: string): z.ZodEffects<z.ZodO
|
|
44
44
|
babel: z.ZodOptional<z.ZodAny>;
|
45
45
|
peerDependenciesMeta: z.ZodOptional<z.ZodAny>;
|
46
46
|
}, "strip", z.ZodTypeAny, {
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
description?: string;
|
52
|
-
dependencies?: Record<string, string
|
53
|
-
optionalDependencies?: Record<string, string
|
54
|
-
bin?: Map<string, string
|
47
|
+
name: string;
|
48
|
+
version: string;
|
49
|
+
private: boolean;
|
50
|
+
exports?: Map<string, string> | undefined;
|
51
|
+
description?: string | undefined;
|
52
|
+
dependencies?: Record<string, string> | undefined;
|
53
|
+
optionalDependencies?: Record<string, string> | undefined;
|
54
|
+
bin?: Map<string, string> | undefined;
|
55
55
|
repository?: any;
|
56
|
-
keywords?: string[];
|
56
|
+
keywords?: string[] | undefined;
|
57
57
|
author?: any;
|
58
|
-
contributors?: (string | {})[];
|
58
|
+
contributors?: (string | {})[] | undefined;
|
59
59
|
license?: any;
|
60
|
-
devDependencies?: Record<string, string
|
61
|
-
peerDependencies?: Record<string, string
|
62
|
-
engines?: Record<string, string
|
63
|
-
browser?: string | Record<string, string
|
64
|
-
funding?: string | {};
|
65
|
-
os?: string[];
|
66
|
-
cpu?: string[];
|
60
|
+
devDependencies?: Record<string, string> | undefined;
|
61
|
+
peerDependencies?: Record<string, string> | undefined;
|
62
|
+
engines?: Record<string, string> | undefined;
|
63
|
+
browser?: string | Record<string, string> | undefined;
|
64
|
+
funding?: string | {} | undefined;
|
65
|
+
os?: string[] | undefined;
|
66
|
+
cpu?: string[] | undefined;
|
67
67
|
scripts?: any;
|
68
68
|
maintainers?: any;
|
69
69
|
bugs?: any;
|
@@ -73,26 +73,26 @@ declare function createPackageJsonSchema(sourceDir: string): z.ZodEffects<z.ZodO
|
|
73
73
|
babel?: any;
|
74
74
|
peerDependenciesMeta?: any;
|
75
75
|
}, {
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
description?: string;
|
81
|
-
dependencies?: Record<string, string
|
82
|
-
optionalDependencies?: Record<string, string
|
83
|
-
bin?: string | Record<string, string
|
76
|
+
name: string;
|
77
|
+
version: string;
|
78
|
+
private: boolean;
|
79
|
+
exports?: string | Record<string, string> | undefined;
|
80
|
+
description?: string | undefined;
|
81
|
+
dependencies?: Record<string, string> | undefined;
|
82
|
+
optionalDependencies?: Record<string, string> | undefined;
|
83
|
+
bin?: string | Record<string, string> | undefined;
|
84
84
|
repository?: any;
|
85
|
-
keywords?: string[];
|
85
|
+
keywords?: string[] | undefined;
|
86
86
|
author?: any;
|
87
|
-
contributors?: (string | {})[];
|
87
|
+
contributors?: (string | {})[] | undefined;
|
88
88
|
license?: any;
|
89
|
-
devDependencies?: Record<string, string
|
90
|
-
peerDependencies?: Record<string, string
|
91
|
-
engines?: Record<string, string
|
92
|
-
browser?: string | Record<string, string
|
93
|
-
funding?: string | {};
|
94
|
-
os?: string[];
|
95
|
-
cpu?: string[];
|
89
|
+
devDependencies?: Record<string, string> | undefined;
|
90
|
+
peerDependencies?: Record<string, string> | undefined;
|
91
|
+
engines?: Record<string, string> | undefined;
|
92
|
+
browser?: string | Record<string, string> | undefined;
|
93
|
+
funding?: string | {} | undefined;
|
94
|
+
os?: string[] | undefined;
|
95
|
+
cpu?: string[] | undefined;
|
96
96
|
scripts?: any;
|
97
97
|
maintainers?: any;
|
98
98
|
bugs?: any;
|
@@ -102,26 +102,26 @@ declare function createPackageJsonSchema(sourceDir: string): z.ZodEffects<z.ZodO
|
|
102
102
|
babel?: any;
|
103
103
|
peerDependenciesMeta?: any;
|
104
104
|
}>, {
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
description?: string;
|
110
|
-
dependencies?: Record<string, string
|
111
|
-
optionalDependencies?: Record<string, string
|
112
|
-
bin?: Map<string, string
|
105
|
+
name: string;
|
106
|
+
version: string;
|
107
|
+
private: boolean;
|
108
|
+
exports?: Map<string, string> | undefined;
|
109
|
+
description?: string | undefined;
|
110
|
+
dependencies?: Record<string, string> | undefined;
|
111
|
+
optionalDependencies?: Record<string, string> | undefined;
|
112
|
+
bin?: Map<string, string> | undefined;
|
113
113
|
repository?: any;
|
114
|
-
keywords?: string[];
|
114
|
+
keywords?: string[] | undefined;
|
115
115
|
author?: any;
|
116
|
-
contributors?: (string | {})[];
|
116
|
+
contributors?: (string | {})[] | undefined;
|
117
117
|
license?: any;
|
118
|
-
devDependencies?: Record<string, string
|
119
|
-
peerDependencies?: Record<string, string
|
120
|
-
engines?: Record<string, string
|
121
|
-
browser?: string | Record<string, string
|
122
|
-
funding?: string | {};
|
123
|
-
os?: string[];
|
124
|
-
cpu?: string[];
|
118
|
+
devDependencies?: Record<string, string> | undefined;
|
119
|
+
peerDependencies?: Record<string, string> | undefined;
|
120
|
+
engines?: Record<string, string> | undefined;
|
121
|
+
browser?: string | Record<string, string> | undefined;
|
122
|
+
funding?: string | {} | undefined;
|
123
|
+
os?: string[] | undefined;
|
124
|
+
cpu?: string[] | undefined;
|
125
125
|
scripts?: any;
|
126
126
|
maintainers?: any;
|
127
127
|
bugs?: any;
|
@@ -131,26 +131,26 @@ declare function createPackageJsonSchema(sourceDir: string): z.ZodEffects<z.ZodO
|
|
131
131
|
babel?: any;
|
132
132
|
peerDependenciesMeta?: any;
|
133
133
|
}, {
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
description?: string;
|
139
|
-
dependencies?: Record<string, string
|
140
|
-
optionalDependencies?: Record<string, string
|
141
|
-
bin?: string | Record<string, string
|
134
|
+
name: string;
|
135
|
+
version: string;
|
136
|
+
private: boolean;
|
137
|
+
exports?: string | Record<string, string> | undefined;
|
138
|
+
description?: string | undefined;
|
139
|
+
dependencies?: Record<string, string> | undefined;
|
140
|
+
optionalDependencies?: Record<string, string> | undefined;
|
141
|
+
bin?: string | Record<string, string> | undefined;
|
142
142
|
repository?: any;
|
143
|
-
keywords?: string[];
|
143
|
+
keywords?: string[] | undefined;
|
144
144
|
author?: any;
|
145
|
-
contributors?: (string | {})[];
|
145
|
+
contributors?: (string | {})[] | undefined;
|
146
146
|
license?: any;
|
147
|
-
devDependencies?: Record<string, string
|
148
|
-
peerDependencies?: Record<string, string
|
149
|
-
engines?: Record<string, string
|
150
|
-
browser?: string | Record<string, string
|
151
|
-
funding?: string | {};
|
152
|
-
os?: string[];
|
153
|
-
cpu?: string[];
|
147
|
+
devDependencies?: Record<string, string> | undefined;
|
148
|
+
peerDependencies?: Record<string, string> | undefined;
|
149
|
+
engines?: Record<string, string> | undefined;
|
150
|
+
browser?: string | Record<string, string> | undefined;
|
151
|
+
funding?: string | {} | undefined;
|
152
|
+
os?: string[] | undefined;
|
153
|
+
cpu?: string[] | undefined;
|
154
154
|
scripts?: any;
|
155
155
|
maintainers?: any;
|
156
156
|
bugs?: any;
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import { type UserConfig } from "vite";
|
1
|
+
import { type UserConfig, type Rollup } from "vite";
|
2
2
|
type ViteTaskParams = {
|
3
3
|
viteConfig: UserConfig;
|
4
4
|
};
|
5
|
-
export declare function viteTask({ viteConfig }: ViteTaskParams): Promise<
|
5
|
+
export declare function viteTask({ viteConfig }: ViteTaskParams): Promise<Rollup.OutputChunk[]>;
|
6
6
|
export {};
|
@@ -1,10 +1,10 @@
|
|
1
1
|
export declare const args: {
|
2
2
|
[x: string]: unknown;
|
3
|
-
sourceDir: string;
|
4
|
-
packagePath: string;
|
5
|
-
outputDir: string;
|
6
|
-
seq: boolean;
|
7
|
-
ci: boolean;
|
3
|
+
sourceDir: string | undefined;
|
4
|
+
packagePath: string | undefined;
|
5
|
+
outputDir: string | undefined;
|
6
|
+
seq: boolean | undefined;
|
7
|
+
ci: boolean | undefined;
|
8
8
|
_: (string | number)[];
|
9
9
|
$0: string;
|
10
10
|
};
|
@@ -166,10 +166,6 @@ See https://pnpm.io/settings#dependency-hoisting-settings for more details.`
|
|
166
166
|
{
|
167
167
|
declaration: true,
|
168
168
|
emitDeclarationOnly: true,
|
169
|
-
strict: false,
|
170
|
-
strictNullChecks: false,
|
171
|
-
strictFunctionTypes: false,
|
172
|
-
strictPropertyInitialization: false,
|
173
169
|
skipLibCheck: true,
|
174
170
|
skipDefaultLibCheck: true,
|
175
171
|
outDir: "",
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"detectModules.mjs","sources":["../../../../src/detectModules.ts"],"sourcesContent":["import { type PackageJson } from \"./packageJson.js\";\nimport semver from \"semver\";\nimport { okLog, errorLog, log, lineLog, warnLog } from \"./log.js\";\nimport type { Dirs } from \"./resolveDirs.js\";\nimport type { Monorepo } from \"./args.js\";\n\ntype DetectionResult<T> =\n // We have undefined here is module is not found\n // It is not an error because the user would disable some functionality by not installing deps\n { success: true; module: T | undefined } | { success: false; error: string };\n\ntype ModuleWithVersion<T> = T & { version: string };\n\ntype TSModuleData = {\n ts: typeof import(\"typescript\");\n parsedConfig: import(\"typescript\").ParsedCommandLine;\n host: import(\"typescript\").CompilerHost;\n};\n\ntype BabelModuleData = {\n babel: typeof import(\"@babel/core\");\n};\n\ntype ReactModuleData = {\n transform: \"legacy\" | \"modern\";\n};\n\nexport type TSModule = ModuleWithVersion<TSModuleData>;\nexport type BabelModule = ModuleWithVersion<BabelModuleData>;\nexport type ReactModule = ModuleWithVersion<ReactModuleData>;\n\nexport type DetectedModules = {\n ts?: TSModule;\n babel?: BabelModule;\n react?: ReactModule;\n};\n\nexport type DetectModulesResult =\n | { success: true; modules: DetectedModules }\n | { success: false; errors: string[] };\n\ntype DepType =\n | \"dependencies\"\n | \"devDependencies\"\n | \"peerDependencies\"\n | \"optionalDependencies\";\nexport function getMinVersion(\n packageJson: PackageJson,\n depName: string,\n exclude: DepType[],\n): semver.SemVer | null {\n const allDepKeys = new Set<DepType>([\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n \"optionalDependencies\",\n ]);\n for (const e of exclude) {\n allDepKeys.delete(e);\n }\n\n let minVersion: semver.SemVer | null = null;\n\n for (const depKey of allDepKeys) {\n const depVersion = packageJson[depKey]?.[depName];\n if (depVersion) {\n const version = semver.minVersion(depVersion);\n if (!version) {\n warnLog(\"node-semver cannot parse version of\", depName, \"from\", depKey);\n warnLog(\"Version:\", depVersion);\n continue;\n }\n if (!minVersion) {\n minVersion = version;\n continue;\n }\n if (semver.lt(version, minVersion)) {\n minVersion = version;\n }\n }\n }\n\n return minVersion;\n}\n\nasync function detectBabel(\n packageJson: PackageJson,\n isMonorepoPackage: boolean,\n): Promise<DetectionResult<BabelModule>> {\n const hasBabelInPackage = getMinVersion(packageJson, \"@babel/core\", [\n \"optionalDependencies\",\n ]);\n\n if (isMonorepoPackage && hasBabelInPackage) {\n return {\n success: false,\n error:\n `Babel found in package-level package.json for monorepo package \"${packageJson.name}\".\\n` +\n `In monorepos, build tools like Babel should be defined in the workspace root package.json, not in individual packages.\\n` +\n `Please move \"@babel/core\" from this package's dependencies/devDependencies to the root package.json's devDependencies.`,\n };\n }\n\n if (\"@babel/core\" in (packageJson.optionalDependencies ?? {})) {\n errorLog(\"babel excluded because inside optionalDependencies\");\n return {\n success: false,\n error: \"Babel excluded because it's in optionalDependencies\",\n };\n }\n\n // Check for babel in package deps\n const babelVersion = getMinVersion(packageJson, \"@babel/core\", [\n \"optionalDependencies\",\n ]);\n\n if (!babelVersion) {\n errorLog(\"babel\");\n return { success: true, module: undefined };\n }\n\n try {\n const babel = await import(\"@babel/core\");\n okLog(\"babel, version:\", babel.version);\n return {\n success: true,\n module: {\n babel,\n version: babel.version,\n },\n };\n } catch {\n errorLog(\"babel\");\n return { success: false, error: \"Failed to import @babel/core\" };\n }\n}\n\nasync function detectReact(\n packageJson: PackageJson,\n isMonorepoPackage: boolean,\n): Promise<DetectionResult<ReactModule>> {\n const reactVersionInPackage = getMinVersion(packageJson, \"react\", [\n \"devDependencies\",\n ]);\n\n if (isMonorepoPackage && reactVersionInPackage) {\n return {\n success: false,\n error:\n `React found in package-level package.json for monorepo package \"${packageJson.name}\".\\n` +\n `In monorepos, build tools like React should be defined in the workspace root package.json, not in individual packages.\\n` +\n `Please move \"react\" from this package's dependencies/peerDependencies to the root package.json's dependencies or peerDependencies.`,\n };\n }\n\n const reactVersion = getMinVersion(packageJson, \"react\", [\"devDependencies\"]);\n\n if (reactVersion) {\n const isLegacy = semver.lt(reactVersion, \"17.0.0\");\n const transform = isLegacy ? \"legacy\" : \"modern\";\n okLog(\n `react, min version: ${reactVersion.version}. Transform: ${transform}`,\n );\n return {\n success: true,\n module: {\n transform,\n version: reactVersion.version,\n },\n };\n }\n\n errorLog(\"react\");\n return { success: true, module: undefined };\n}\n\nasync function detectTypescript(\n packageJson: PackageJson,\n dirs: Dirs,\n monorepoType?: \"pnpm\" | null,\n): Promise<DetectionResult<TSModule>> {\n const typescriptVersion = getMinVersion(packageJson, \"typescript\", []);\n\n if (monorepoType != null && typescriptVersion) {\n return {\n success: false,\n error:\n `TypeScript found in package-level package.json for monorepo package \"${packageJson.name}\".\\n` +\n `In monorepos, build tools like TypeScript should be defined in the workspace root package.json, not in individual packages.\\n` +\n `Please move \"typescript\" from this package's dependencies/devDependencies to the root package.json's devDependencies.`,\n };\n }\n\n if (!typescriptVersion) {\n errorLog(\"typescript\");\n return { success: true, module: undefined };\n }\n\n let ts: typeof import(\"typescript\");\n try {\n // ts <=4.3 has no named exports. The all methods are located in the default export\n ts = (await import(\"typescript\")).default;\n } catch {\n if (monorepoType === \"pnpm\") {\n return {\n success: false,\n error:\n 'smartbundle found the .ts entrypoint but required \"typescript\" to build .d.ts files. ' +\n 'Please install the \"typescript\" dependency. ' +\n \"In pnpm workspaces, you may need to either:\\n\" +\n '1. Add \"hoist-workspace-packages=true\" to your pnpm-workspace.yaml file (recommended), or\\n' +\n '2. Add \"public-hoist-pattern[]=[\\\\\"typescript\\\\\"]\" to your pnpm-workspace.yaml file, or\\n' +\n '3. Add \"typescript\" as a devDependency in each package\\'s package.json\\n' +\n \"See https://pnpm.io/settings#dependency-hoisting-settings for more details.\",\n };\n } else {\n return {\n success: false,\n error:\n 'smartbundle found the .ts entrypoint but required \"typescript\" to build .d.ts files. ' +\n 'Please install the \"typescript\" dependency.',\n };\n }\n }\n\n okLog(\"typescript, version:\", ts.version);\n\n const configFilePath = ts.findConfigFile(dirs.sourceDir, ts.sys.fileExists);\n if (!configFilePath) {\n return {\n success: false,\n error:\n \"Cannot find a tsconfig.json file. You should declare it. Please, read the https://github.com/XaveScor/smartbundle/issues/131 for more information\",\n };\n }\n const configFile = ts.readConfigFile(configFilePath, ts.sys.readFile);\n if (configFile.error) {\n const readableError = ts.flattenDiagnosticMessageText(\n configFile.error.messageText,\n \"\\n\",\n );\n return {\n success: false,\n error: `Cannot read tsconfig.json file, error: ${readableError}`,\n };\n }\n const parsedConfig = ts.parseJsonConfigFileContent(\n configFile.config,\n ts.sys,\n dirs.sourceDir,\n {\n declaration: true,\n emitDeclarationOnly: true,\n strict: false,\n strictNullChecks: false,\n strictFunctionTypes: false,\n strictPropertyInitialization: false,\n skipLibCheck: true,\n skipDefaultLibCheck: true,\n outDir: \"\",\n // https://github.com/XaveScor/bobrik/issues/22#issuecomment-2308552352\n noEmit: false,\n },\n configFilePath,\n );\n\n if (!parsedConfig.options.verbatimModuleSyntax) {\n return {\n success: false,\n error:\n \"verbatimModuleSyntax should be enabled in tsconfig.json. Read https://github.com/XaveScor/smartbundle/issues/131 for more explanation.\\n\" +\n \"You also can upvote the issue if you need the support of verbatimModuleSyntax: false in your library\",\n };\n }\n\n const host = ts.createCompilerHost(parsedConfig.options);\n\n return {\n success: true,\n module: {\n ts,\n parsedConfig,\n host,\n version: ts.version,\n },\n };\n}\n\nexport async function detectModules(\n packageJson: PackageJson,\n dirs: Dirs,\n monorepo?: Monorepo,\n): Promise<DetectModulesResult> {\n if (!monorepo) {\n return detectPackageModules(packageJson, dirs);\n }\n\n // First, check if package has ts/babel (which is wrong in monorepo)\n const packageValidation = await detectPackageModules(\n packageJson,\n dirs,\n monorepo.type,\n );\n\n // Collect validation errors\n const errors: string[] = [];\n if (!packageValidation.success) {\n errors.push(...packageValidation.errors);\n } else {\n if (packageValidation.modules.ts) {\n errors.push(\n `Package \"${packageJson.name}\" has ts/babel in package.json, but it's not allowed in monorepo.`,\n );\n }\n if (packageValidation.modules.babel) {\n errors.push(\n `Package \"${packageJson.name}\" has babel in package.json, but it's not allowed in monorepo.`,\n );\n }\n }\n\n // Create merged package.json with workspace devDeps for ts/babel\n const mergedPackageJson: PackageJson = {\n ...packageJson,\n devDependencies: {\n ...monorepo.devDeps,\n ...packageJson.devDependencies,\n },\n };\n\n // Detect modules with merged package.json (ts/babel from workspace, react from package)\n const result = await detectPackageModules(mergedPackageJson, dirs);\n\n if (!result.success) {\n errors.push(...result.errors);\n }\n\n if (errors.length > 0) {\n return { success: false, errors };\n }\n\n return result;\n}\n\nasync function detectPackageModules(\n packageJson: PackageJson,\n dirs: Dirs,\n monorepoType?: \"pnpm\" | null,\n): Promise<DetectModulesResult> {\n log(\"Detecting modules\");\n\n const [tsResult, babelResult, reactResult] = await Promise.all([\n detectTypescript(packageJson, dirs, monorepoType),\n detectBabel(packageJson, monorepoType != null),\n detectReact(packageJson, monorepoType != null),\n ]);\n\n const errors: string[] = [];\n const modules: DetectedModules = {};\n\n if (!tsResult.success) {\n errors.push(tsResult.error);\n } else if (tsResult.module) {\n modules.ts = tsResult.module;\n }\n\n if (!babelResult.success) {\n errors.push(babelResult.error);\n } else if (babelResult.module) {\n modules.babel = babelResult.module;\n }\n\n if (!reactResult.success) {\n errors.push(reactResult.error);\n } else if (reactResult.module) {\n modules.react = reactResult.module;\n }\n\n lineLog();\n\n if (errors.length > 0) {\n return { success: false, errors };\n }\n\n return { success: true, modules };\n}\n"],"names":[],"mappings":"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"}
|
1
|
+
{"version":3,"file":"detectModules.mjs","sources":["../../../../src/detectModules.ts"],"sourcesContent":["import { type PackageJson } from \"./packageJson.js\";\nimport semver from \"semver\";\nimport { okLog, errorLog, log, lineLog, warnLog } from \"./log.js\";\nimport type { Dirs } from \"./resolveDirs.js\";\nimport type { Monorepo } from \"./args.js\";\n\ntype DetectionResult<T> =\n // We have undefined here is module is not found\n // It is not an error because the user would disable some functionality by not installing deps\n { success: true; module: T | undefined } | { success: false; error: string };\n\ntype ModuleWithVersion<T> = T & { version: string };\n\ntype TSModuleData = {\n ts: typeof import(\"typescript\");\n parsedConfig: import(\"typescript\").ParsedCommandLine;\n host: import(\"typescript\").CompilerHost;\n};\n\ntype BabelModuleData = {\n babel: typeof import(\"@babel/core\");\n};\n\ntype ReactModuleData = {\n transform: \"legacy\" | \"modern\";\n};\n\nexport type TSModule = ModuleWithVersion<TSModuleData>;\nexport type BabelModule = ModuleWithVersion<BabelModuleData>;\nexport type ReactModule = ModuleWithVersion<ReactModuleData>;\n\nexport type DetectedModules = {\n ts?: TSModule;\n babel?: BabelModule;\n react?: ReactModule;\n};\n\nexport type DetectModulesResult =\n | { success: true; modules: DetectedModules }\n | { success: false; errors: string[] };\n\ntype DepType =\n | \"dependencies\"\n | \"devDependencies\"\n | \"peerDependencies\"\n | \"optionalDependencies\";\nexport function getMinVersion(\n packageJson: PackageJson,\n depName: string,\n exclude: DepType[],\n): semver.SemVer | null {\n const allDepKeys = new Set<DepType>([\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n \"optionalDependencies\",\n ]);\n for (const e of exclude) {\n allDepKeys.delete(e);\n }\n\n let minVersion: semver.SemVer | null = null;\n\n for (const depKey of allDepKeys) {\n const depVersion = packageJson[depKey]?.[depName];\n if (depVersion) {\n const version = semver.minVersion(depVersion);\n if (!version) {\n warnLog(\"node-semver cannot parse version of\", depName, \"from\", depKey);\n warnLog(\"Version:\", depVersion);\n continue;\n }\n if (!minVersion) {\n minVersion = version;\n continue;\n }\n if (semver.lt(version, minVersion)) {\n minVersion = version;\n }\n }\n }\n\n return minVersion;\n}\n\nasync function detectBabel(\n packageJson: PackageJson,\n isMonorepoPackage: boolean,\n): Promise<DetectionResult<BabelModule>> {\n const hasBabelInPackage = getMinVersion(packageJson, \"@babel/core\", [\n \"optionalDependencies\",\n ]);\n\n if (isMonorepoPackage && hasBabelInPackage) {\n return {\n success: false,\n error:\n `Babel found in package-level package.json for monorepo package \"${packageJson.name}\".\\n` +\n `In monorepos, build tools like Babel should be defined in the workspace root package.json, not in individual packages.\\n` +\n `Please move \"@babel/core\" from this package's dependencies/devDependencies to the root package.json's devDependencies.`,\n };\n }\n\n if (\"@babel/core\" in (packageJson.optionalDependencies ?? {})) {\n errorLog(\"babel excluded because inside optionalDependencies\");\n return {\n success: false,\n error: \"Babel excluded because it's in optionalDependencies\",\n };\n }\n\n // Check for babel in package deps\n const babelVersion = getMinVersion(packageJson, \"@babel/core\", [\n \"optionalDependencies\",\n ]);\n\n if (!babelVersion) {\n errorLog(\"babel\");\n return { success: true, module: undefined };\n }\n\n try {\n const babel = await import(\"@babel/core\");\n okLog(\"babel, version:\", babel.version);\n return {\n success: true,\n module: {\n babel,\n version: babel.version,\n },\n };\n } catch {\n errorLog(\"babel\");\n return { success: false, error: \"Failed to import @babel/core\" };\n }\n}\n\nasync function detectReact(\n packageJson: PackageJson,\n isMonorepoPackage: boolean,\n): Promise<DetectionResult<ReactModule>> {\n const reactVersionInPackage = getMinVersion(packageJson, \"react\", [\n \"devDependencies\",\n ]);\n\n if (isMonorepoPackage && reactVersionInPackage) {\n return {\n success: false,\n error:\n `React found in package-level package.json for monorepo package \"${packageJson.name}\".\\n` +\n `In monorepos, build tools like React should be defined in the workspace root package.json, not in individual packages.\\n` +\n `Please move \"react\" from this package's dependencies/peerDependencies to the root package.json's dependencies or peerDependencies.`,\n };\n }\n\n const reactVersion = getMinVersion(packageJson, \"react\", [\"devDependencies\"]);\n\n if (reactVersion) {\n const isLegacy = semver.lt(reactVersion, \"17.0.0\");\n const transform = isLegacy ? \"legacy\" : \"modern\";\n okLog(\n `react, min version: ${reactVersion.version}. Transform: ${transform}`,\n );\n return {\n success: true,\n module: {\n transform,\n version: reactVersion.version,\n },\n };\n }\n\n errorLog(\"react\");\n return { success: true, module: undefined };\n}\n\nasync function detectTypescript(\n packageJson: PackageJson,\n dirs: Dirs,\n monorepoType?: \"pnpm\" | null,\n): Promise<DetectionResult<TSModule>> {\n const typescriptVersion = getMinVersion(packageJson, \"typescript\", []);\n\n if (monorepoType != null && typescriptVersion) {\n return {\n success: false,\n error:\n `TypeScript found in package-level package.json for monorepo package \"${packageJson.name}\".\\n` +\n `In monorepos, build tools like TypeScript should be defined in the workspace root package.json, not in individual packages.\\n` +\n `Please move \"typescript\" from this package's dependencies/devDependencies to the root package.json's devDependencies.`,\n };\n }\n\n if (!typescriptVersion) {\n errorLog(\"typescript\");\n return { success: true, module: undefined };\n }\n\n let ts: typeof import(\"typescript\");\n try {\n // ts <=4.3 has no named exports. The all methods are located in the default export\n ts = (await import(\"typescript\")).default;\n } catch {\n if (monorepoType === \"pnpm\") {\n return {\n success: false,\n error:\n 'smartbundle found the .ts entrypoint but required \"typescript\" to build .d.ts files. ' +\n 'Please install the \"typescript\" dependency. ' +\n \"In pnpm workspaces, you may need to either:\\n\" +\n '1. Add \"hoist-workspace-packages=true\" to your pnpm-workspace.yaml file (recommended), or\\n' +\n '2. Add \"public-hoist-pattern[]=[\\\\\"typescript\\\\\"]\" to your pnpm-workspace.yaml file, or\\n' +\n '3. Add \"typescript\" as a devDependency in each package\\'s package.json\\n' +\n \"See https://pnpm.io/settings#dependency-hoisting-settings for more details.\",\n };\n } else {\n return {\n success: false,\n error:\n 'smartbundle found the .ts entrypoint but required \"typescript\" to build .d.ts files. ' +\n 'Please install the \"typescript\" dependency.',\n };\n }\n }\n\n okLog(\"typescript, version:\", ts.version);\n\n const configFilePath = ts.findConfigFile(dirs.sourceDir, ts.sys.fileExists);\n if (!configFilePath) {\n return {\n success: false,\n error:\n \"Cannot find a tsconfig.json file. You should declare it. Please, read the https://github.com/XaveScor/smartbundle/issues/131 for more information\",\n };\n }\n const configFile = ts.readConfigFile(configFilePath, ts.sys.readFile);\n if (configFile.error) {\n const readableError = ts.flattenDiagnosticMessageText(\n configFile.error.messageText,\n \"\\n\",\n );\n return {\n success: false,\n error: `Cannot read tsconfig.json file, error: ${readableError}`,\n };\n }\n const parsedConfig = ts.parseJsonConfigFileContent(\n configFile.config,\n ts.sys,\n dirs.sourceDir,\n {\n declaration: true,\n emitDeclarationOnly: true,\n skipLibCheck: true,\n skipDefaultLibCheck: true,\n outDir: \"\",\n // https://github.com/XaveScor/bobrik/issues/22#issuecomment-2308552352\n noEmit: false,\n },\n configFilePath,\n );\n\n if (!parsedConfig.options.verbatimModuleSyntax) {\n return {\n success: false,\n error:\n \"verbatimModuleSyntax should be enabled in tsconfig.json. Read https://github.com/XaveScor/smartbundle/issues/131 for more explanation.\\n\" +\n \"You also can upvote the issue if you need the support of verbatimModuleSyntax: false in your library\",\n };\n }\n\n const host = ts.createCompilerHost(parsedConfig.options);\n\n return {\n success: true,\n module: {\n ts,\n parsedConfig,\n host,\n version: ts.version,\n },\n };\n}\n\nexport async function detectModules(\n packageJson: PackageJson,\n dirs: Dirs,\n monorepo?: Monorepo,\n): Promise<DetectModulesResult> {\n if (!monorepo) {\n return detectPackageModules(packageJson, dirs);\n }\n\n // First, check if package has ts/babel (which is wrong in monorepo)\n const packageValidation = await detectPackageModules(\n packageJson,\n dirs,\n monorepo.type,\n );\n\n // Collect validation errors\n const errors: string[] = [];\n if (!packageValidation.success) {\n errors.push(...packageValidation.errors);\n } else {\n if (packageValidation.modules.ts) {\n errors.push(\n `Package \"${packageJson.name}\" has ts/babel in package.json, but it's not allowed in monorepo.`,\n );\n }\n if (packageValidation.modules.babel) {\n errors.push(\n `Package \"${packageJson.name}\" has babel in package.json, but it's not allowed in monorepo.`,\n );\n }\n }\n\n // Create merged package.json with workspace devDeps for ts/babel\n const mergedPackageJson: PackageJson = {\n ...packageJson,\n devDependencies: {\n ...monorepo.devDeps,\n ...packageJson.devDependencies,\n },\n };\n\n // Detect modules with merged package.json (ts/babel from workspace, react from package)\n const result = await detectPackageModules(mergedPackageJson, dirs);\n\n if (!result.success) {\n errors.push(...result.errors);\n }\n\n if (errors.length > 0) {\n return { success: false, errors };\n }\n\n return result;\n}\n\nasync function detectPackageModules(\n packageJson: PackageJson,\n dirs: Dirs,\n monorepoType?: \"pnpm\" | null,\n): Promise<DetectModulesResult> {\n log(\"Detecting modules\");\n\n const [tsResult, babelResult, reactResult] = await Promise.all([\n detectTypescript(packageJson, dirs, monorepoType),\n detectBabel(packageJson, monorepoType != null),\n detectReact(packageJson, monorepoType != null),\n ]);\n\n const errors: string[] = [];\n const modules: DetectedModules = {};\n\n if (!tsResult.success) {\n errors.push(tsResult.error);\n } else if (tsResult.module) {\n modules.ts = tsResult.module;\n }\n\n if (!babelResult.success) {\n errors.push(babelResult.error);\n } else if (babelResult.module) {\n modules.babel = babelResult.module;\n }\n\n if (!reactResult.success) {\n errors.push(reactResult.error);\n } else if (reactResult.module) {\n modules.react = reactResult.module;\n }\n\n lineLog();\n\n if (errors.length > 0) {\n return { success: false, errors };\n }\n\n return { success: true, modules };\n}\n"],"names":[],"mappings":"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"}
|
@@ -2,7 +2,7 @@ import { type Args } from "./args.js";
|
|
2
2
|
import { PrettyError } from "./PrettyErrors.js";
|
3
3
|
export declare function defineViteConfig(args?: Args): Promise<import("vite").UserConfig | {
|
4
4
|
error: boolean;
|
5
|
-
errors:
|
5
|
+
errors: string[];
|
6
6
|
}>;
|
7
7
|
type RunResult = {
|
8
8
|
error: false;
|
@@ -1,25 +1,25 @@
|
|
1
1
|
import type { PackageJson } from "../packageJson.js";
|
2
2
|
export declare function convertPackageJson(packageJson: PackageJson): {
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
description?: string;
|
8
|
-
dependencies?: Record<string, string
|
9
|
-
optionalDependencies?: Record<string, string
|
10
|
-
bin?: Map<string, string
|
3
|
+
name: string;
|
4
|
+
version: string;
|
5
|
+
private: boolean;
|
6
|
+
exports?: Map<string, string> | undefined;
|
7
|
+
description?: string | undefined;
|
8
|
+
dependencies?: Record<string, string> | undefined;
|
9
|
+
optionalDependencies?: Record<string, string> | undefined;
|
10
|
+
bin?: Map<string, string> | undefined;
|
11
11
|
repository?: any;
|
12
|
-
keywords?: string[];
|
12
|
+
keywords?: string[] | undefined;
|
13
13
|
author?: any;
|
14
|
-
contributors?: (string | {})[];
|
14
|
+
contributors?: (string | {})[] | undefined;
|
15
15
|
license?: any;
|
16
|
-
devDependencies?: Record<string, string
|
17
|
-
peerDependencies?: Record<string, string
|
18
|
-
engines?: Record<string, string
|
19
|
-
browser?: string | Record<string, string
|
20
|
-
funding?: string | {};
|
21
|
-
os?: string[];
|
22
|
-
cpu?: string[];
|
16
|
+
devDependencies?: Record<string, string> | undefined;
|
17
|
+
peerDependencies?: Record<string, string> | undefined;
|
18
|
+
engines?: Record<string, string> | undefined;
|
19
|
+
browser?: string | Record<string, string> | undefined;
|
20
|
+
funding?: string | {} | undefined;
|
21
|
+
os?: string[] | undefined;
|
22
|
+
cpu?: string[] | undefined;
|
23
23
|
scripts?: any;
|
24
24
|
maintainers?: any;
|
25
25
|
bugs?: any;
|
@@ -44,26 +44,26 @@ declare function createPackageJsonSchema(sourceDir: string): z.ZodEffects<z.ZodO
|
|
44
44
|
babel: z.ZodOptional<z.ZodAny>;
|
45
45
|
peerDependenciesMeta: z.ZodOptional<z.ZodAny>;
|
46
46
|
}, "strip", z.ZodTypeAny, {
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
description?: string;
|
52
|
-
dependencies?: Record<string, string
|
53
|
-
optionalDependencies?: Record<string, string
|
54
|
-
bin?: Map<string, string
|
47
|
+
name: string;
|
48
|
+
version: string;
|
49
|
+
private: boolean;
|
50
|
+
exports?: Map<string, string> | undefined;
|
51
|
+
description?: string | undefined;
|
52
|
+
dependencies?: Record<string, string> | undefined;
|
53
|
+
optionalDependencies?: Record<string, string> | undefined;
|
54
|
+
bin?: Map<string, string> | undefined;
|
55
55
|
repository?: any;
|
56
|
-
keywords?: string[];
|
56
|
+
keywords?: string[] | undefined;
|
57
57
|
author?: any;
|
58
|
-
contributors?: (string | {})[];
|
58
|
+
contributors?: (string | {})[] | undefined;
|
59
59
|
license?: any;
|
60
|
-
devDependencies?: Record<string, string
|
61
|
-
peerDependencies?: Record<string, string
|
62
|
-
engines?: Record<string, string
|
63
|
-
browser?: string | Record<string, string
|
64
|
-
funding?: string | {};
|
65
|
-
os?: string[];
|
66
|
-
cpu?: string[];
|
60
|
+
devDependencies?: Record<string, string> | undefined;
|
61
|
+
peerDependencies?: Record<string, string> | undefined;
|
62
|
+
engines?: Record<string, string> | undefined;
|
63
|
+
browser?: string | Record<string, string> | undefined;
|
64
|
+
funding?: string | {} | undefined;
|
65
|
+
os?: string[] | undefined;
|
66
|
+
cpu?: string[] | undefined;
|
67
67
|
scripts?: any;
|
68
68
|
maintainers?: any;
|
69
69
|
bugs?: any;
|
@@ -73,26 +73,26 @@ declare function createPackageJsonSchema(sourceDir: string): z.ZodEffects<z.ZodO
|
|
73
73
|
babel?: any;
|
74
74
|
peerDependenciesMeta?: any;
|
75
75
|
}, {
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
description?: string;
|
81
|
-
dependencies?: Record<string, string
|
82
|
-
optionalDependencies?: Record<string, string
|
83
|
-
bin?: string | Record<string, string
|
76
|
+
name: string;
|
77
|
+
version: string;
|
78
|
+
private: boolean;
|
79
|
+
exports?: string | Record<string, string> | undefined;
|
80
|
+
description?: string | undefined;
|
81
|
+
dependencies?: Record<string, string> | undefined;
|
82
|
+
optionalDependencies?: Record<string, string> | undefined;
|
83
|
+
bin?: string | Record<string, string> | undefined;
|
84
84
|
repository?: any;
|
85
|
-
keywords?: string[];
|
85
|
+
keywords?: string[] | undefined;
|
86
86
|
author?: any;
|
87
|
-
contributors?: (string | {})[];
|
87
|
+
contributors?: (string | {})[] | undefined;
|
88
88
|
license?: any;
|
89
|
-
devDependencies?: Record<string, string
|
90
|
-
peerDependencies?: Record<string, string
|
91
|
-
engines?: Record<string, string
|
92
|
-
browser?: string | Record<string, string
|
93
|
-
funding?: string | {};
|
94
|
-
os?: string[];
|
95
|
-
cpu?: string[];
|
89
|
+
devDependencies?: Record<string, string> | undefined;
|
90
|
+
peerDependencies?: Record<string, string> | undefined;
|
91
|
+
engines?: Record<string, string> | undefined;
|
92
|
+
browser?: string | Record<string, string> | undefined;
|
93
|
+
funding?: string | {} | undefined;
|
94
|
+
os?: string[] | undefined;
|
95
|
+
cpu?: string[] | undefined;
|
96
96
|
scripts?: any;
|
97
97
|
maintainers?: any;
|
98
98
|
bugs?: any;
|
@@ -102,26 +102,26 @@ declare function createPackageJsonSchema(sourceDir: string): z.ZodEffects<z.ZodO
|
|
102
102
|
babel?: any;
|
103
103
|
peerDependenciesMeta?: any;
|
104
104
|
}>, {
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
description?: string;
|
110
|
-
dependencies?: Record<string, string
|
111
|
-
optionalDependencies?: Record<string, string
|
112
|
-
bin?: Map<string, string
|
105
|
+
name: string;
|
106
|
+
version: string;
|
107
|
+
private: boolean;
|
108
|
+
exports?: Map<string, string> | undefined;
|
109
|
+
description?: string | undefined;
|
110
|
+
dependencies?: Record<string, string> | undefined;
|
111
|
+
optionalDependencies?: Record<string, string> | undefined;
|
112
|
+
bin?: Map<string, string> | undefined;
|
113
113
|
repository?: any;
|
114
|
-
keywords?: string[];
|
114
|
+
keywords?: string[] | undefined;
|
115
115
|
author?: any;
|
116
|
-
contributors?: (string | {})[];
|
116
|
+
contributors?: (string | {})[] | undefined;
|
117
117
|
license?: any;
|
118
|
-
devDependencies?: Record<string, string
|
119
|
-
peerDependencies?: Record<string, string
|
120
|
-
engines?: Record<string, string
|
121
|
-
browser?: string | Record<string, string
|
122
|
-
funding?: string | {};
|
123
|
-
os?: string[];
|
124
|
-
cpu?: string[];
|
118
|
+
devDependencies?: Record<string, string> | undefined;
|
119
|
+
peerDependencies?: Record<string, string> | undefined;
|
120
|
+
engines?: Record<string, string> | undefined;
|
121
|
+
browser?: string | Record<string, string> | undefined;
|
122
|
+
funding?: string | {} | undefined;
|
123
|
+
os?: string[] | undefined;
|
124
|
+
cpu?: string[] | undefined;
|
125
125
|
scripts?: any;
|
126
126
|
maintainers?: any;
|
127
127
|
bugs?: any;
|
@@ -131,26 +131,26 @@ declare function createPackageJsonSchema(sourceDir: string): z.ZodEffects<z.ZodO
|
|
131
131
|
babel?: any;
|
132
132
|
peerDependenciesMeta?: any;
|
133
133
|
}, {
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
description?: string;
|
139
|
-
dependencies?: Record<string, string
|
140
|
-
optionalDependencies?: Record<string, string
|
141
|
-
bin?: string | Record<string, string
|
134
|
+
name: string;
|
135
|
+
version: string;
|
136
|
+
private: boolean;
|
137
|
+
exports?: string | Record<string, string> | undefined;
|
138
|
+
description?: string | undefined;
|
139
|
+
dependencies?: Record<string, string> | undefined;
|
140
|
+
optionalDependencies?: Record<string, string> | undefined;
|
141
|
+
bin?: string | Record<string, string> | undefined;
|
142
142
|
repository?: any;
|
143
|
-
keywords?: string[];
|
143
|
+
keywords?: string[] | undefined;
|
144
144
|
author?: any;
|
145
|
-
contributors?: (string | {})[];
|
145
|
+
contributors?: (string | {})[] | undefined;
|
146
146
|
license?: any;
|
147
|
-
devDependencies?: Record<string, string
|
148
|
-
peerDependencies?: Record<string, string
|
149
|
-
engines?: Record<string, string
|
150
|
-
browser?: string | Record<string, string
|
151
|
-
funding?: string | {};
|
152
|
-
os?: string[];
|
153
|
-
cpu?: string[];
|
147
|
+
devDependencies?: Record<string, string> | undefined;
|
148
|
+
peerDependencies?: Record<string, string> | undefined;
|
149
|
+
engines?: Record<string, string> | undefined;
|
150
|
+
browser?: string | Record<string, string> | undefined;
|
151
|
+
funding?: string | {} | undefined;
|
152
|
+
os?: string[] | undefined;
|
153
|
+
cpu?: string[] | undefined;
|
154
154
|
scripts?: any;
|
155
155
|
maintainers?: any;
|
156
156
|
bugs?: any;
|
@@ -1,6 +1,6 @@
|
|
1
|
-
import { type UserConfig } from "vite";
|
1
|
+
import { type UserConfig, type Rollup } from "vite";
|
2
2
|
type ViteTaskParams = {
|
3
3
|
viteConfig: UserConfig;
|
4
4
|
};
|
5
|
-
export declare function viteTask({ viteConfig }: ViteTaskParams): Promise<
|
5
|
+
export declare function viteTask({ viteConfig }: ViteTaskParams): Promise<Rollup.OutputChunk[]>;
|
6
6
|
export {};
|