smartbundle 0.12.0 → 0.12.2
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/createViteConfig.js +7 -7
- package/__compiled__/cjs/src/createViteConfig.js.map +1 -1
- package/__compiled__/cjs/src/index.js +11 -11
- package/__compiled__/cjs/src/index.js.map +1 -1
- package/__compiled__/cjs/src/resolveDirs.d.ts +2 -0
- package/__compiled__/cjs/src/resolveDirs.js +3 -1
- package/__compiled__/cjs/src/resolveDirs.js.map +1 -1
- package/__compiled__/cjs/src/tasks/buildTypesTask/buildTypesTask.d.ts +6 -3
- package/__compiled__/cjs/src/tasks/buildTypesTask/buildTypesTask.js +23 -14
- package/__compiled__/cjs/src/tasks/buildTypesTask/buildTypesTask.js.map +1 -1
- package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.d.ts +7 -3
- package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.js +57 -26
- package/__compiled__/cjs/src/tasks/buildTypesTask/callTypescript.js.map +1 -1
- package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsNames.d.ts +1 -0
- package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsNames.js +89 -0
- package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsNames.js.map +1 -0
- package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsPackages.d.ts +4 -0
- package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsPackages.js +124 -0
- package/__compiled__/cjs/src/tasks/buildTypesTask/findTypingsPackages.js.map +1 -0
- package/__compiled__/cjs/src/tasks/buildTypesTask/inlineExtensions.d.ts +2 -8
- package/__compiled__/cjs/src/tasks/buildTypesTask/inlineExtensions.js +6 -7
- package/__compiled__/cjs/src/tasks/buildTypesTask/inlineExtensions.js.map +1 -1
- package/__compiled__/cjs/src/tasks/copyStaticFilesTask.js +1 -1
- package/__compiled__/cjs/src/tasks/copyStaticFilesTask.js.map +1 -1
- package/__compiled__/esm/src/createViteConfig.mjs +7 -7
- package/__compiled__/esm/src/createViteConfig.mjs.map +1 -1
- package/__compiled__/esm/src/index.mjs +11 -11
- package/__compiled__/esm/src/index.mjs.map +1 -1
- package/__compiled__/esm/src/resolveDirs.d.mts +2 -0
- package/__compiled__/esm/src/resolveDirs.mjs +3 -1
- package/__compiled__/esm/src/resolveDirs.mjs.map +1 -1
- package/__compiled__/esm/src/tasks/buildTypesTask/buildTypesTask.d.mts +6 -3
- package/__compiled__/esm/src/tasks/buildTypesTask/buildTypesTask.mjs +23 -14
- package/__compiled__/esm/src/tasks/buildTypesTask/buildTypesTask.mjs.map +1 -1
- package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.d.mts +7 -3
- package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.mjs +57 -26
- package/__compiled__/esm/src/tasks/buildTypesTask/callTypescript.mjs.map +1 -1
- package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsNames.d.mts +1 -0
- package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsNames.mjs +72 -0
- package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsNames.mjs.map +1 -0
- package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsPackages.d.mts +4 -0
- package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsPackages.mjs +106 -0
- package/__compiled__/esm/src/tasks/buildTypesTask/findTypingsPackages.mjs.map +1 -0
- package/__compiled__/esm/src/tasks/buildTypesTask/inlineExtensions.d.mts +2 -8
- package/__compiled__/esm/src/tasks/buildTypesTask/inlineExtensions.mjs +6 -7
- package/__compiled__/esm/src/tasks/buildTypesTask/inlineExtensions.mjs.map +1 -1
- package/__compiled__/esm/src/tasks/copyStaticFilesTask.mjs +1 -1
- package/__compiled__/esm/src/tasks/copyStaticFilesTask.mjs.map +1 -1
- package/package.json +1 -1
@@ -48,7 +48,7 @@ function createViteConfig({
|
|
48
48
|
packageJson,
|
49
49
|
modules
|
50
50
|
}) {
|
51
|
-
const { sourceDir, outDir } = dirs;
|
51
|
+
const { sourceDir, outDir, esmOutDir, cjsOutDir } = dirs;
|
52
52
|
const entrypoints = /* @__PURE__ */ new Map();
|
53
53
|
if (packageJson.exports) {
|
54
54
|
for (const [key, value] of packageJson.exports) {
|
@@ -64,6 +64,8 @@ function createViteConfig({
|
|
64
64
|
}
|
65
65
|
const mergedEntries = new Map([...entrypoints, ...bins]);
|
66
66
|
const depsValidator = createExternalDepValidator(packageJson);
|
67
|
+
const esmRelativeOutPath = path.relative(outDir, esmOutDir);
|
68
|
+
const cjsRelativeOutPath = path.relative(outDir, cjsOutDir);
|
67
69
|
const viteConfig = vite.defineConfig({
|
68
70
|
plugins: [
|
69
71
|
index.reactPlugin({ modules }),
|
@@ -91,21 +93,19 @@ function createViteConfig({
|
|
91
93
|
if (!entrypoint) {
|
92
94
|
const noExt = entryName.replace(/\.[^.]+$/, "");
|
93
95
|
if (format === "es") {
|
94
|
-
return path.join(
|
96
|
+
return path.join(esmRelativeOutPath, `${noExt}.mjs`);
|
95
97
|
} else {
|
96
|
-
return path.join(
|
98
|
+
return path.join(cjsRelativeOutPath, `${noExt}.js`);
|
97
99
|
}
|
98
100
|
}
|
99
101
|
if (format === "es") {
|
100
102
|
return path.join(
|
101
|
-
|
102
|
-
"esm",
|
103
|
+
esmRelativeOutPath,
|
103
104
|
path.relative(sourceDir, entrypoint).replace(/\.[^.]+$/, "") + ".mjs"
|
104
105
|
);
|
105
106
|
} else {
|
106
107
|
return path.join(
|
107
|
-
|
108
|
-
"cjs",
|
108
|
+
cjsRelativeOutPath,
|
109
109
|
path.relative(sourceDir, entrypoint).replace(/\.[^.]+$/, "") + ".js"
|
110
110
|
);
|
111
111
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"createViteConfig.js","sources":["../../../../src/createViteConfig.ts"],"sourcesContent":["import { type Dirs } from \"./resolveDirs.js\";\nimport { type PackageJson } from \"./packageJson.js\";\nimport { join, relative } from \"node:path\";\nimport { defineConfig } from \"vite\";\nimport { babelPlugin } from \"./plugins/babel/index.js\";\nimport { reactPlugin } from \"./plugins/react/index.js\";\nimport { type DetectedModules } from \"./detectModules.js\";\n\ntype CreateViteConfigParam = {\n dirs: Dirs;\n packageJson: PackageJson;\n modules: DetectedModules;\n};\n\nfunction mapToObject(map: Map<string, string>) {\n const obj: Record<string, string> = {};\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\nfunction createExternalDepValidator(packageJson: PackageJson) {\n const allExternalPackages = new Set();\n for (const key of [\n \"dependencies\",\n \"optionalDependencies\",\n \"peerDependencies\",\n ] as const) {\n for (const dep of Object.keys(packageJson[key] ?? {})) {\n allExternalPackages.add(dep);\n }\n }\n allExternalPackages.add(packageJson.name);\n\n return (id: string) => {\n if (id.startsWith(\"node:\")) {\n return true;\n }\n const segments = id.split(\"/\");\n let current = \"\";\n for (const segment of segments) {\n current += segment;\n // import {} from \"a/b/c/d\"; case\n if (allExternalPackages.has(current)) {\n return true;\n }\n current += \"/\";\n }\n return false;\n };\n}\n\nexport function createViteConfig({\n dirs,\n packageJson,\n modules,\n}: CreateViteConfigParam) {\n const { sourceDir, outDir } = dirs;\n\n const entrypoints = new Map<string, string>();\n if (packageJson.exports) {\n for (const [key, value] of packageJson.exports) {\n const entry = join(sourceDir, value);\n entrypoints.set(key, entry);\n }\n }\n\n const bins = new Map<string, string>();\n if (packageJson.bin) {\n for (const [key, value] of packageJson.bin) {\n bins.set(key, join(sourceDir, value));\n }\n }\n\n const mergedEntries = new Map([...entrypoints, ...bins]);\n\n const depsValidator = createExternalDepValidator(packageJson);\n\n const viteConfig = defineConfig({\n plugins: [\n reactPlugin({ modules }),\n babelPlugin({ packageJson, dirs, modules }),\n ],\n publicDir: false,\n root: sourceDir,\n logLevel: \"silent\",\n build: {\n outDir,\n write: true,\n minify: false,\n emptyOutDir: false,\n sourcemap: true,\n assetsInlineLimit: 0,\n terserOptions: {\n compress: false,\n mangle: false,\n },\n lib: {\n entry: mapToObject(mergedEntries),\n formats: [\"es\", \"cjs\"],\n fileName: (format, entryName) => {\n const entrypoint = mergedEntries.get(entryName);\n if (!entrypoint) {\n const noExt = entryName.replace(/\\.[^.]+$/, \"\");\n if (format === \"es\") {\n return join(
|
1
|
+
{"version":3,"file":"createViteConfig.js","sources":["../../../../src/createViteConfig.ts"],"sourcesContent":["import { type Dirs } from \"./resolveDirs.js\";\nimport { type PackageJson } from \"./packageJson.js\";\nimport { join, relative } from \"node:path\";\nimport { defineConfig } from \"vite\";\nimport { babelPlugin } from \"./plugins/babel/index.js\";\nimport { reactPlugin } from \"./plugins/react/index.js\";\nimport { type DetectedModules } from \"./detectModules.js\";\n\ntype CreateViteConfigParam = {\n dirs: Dirs;\n packageJson: PackageJson;\n modules: DetectedModules;\n};\n\nfunction mapToObject(map: Map<string, string>) {\n const obj: Record<string, string> = {};\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\nfunction createExternalDepValidator(packageJson: PackageJson) {\n const allExternalPackages = new Set();\n for (const key of [\n \"dependencies\",\n \"optionalDependencies\",\n \"peerDependencies\",\n ] as const) {\n for (const dep of Object.keys(packageJson[key] ?? {})) {\n allExternalPackages.add(dep);\n }\n }\n allExternalPackages.add(packageJson.name);\n\n return (id: string) => {\n if (id.startsWith(\"node:\")) {\n return true;\n }\n const segments = id.split(\"/\");\n let current = \"\";\n for (const segment of segments) {\n current += segment;\n // import {} from \"a/b/c/d\"; case\n if (allExternalPackages.has(current)) {\n return true;\n }\n current += \"/\";\n }\n return false;\n };\n}\n\nexport function createViteConfig({\n dirs,\n packageJson,\n modules,\n}: CreateViteConfigParam) {\n const { sourceDir, outDir, esmOutDir, cjsOutDir } = dirs;\n\n const entrypoints = new Map<string, string>();\n if (packageJson.exports) {\n for (const [key, value] of packageJson.exports) {\n const entry = join(sourceDir, value);\n entrypoints.set(key, entry);\n }\n }\n\n const bins = new Map<string, string>();\n if (packageJson.bin) {\n for (const [key, value] of packageJson.bin) {\n bins.set(key, join(sourceDir, value));\n }\n }\n\n const mergedEntries = new Map([...entrypoints, ...bins]);\n\n const depsValidator = createExternalDepValidator(packageJson);\n\n const esmRelativeOutPath = relative(outDir, esmOutDir);\n const cjsRelativeOutPath = relative(outDir, cjsOutDir);\n const viteConfig = defineConfig({\n plugins: [\n reactPlugin({ modules }),\n babelPlugin({ packageJson, dirs, modules }),\n ],\n publicDir: false,\n root: sourceDir,\n logLevel: \"silent\",\n build: {\n outDir,\n write: true,\n minify: false,\n emptyOutDir: false,\n sourcemap: true,\n assetsInlineLimit: 0,\n terserOptions: {\n compress: false,\n mangle: false,\n },\n lib: {\n entry: mapToObject(mergedEntries),\n formats: [\"es\", \"cjs\"],\n fileName: (format, entryName) => {\n const entrypoint = mergedEntries.get(entryName);\n if (!entrypoint) {\n const noExt = entryName.replace(/\\.[^.]+$/, \"\");\n if (format === \"es\") {\n return join(esmRelativeOutPath, `${noExt}.mjs`);\n } else {\n return join(cjsRelativeOutPath, `${noExt}.js`);\n }\n }\n\n if (format === \"es\") {\n return join(\n esmRelativeOutPath,\n relative(sourceDir, entrypoint).replace(/\\.[^.]+$/, \"\") + \".mjs\",\n );\n } else {\n return join(\n cjsRelativeOutPath,\n relative(sourceDir, entrypoint).replace(/\\.[^.]+$/, \"\") + \".js\",\n );\n }\n },\n },\n rollupOptions: {\n external: depsValidator,\n output: {\n preserveModulesRoot: sourceDir,\n exports: \"named\",\n preserveModules: true,\n },\n },\n },\n });\n\n return { viteConfig, entrypoints, bins };\n}\n"],"names":["join","relative","defineConfig","reactPlugin","babelPlugin"],"mappings":"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"}
|
@@ -56,20 +56,20 @@ async function run(args) {
|
|
56
56
|
const tasksRes = await pipeline.runSettled(args, [
|
57
57
|
copyStaticFilesTask.copyStaticFilesTask(sourceDir, outDir),
|
58
58
|
buildTypesTask.buildTypesTask({
|
59
|
-
|
60
|
-
outDir,
|
59
|
+
dirs,
|
61
60
|
packageJson: packageJson$1,
|
62
61
|
entrypoints,
|
63
62
|
modules
|
64
|
-
}).then((
|
65
|
-
for (const [
|
66
|
-
setExports(exportsMap,
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
63
|
+
}).then(({ entrypointToEsDtsMap, entrypointToCjsDtsMap }) => {
|
64
|
+
for (const [entrypoint, dts] of entrypointToEsDtsMap) {
|
65
|
+
setExports(exportsMap, entrypoint, (entry) => {
|
66
|
+
entry.dmts = "./" + path.relative(outDir, dts);
|
67
|
+
return entry;
|
68
|
+
});
|
69
|
+
}
|
70
|
+
for (const [entrypoint, dts] of entrypointToCjsDtsMap) {
|
71
|
+
setExports(exportsMap, entrypoint, (entry) => {
|
72
|
+
entry.dcts = "./" + path.relative(outDir, dts);
|
73
73
|
return entry;
|
74
74
|
});
|
75
75
|
}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../../src/index.ts"],"sourcesContent":["import { relative } from \"node:path\";\nimport { mkdir, rm } from \"node:fs/promises\";\nimport { parsePackageJson } from \"./packageJson.js\";\nimport { type ExportsObject, writePackageJson } from \"./writePackageJson.js\";\nimport { resolveDirs } from \"./resolveDirs.js\";\nimport { createViteConfig } from \"./createViteConfig.js\";\nimport { copyStaticFilesTask } from \"./tasks/copyStaticFilesTask.js\";\nimport { buildTypesTask } from \"./tasks/buildTypesTask/buildTypesTask.js\";\nimport { BuildError } from \"./error.js\";\nimport { jsFilesTask } from \"./tasks/jsFilesTask.js\";\nimport { binsTask } from \"./tasks/binsTask.js\";\nimport { detectModules } from \"./detectModules.js\";\nimport { disableLog, lineLog, log, okLog } from \"./log.js\";\nimport { runSettled } from \"./pipeline.js\";\nimport { type Args } from \"./args.js\";\nimport { viteTask } from \"./tasks/viteTask.js\";\nimport { promiseSettledResultErrors } from \"./promiseSettledResultErrors.js\";\n\nfunction setExports(\n exportsMap: Map<string, ExportsObject>,\n exportName: string,\n mapFn: (entry: ExportsObject) => ExportsObject,\n) {\n const entry = exportsMap.get(exportName) ?? ({} as ExportsObject);\n exportsMap.set(exportName, mapFn(entry));\n}\n\nexport async function defineViteConfig(args: Args = {}) {\n disableLog();\n const dirs = resolveDirs(args);\n const { sourceDir, outDir, packagePath } = dirs;\n\n await rm(outDir, { recursive: true, force: true });\n await mkdir(outDir, { recursive: true });\n const packageJson = await parsePackageJson({ sourceDir, packagePath });\n\n if (Array.isArray(packageJson)) {\n console.error(packageJson);\n throw new Error(\"Failed to parse package.json\");\n }\n\n const modules = await detectModules(packageJson);\n const { viteConfig } = createViteConfig({ dirs, packageJson, modules });\n\n return viteConfig;\n}\n\ntype RunResult =\n | {\n error: false;\n }\n | {\n error: true;\n errors: Array<string>;\n };\n\nexport async function run(args: Args): Promise<RunResult> {\n const dirs = resolveDirs(args);\n const { sourceDir, outDir, packagePath, outBinsDir } = dirs;\n\n await rm(outDir, { recursive: true, force: true });\n await mkdir(outDir, { recursive: true });\n const packageJson = await parsePackageJson({ sourceDir, packagePath });\n\n if (Array.isArray(packageJson)) {\n return { error: true, errors: packageJson };\n }\n\n const modules = await detectModules(packageJson);\n const { viteConfig, entrypoints, bins } = createViteConfig({\n dirs,\n packageJson,\n modules,\n });\n\n const exportsMap = new Map<string, ExportsObject>();\n const binsMap = new Map<string, string>();\n\n const tasksRes = await runSettled(args, [\n copyStaticFilesTask(sourceDir, outDir),\n buildTypesTask({\n
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../../src/index.ts"],"sourcesContent":["import { relative } from \"node:path\";\nimport { mkdir, rm } from \"node:fs/promises\";\nimport { parsePackageJson } from \"./packageJson.js\";\nimport { type ExportsObject, writePackageJson } from \"./writePackageJson.js\";\nimport { resolveDirs } from \"./resolveDirs.js\";\nimport { createViteConfig } from \"./createViteConfig.js\";\nimport { copyStaticFilesTask } from \"./tasks/copyStaticFilesTask.js\";\nimport { buildTypesTask } from \"./tasks/buildTypesTask/buildTypesTask.js\";\nimport { BuildError } from \"./error.js\";\nimport { jsFilesTask } from \"./tasks/jsFilesTask.js\";\nimport { binsTask } from \"./tasks/binsTask.js\";\nimport { detectModules } from \"./detectModules.js\";\nimport { disableLog, lineLog, log, okLog } from \"./log.js\";\nimport { runSettled } from \"./pipeline.js\";\nimport { type Args } from \"./args.js\";\nimport { viteTask } from \"./tasks/viteTask.js\";\nimport { promiseSettledResultErrors } from \"./promiseSettledResultErrors.js\";\n\nfunction setExports(\n exportsMap: Map<string, ExportsObject>,\n exportName: string,\n mapFn: (entry: ExportsObject) => ExportsObject,\n) {\n const entry = exportsMap.get(exportName) ?? ({} as ExportsObject);\n exportsMap.set(exportName, mapFn(entry));\n}\n\nexport async function defineViteConfig(args: Args = {}) {\n disableLog();\n const dirs = resolveDirs(args);\n const { sourceDir, outDir, packagePath } = dirs;\n\n await rm(outDir, { recursive: true, force: true });\n await mkdir(outDir, { recursive: true });\n const packageJson = await parsePackageJson({ sourceDir, packagePath });\n\n if (Array.isArray(packageJson)) {\n console.error(packageJson);\n throw new Error(\"Failed to parse package.json\");\n }\n\n const modules = await detectModules(packageJson);\n const { viteConfig } = createViteConfig({ dirs, packageJson, modules });\n\n return viteConfig;\n}\n\ntype RunResult =\n | {\n error: false;\n }\n | {\n error: true;\n errors: Array<string>;\n };\n\nexport async function run(args: Args): Promise<RunResult> {\n const dirs = resolveDirs(args);\n const { sourceDir, outDir, packagePath, outBinsDir } = dirs;\n\n await rm(outDir, { recursive: true, force: true });\n await mkdir(outDir, { recursive: true });\n const packageJson = await parsePackageJson({ sourceDir, packagePath });\n\n if (Array.isArray(packageJson)) {\n return { error: true, errors: packageJson };\n }\n\n const modules = await detectModules(packageJson);\n const { viteConfig, entrypoints, bins } = createViteConfig({\n dirs,\n packageJson,\n modules,\n });\n\n const exportsMap = new Map<string, ExportsObject>();\n const binsMap = new Map<string, string>();\n\n const tasksRes = await runSettled(args, [\n copyStaticFilesTask(sourceDir, outDir),\n buildTypesTask({\n dirs,\n packageJson,\n entrypoints,\n modules,\n }).then(({ entrypointToEsDtsMap, entrypointToCjsDtsMap }) => {\n for (const [entrypoint, dts] of entrypointToEsDtsMap) {\n setExports(exportsMap, entrypoint, (entry) => {\n entry.dmts = \"./\" + relative(outDir, dts);\n return entry;\n });\n }\n\n for (const [entrypoint, dts] of entrypointToCjsDtsMap) {\n setExports(exportsMap, entrypoint, (entry) => {\n entry.dcts = \"./\" + relative(outDir, dts);\n return entry;\n });\n }\n }),\n viteTask({ viteConfig }).then((viteOutput) =>\n runSettled(args, [\n jsFilesTask({ buildOutput: viteOutput, entrypoints, outDir }).then(\n (res) => {\n for (const [filePath, name] of res) {\n setExports(exportsMap, name, (entry) => {\n const format = filePath.endsWith(\".js\") ? \"cjs\" : \"es\";\n if (format === \"es\") {\n entry.mjs = \"./\" + filePath;\n } else if (format === \"cjs\") {\n entry.cjs = \"./\" + filePath;\n }\n return entry;\n });\n }\n },\n ),\n binsTask({ outBinsDir, bins, buildOutput: viteOutput, outDir }).then(\n (res) => {\n for (const [value, key] of res) {\n binsMap.set(key, value);\n }\n },\n ),\n ]),\n ),\n ]);\n\n const errors = promiseSettledResultErrors(tasksRes).map((res) => {\n if (res instanceof BuildError) {\n return res.error;\n }\n\n return res.message;\n });\n\n if (errors.length > 0) {\n return { error: true, errors };\n }\n\n await writePackageJson(outDir, packageJson, {\n exportsMap,\n binsMap,\n });\n\n lineLog();\n log(`Build finished: ./${relative(sourceDir, outDir)}`);\n return { error: false };\n}\n"],"names":["disableLog","resolveDirs","rm","mkdir","packageJson","parsePackageJson","detectModules","createViteConfig","runSettled","copyStaticFilesTask","buildTypesTask","relative","viteTask","jsFilesTask","binsTask","promiseSettledResultErrors","BuildError","writePackageJson","lineLog","log"],"mappings":"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"}
|
@@ -15,8 +15,10 @@ function resolveDirs(args) {
|
|
15
15
|
args.packagePath ?? "./package.json"
|
16
16
|
);
|
17
17
|
const outDir = myResolve(process.cwd(), args.outputDir ?? "./dist");
|
18
|
+
const esmOutDir = myResolve(outDir, "__compiled__/esm");
|
19
|
+
const cjsOutDir = myResolve(outDir, "__compiled__/cjs");
|
18
20
|
const outBinsDir = myResolve(outDir, "__bin__");
|
19
|
-
return { sourceDir, packagePath, outDir, outBinsDir };
|
21
|
+
return { sourceDir, packagePath, outDir, outBinsDir, cjsOutDir, esmOutDir };
|
20
22
|
}
|
21
23
|
exports.resolveDirs = resolveDirs;
|
22
24
|
//# sourceMappingURL=resolveDirs.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"resolveDirs.js","sources":["../../../../src/resolveDirs.ts"],"sourcesContent":["import { isAbsolute, join } from \"node:path\";\nimport { type Args } from \"./args.js\";\n\nfunction myResolve(path1: string, path2: string) {\n if (isAbsolute(path2)) {\n return path2;\n }\n\n return join(path1, path2);\n}\n\nexport function resolveDirs(args: Args) {\n const sourceDir = myResolve(process.cwd(), args.sourceDir ?? \".\");\n const packagePath = myResolve(\n sourceDir,\n args.packagePath ?? \"./package.json\",\n );\n const outDir = myResolve(process.cwd(), args.outputDir ?? \"./dist\");\n const outBinsDir = myResolve(outDir, \"__bin__\");\n\n return { sourceDir, packagePath, outDir, outBinsDir };\n}\n\nexport type Dirs = ReturnType<typeof resolveDirs>;\n"],"names":["isAbsolute","join"],"mappings":";;;;AAGA,SAAS,UAAU,OAAe,OAAe;AAC3C,MAAAA,KAAAA,WAAW,KAAK,GAAG;AACd,WAAA;AAAA,EAAA;AAGF,SAAAC,KAAA,KAAK,OAAO,KAAK;AAC1B;AAEO,SAAS,YAAY,MAAY;AACtC,QAAM,YAAY,UAAU,QAAQ,OAAO,KAAK,aAAa,GAAG;AAChE,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,KAAK,eAAe;AAAA,EACtB;AACA,QAAM,SAAS,UAAU,QAAQ,OAAO,KAAK,aAAa,QAAQ;AAC5D,QAAA,aAAa,UAAU,QAAQ,SAAS;AAE9C,SAAO,EAAE,WAAW,aAAa,QAAQ,WAAW;
|
1
|
+
{"version":3,"file":"resolveDirs.js","sources":["../../../../src/resolveDirs.ts"],"sourcesContent":["import { isAbsolute, join } from \"node:path\";\nimport { type Args } from \"./args.js\";\n\nfunction myResolve(path1: string, path2: string) {\n if (isAbsolute(path2)) {\n return path2;\n }\n\n return join(path1, path2);\n}\n\nexport function resolveDirs(args: Args) {\n const sourceDir = myResolve(process.cwd(), args.sourceDir ?? \".\");\n const packagePath = myResolve(\n sourceDir,\n args.packagePath ?? \"./package.json\",\n );\n const outDir = myResolve(process.cwd(), args.outputDir ?? \"./dist\");\n const esmOutDir = myResolve(outDir, \"__compiled__/esm\");\n const cjsOutDir = myResolve(outDir, \"__compiled__/cjs\");\n const outBinsDir = myResolve(outDir, \"__bin__\");\n\n return { sourceDir, packagePath, outDir, outBinsDir, cjsOutDir, esmOutDir };\n}\n\nexport type Dirs = ReturnType<typeof resolveDirs>;\n"],"names":["isAbsolute","join"],"mappings":";;;;AAGA,SAAS,UAAU,OAAe,OAAe;AAC3C,MAAAA,KAAAA,WAAW,KAAK,GAAG;AACd,WAAA;AAAA,EAAA;AAGF,SAAAC,KAAA,KAAK,OAAO,KAAK;AAC1B;AAEO,SAAS,YAAY,MAAY;AACtC,QAAM,YAAY,UAAU,QAAQ,OAAO,KAAK,aAAa,GAAG;AAChE,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,KAAK,eAAe;AAAA,EACtB;AACA,QAAM,SAAS,UAAU,QAAQ,OAAO,KAAK,aAAa,QAAQ;AAC5D,QAAA,YAAY,UAAU,QAAQ,kBAAkB;AAChD,QAAA,YAAY,UAAU,QAAQ,kBAAkB;AAChD,QAAA,aAAa,UAAU,QAAQ,SAAS;AAE9C,SAAO,EAAE,WAAW,aAAa,QAAQ,YAAY,WAAW,UAAU;AAC5E;;"}
|
@@ -1,11 +1,14 @@
|
|
1
1
|
import type { DetectedModules } from "../../detectModules.js";
|
2
2
|
import { type PackageJson } from "../../packageJson.js";
|
3
|
+
import { type Dirs } from "../../resolveDirs.js";
|
3
4
|
type BuildTypesTaskOption = {
|
4
5
|
entrypoints: Map<string, string>;
|
5
|
-
|
6
|
-
outDir: string;
|
6
|
+
dirs: Dirs;
|
7
7
|
modules: DetectedModules;
|
8
8
|
packageJson: PackageJson;
|
9
9
|
};
|
10
|
-
export declare function buildTypesTask({ entrypoints,
|
10
|
+
export declare function buildTypesTask({ entrypoints, dirs, packageJson, modules, }: BuildTypesTaskOption): Promise<{
|
11
|
+
entrypointToEsDtsMap: Map<string, string>;
|
12
|
+
entrypointToCjsDtsMap: Map<string, string>;
|
13
|
+
}>;
|
11
14
|
export {};
|
@@ -6,39 +6,48 @@ const log = require("../../log.js");
|
|
6
6
|
require("node:fs/promises");
|
7
7
|
require("zod");
|
8
8
|
require("node:path");
|
9
|
+
require("../../args.js");
|
9
10
|
async function buildTypesTask({
|
10
11
|
entrypoints,
|
11
|
-
|
12
|
-
outDir,
|
12
|
+
dirs,
|
13
13
|
packageJson,
|
14
14
|
modules
|
15
15
|
}) {
|
16
|
-
const
|
16
|
+
const { outDir } = dirs;
|
17
17
|
const tsEntrypoints = [...entrypoints.values()].filter(
|
18
18
|
(entry) => entry.endsWith(".ts")
|
19
19
|
);
|
20
|
+
const reversedEntrypoints = utils.reverseMap(entrypoints);
|
21
|
+
const entrypointToEsDtsMap = /* @__PURE__ */ new Map();
|
22
|
+
const entrypointToCjsDtsMap = /* @__PURE__ */ new Map();
|
20
23
|
if (tsEntrypoints.length === 0 || modules.ts == null) {
|
21
|
-
return
|
24
|
+
return { entrypointToEsDtsMap, entrypointToCjsDtsMap };
|
22
25
|
}
|
23
26
|
const dtsMap = await callTypescript.callTypescript({
|
24
27
|
ts: modules.ts,
|
25
|
-
|
28
|
+
dirs,
|
26
29
|
packageJson,
|
27
|
-
|
30
|
+
tsEntrypoints,
|
28
31
|
outDir
|
29
32
|
});
|
30
|
-
const
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
33
|
+
for (const [source, dts] of dtsMap.sourceToEsmDtsMap) {
|
34
|
+
const entrypoints2 = reversedEntrypoints.get(source);
|
35
|
+
if (entrypoints2) {
|
36
|
+
for (const entrypoint of entrypoints2) {
|
37
|
+
entrypointToEsDtsMap.set(entrypoint, dts);
|
38
|
+
}
|
35
39
|
}
|
36
|
-
|
37
|
-
|
40
|
+
}
|
41
|
+
for (const [source, dts] of dtsMap.sourceToCjsDtsMap) {
|
42
|
+
const entrypoints2 = reversedEntrypoints.get(source);
|
43
|
+
if (entrypoints2) {
|
44
|
+
for (const entrypoint of entrypoints2) {
|
45
|
+
entrypointToCjsDtsMap.set(entrypoint, dts);
|
46
|
+
}
|
38
47
|
}
|
39
48
|
}
|
40
49
|
log.okLog(".d.ts");
|
41
|
-
return
|
50
|
+
return { entrypointToEsDtsMap, entrypointToCjsDtsMap };
|
42
51
|
}
|
43
52
|
exports.buildTypesTask = buildTypesTask;
|
44
53
|
//# sourceMappingURL=buildTypesTask.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"buildTypesTask.js","sources":["../../../../../../src/tasks/buildTypesTask/buildTypesTask.ts"],"sourcesContent":["import { callTypescript } from \"./callTypescript.js\";\nimport { reverseMap } from \"../utils.js\";\nimport { okLog } from \"../../log.js\";\nimport type { DetectedModules } from \"../../detectModules.js\";\nimport { type PackageJson } from \"../../packageJson.js\";\n\ntype BuildTypesTaskOption = {\n entrypoints: Map<string, string>;\n
|
1
|
+
{"version":3,"file":"buildTypesTask.js","sources":["../../../../../../src/tasks/buildTypesTask/buildTypesTask.ts"],"sourcesContent":["import { callTypescript } from \"./callTypescript.js\";\nimport { reverseMap } from \"../utils.js\";\nimport { okLog } from \"../../log.js\";\nimport type { DetectedModules } from \"../../detectModules.js\";\nimport { type PackageJson } from \"../../packageJson.js\";\nimport { type Dirs } from \"../../resolveDirs.js\";\n\ntype BuildTypesTaskOption = {\n entrypoints: Map<string, string>;\n dirs: Dirs;\n modules: DetectedModules;\n packageJson: PackageJson;\n};\n\nexport async function buildTypesTask({\n entrypoints,\n dirs,\n packageJson,\n modules,\n}: BuildTypesTaskOption) {\n const { outDir } = dirs;\n const tsEntrypoints = [...entrypoints.values()].filter((entry) =>\n entry.endsWith(\".ts\"),\n );\n const reversedEntrypoints = reverseMap(entrypoints);\n\n const entrypointToEsDtsMap = new Map<string, string>();\n const entrypointToCjsDtsMap = new Map<string, string>();\n if (tsEntrypoints.length === 0 || modules.ts == null) {\n return { entrypointToEsDtsMap, entrypointToCjsDtsMap };\n }\n\n const dtsMap = await callTypescript({\n ts: modules.ts,\n dirs,\n packageJson,\n tsEntrypoints,\n outDir,\n });\n\n for (const [source, dts] of dtsMap.sourceToEsmDtsMap) {\n const entrypoints = reversedEntrypoints.get(source);\n if (entrypoints) {\n for (const entrypoint of entrypoints) {\n entrypointToEsDtsMap.set(entrypoint, dts);\n }\n }\n }\n\n for (const [source, dts] of dtsMap.sourceToCjsDtsMap) {\n const entrypoints = reversedEntrypoints.get(source);\n if (entrypoints) {\n for (const entrypoint of entrypoints) {\n entrypointToCjsDtsMap.set(entrypoint, dts);\n }\n }\n }\n\n okLog(\".d.ts\");\n\n return { entrypointToEsDtsMap, entrypointToCjsDtsMap };\n}\n"],"names":["reverseMap","callTypescript","entrypoints","okLog"],"mappings":";;;;;;;;;AAcA,eAAsB,eAAe;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAyB;AACjB,QAAA,EAAE,WAAW;AACnB,QAAM,gBAAgB,CAAC,GAAG,YAAY,OAAA,CAAQ,EAAE;AAAA,IAAO,CAAC,UACtD,MAAM,SAAS,KAAK;AAAA,EACtB;AACM,QAAA,sBAAsBA,iBAAW,WAAW;AAE5C,QAAA,2CAA2B,IAAoB;AAC/C,QAAA,4CAA4B,IAAoB;AACtD,MAAI,cAAc,WAAW,KAAK,QAAQ,MAAM,MAAM;AAC7C,WAAA,EAAE,sBAAsB,sBAAsB;AAAA,EAAA;AAGjD,QAAA,SAAS,MAAMC,8BAAe;AAAA,IAClC,IAAI,QAAQ;AAAA,IACZ;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,CACD;AAED,aAAW,CAAC,QAAQ,GAAG,KAAK,OAAO,mBAAmB;AAC9CC,UAAAA,eAAc,oBAAoB,IAAI,MAAM;AAClD,QAAIA,cAAa;AACf,iBAAW,cAAcA,cAAa;AACf,6BAAA,IAAI,YAAY,GAAG;AAAA,MAAA;AAAA,IAC1C;AAAA,EACF;AAGF,aAAW,CAAC,QAAQ,GAAG,KAAK,OAAO,mBAAmB;AAC9CA,UAAAA,eAAc,oBAAoB,IAAI,MAAM;AAClD,QAAIA,cAAa;AACf,iBAAW,cAAcA,cAAa;AACd,8BAAA,IAAI,YAAY,GAAG;AAAA,MAAA;AAAA,IAC3C;AAAA,EACF;AAGFC,MAAAA,MAAM,OAAO;AAEN,SAAA,EAAE,sBAAsB,sBAAsB;AACvD;;"}
|
@@ -1,10 +1,14 @@
|
|
1
1
|
import { type PackageJson } from "../../packageJson.js";
|
2
|
+
import { type Dirs } from "../../resolveDirs.js";
|
2
3
|
type BuildTypesOptions = {
|
3
4
|
ts: typeof import("typescript");
|
4
|
-
|
5
|
+
dirs: Dirs;
|
5
6
|
packageJson: PackageJson;
|
6
|
-
|
7
|
+
tsEntrypoints: string[];
|
7
8
|
outDir: string;
|
8
9
|
};
|
9
|
-
export declare function callTypescript({ ts,
|
10
|
+
export declare function callTypescript({ ts, dirs, tsEntrypoints, packageJson, }: BuildTypesOptions): Promise<{
|
11
|
+
sourceToCjsDtsMap: Map<string, string>;
|
12
|
+
sourceToEsmDtsMap: Map<string, string>;
|
13
|
+
}>;
|
10
14
|
export {};
|
@@ -7,6 +7,9 @@ require("node:fs/promises");
|
|
7
7
|
require("zod");
|
8
8
|
const detectModules = require("../../detectModules.js");
|
9
9
|
const error = require("../../error.js");
|
10
|
+
const findTypingsPackages = require("./findTypingsPackages.js");
|
11
|
+
const findTypingsNames = require("./findTypingsNames.js");
|
12
|
+
require("../../args.js");
|
10
13
|
function _interopNamespaceDefault(e) {
|
11
14
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
12
15
|
if (e) {
|
@@ -33,11 +36,11 @@ function makeFileExists(outDir, filePath) {
|
|
33
36
|
}
|
34
37
|
async function callTypescript({
|
35
38
|
ts,
|
36
|
-
|
37
|
-
|
38
|
-
packageJson
|
39
|
-
outDir
|
39
|
+
dirs,
|
40
|
+
tsEntrypoints,
|
41
|
+
packageJson
|
40
42
|
}) {
|
43
|
+
const { sourceDir, outDir, esmOutDir, cjsOutDir } = dirs;
|
41
44
|
const configPath = path__namespace.join(sourceDir, "tsconfig.json");
|
42
45
|
const configFile = ts.readConfigFile(
|
43
46
|
configPath,
|
@@ -66,24 +69,31 @@ async function callTypescript({
|
|
66
69
|
configPath
|
67
70
|
);
|
68
71
|
const host = ts.createCompilerHost(parsedCommandLine.options);
|
69
|
-
const
|
70
|
-
const
|
72
|
+
const sourceToCjsDtsMap = /* @__PURE__ */ new Map();
|
73
|
+
const sourceToEsmDtsMap = /* @__PURE__ */ new Map();
|
74
|
+
const program = ts.createProgram(
|
75
|
+
tsEntrypoints,
|
76
|
+
parsedCommandLine.options,
|
77
|
+
host
|
78
|
+
);
|
71
79
|
program.emit(void 0, (fileName, data) => {
|
72
80
|
const relativePath = path__namespace.relative(sourceDir, fileName);
|
73
81
|
const sourceFileName = fileName.replace(/\.d\.ts$/, ".ts");
|
74
|
-
const finalEsmPath = path__namespace.join(
|
82
|
+
const finalEsmPath = path__namespace.join(esmOutDir, relativePath);
|
75
83
|
const esmFinalPath = finalEsmPath.replace(/\.d\.ts$/, ".d.mts");
|
76
|
-
|
84
|
+
sourceToEsmDtsMap.set(sourceFileName, esmFinalPath);
|
77
85
|
fs__namespace.mkdirSync(path__namespace.dirname(esmFinalPath), { recursive: true });
|
78
86
|
fs__namespace.writeFileSync(esmFinalPath, data);
|
79
|
-
const finalCjsPath = path__namespace.join(
|
87
|
+
const finalCjsPath = path__namespace.join(cjsOutDir, relativePath);
|
80
88
|
fs__namespace.mkdirSync(path__namespace.dirname(finalCjsPath), { recursive: true });
|
81
89
|
const cjsFinalPath = finalCjsPath;
|
82
90
|
fs__namespace.writeFileSync(cjsFinalPath, data);
|
83
|
-
|
91
|
+
sourceToCjsDtsMap.set(sourceFileName, cjsFinalPath);
|
84
92
|
});
|
85
|
-
const
|
86
|
-
|
93
|
+
for (const file of [
|
94
|
+
...sourceToCjsDtsMap.values(),
|
95
|
+
...sourceToEsmDtsMap.values()
|
96
|
+
]) {
|
87
97
|
const content = fs__namespace.readFileSync(file, "utf-8");
|
88
98
|
const relativePath = path__namespace.relative(outDir, file);
|
89
99
|
if (file.endsWith(".d.ts")) {
|
@@ -92,10 +102,7 @@ async function callTypescript({
|
|
92
102
|
content,
|
93
103
|
makeFileExists(outDir, relativePath)
|
94
104
|
);
|
95
|
-
|
96
|
-
allImportedLibraries.add(lib);
|
97
|
-
}
|
98
|
-
fs__namespace.writeFileSync(file, transformedCode.output);
|
105
|
+
fs__namespace.writeFileSync(file, transformedCode);
|
99
106
|
}
|
100
107
|
if (file.endsWith(".d.mts")) {
|
101
108
|
const transformedCode = inlineExtensions.inlineExtensionsMjs(
|
@@ -103,28 +110,52 @@ async function callTypescript({
|
|
103
110
|
content,
|
104
111
|
makeFileExists(outDir, relativePath)
|
105
112
|
);
|
106
|
-
|
107
|
-
|
113
|
+
fs__namespace.writeFileSync(file, transformedCode);
|
114
|
+
}
|
115
|
+
}
|
116
|
+
const packages = /* @__PURE__ */ new Set();
|
117
|
+
for (const sourceEntrypoint of tsEntrypoints) {
|
118
|
+
const esmEntrypoint = sourceToEsmDtsMap.get(sourceEntrypoint);
|
119
|
+
if (esmEntrypoint) {
|
120
|
+
const localPackages = findTypingsNames.findTypingsNames(
|
121
|
+
esmEntrypoint,
|
122
|
+
esmOutDir,
|
123
|
+
".d.mts"
|
124
|
+
);
|
125
|
+
for (const p of localPackages) {
|
126
|
+
packages.add(p);
|
127
|
+
}
|
128
|
+
}
|
129
|
+
const cjsEntrypoint = sourceToCjsDtsMap.get(sourceEntrypoint);
|
130
|
+
if (cjsEntrypoint) {
|
131
|
+
const localPackages = findTypingsNames.findTypingsNames(cjsEntrypoint, cjsOutDir, ".d.ts");
|
132
|
+
for (const p of localPackages) {
|
133
|
+
packages.add(p);
|
108
134
|
}
|
109
|
-
fs__namespace.writeFileSync(file, transformedCode.output);
|
110
135
|
}
|
111
136
|
}
|
112
|
-
const
|
113
|
-
|
137
|
+
const { missingTypings, existingTypingPackages } = findTypingsPackages.findTypingsPackages(
|
138
|
+
packages,
|
139
|
+
sourceDir
|
140
|
+
);
|
141
|
+
for (const lib of existingTypingPackages) {
|
114
142
|
if (detectModules.getMinVersion(packageJson, lib, [
|
115
143
|
"optionalDependencies",
|
116
144
|
"devDependencies"
|
117
145
|
]) == null) {
|
118
|
-
|
146
|
+
missingTypings.add(lib);
|
119
147
|
}
|
120
148
|
}
|
121
|
-
if (
|
122
|
-
const libsList = [...
|
149
|
+
if (missingTypings.size > 0) {
|
150
|
+
const libsList = [...missingTypings].map((x) => `"${x}"`).join(", ");
|
123
151
|
throw new error.BuildError(
|
124
|
-
`
|
152
|
+
`The typings won't installed in bundled package: ${libsList}. Please install them into dependencies or peerDependencies.`
|
125
153
|
);
|
126
154
|
}
|
127
|
-
return
|
155
|
+
return {
|
156
|
+
sourceToCjsDtsMap,
|
157
|
+
sourceToEsmDtsMap
|
158
|
+
};
|
128
159
|
}
|
129
160
|
exports.callTypescript = callTypescript;
|
130
161
|
//# sourceMappingURL=callTypescript.js.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"callTypescript.js","sources":["../../../../../../src/tasks/buildTypesTask/callTypescript.ts"],"sourcesContent":["import * as path from \"node:path\";\nimport * as fs from \"node:fs\";\nimport {\n inlineExtensionsMjs,\n inlineExtensionsCjs,\n} from \"./inlineExtensions.js\";\nimport { type PackageJson } from \"../../packageJson.js\";\nimport { getMinVersion } from \"../../detectModules.js\";\nimport { BuildError } from \"../../error.js\";\n\ntype BuildTypesOptions = {\n ts: typeof import(\"typescript\");\n
|
1
|
+
{"version":3,"file":"callTypescript.js","sources":["../../../../../../src/tasks/buildTypesTask/callTypescript.ts"],"sourcesContent":["import * as path from \"node:path\";\nimport * as fs from \"node:fs\";\nimport {\n inlineExtensionsMjs,\n inlineExtensionsCjs,\n} from \"./inlineExtensions.js\";\nimport { type PackageJson } from \"../../packageJson.js\";\nimport { getMinVersion } from \"../../detectModules.js\";\nimport { BuildError } from \"../../error.js\";\nimport { findTypingsPackages } from \"./findTypingsPackages.js\";\nimport { findTypingsNames } from \"./findTypingsNames.js\";\nimport { type Dirs } from \"../../resolveDirs.js\";\n\ntype BuildTypesOptions = {\n ts: typeof import(\"typescript\");\n dirs: Dirs;\n packageJson: PackageJson;\n tsEntrypoints: string[];\n outDir: string;\n};\n\nfunction makeFileExists(outDir: string, filePath: string) {\n return (p: string) => {\n const dir = path.join(outDir, path.dirname(filePath));\n return fs.existsSync(path.join(dir, p));\n };\n}\n\nexport async function callTypescript({\n ts,\n dirs,\n tsEntrypoints,\n packageJson,\n}: BuildTypesOptions) {\n const { sourceDir, outDir, esmOutDir, cjsOutDir } = dirs;\n\n // <build d.ts>\n const configPath = path.join(sourceDir, \"tsconfig.json\");\n const configFile = ts.readConfigFile(configPath, (path) =>\n // https://github.com/XaveScor/bobrik/issues/22\n fs.readFileSync(path, \"utf-8\"),\n );\n\n const parsedCommandLine = ts.parseJsonConfigFileContent(\n configFile.config,\n ts.sys,\n 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 configPath,\n );\n\n const host = ts.createCompilerHost(parsedCommandLine.options);\n\n const sourceToCjsDtsMap = new Map<string, string>();\n const sourceToEsmDtsMap = new Map<string, string>();\n const program = ts.createProgram(\n tsEntrypoints,\n parsedCommandLine.options,\n host,\n );\n program.emit(undefined, (fileName, data) => {\n // .d.ts for cjs because \"type\": \"commonjs\" in package.json\n // .d.mts for esm\n const relativePath = path.relative(sourceDir, fileName);\n const sourceFileName = fileName.replace(/\\.d\\.ts$/, \".ts\"); // Assuming source files have .ts extension\n\n const finalEsmPath = path.join(esmOutDir, relativePath);\n const esmFinalPath = finalEsmPath.replace(/\\.d\\.ts$/, \".d.mts\");\n sourceToEsmDtsMap.set(sourceFileName, esmFinalPath);\n fs.mkdirSync(path.dirname(esmFinalPath), { recursive: true });\n fs.writeFileSync(esmFinalPath, data);\n\n const finalCjsPath = path.join(cjsOutDir, relativePath);\n fs.mkdirSync(path.dirname(finalCjsPath), { recursive: true });\n const cjsFinalPath = finalCjsPath;\n fs.writeFileSync(cjsFinalPath, data);\n sourceToCjsDtsMap.set(sourceFileName, cjsFinalPath);\n });\n // </build d.ts>\n\n // <fix vscode typings>\n for (const file of [\n ...sourceToCjsDtsMap.values(),\n ...sourceToEsmDtsMap.values(),\n ]) {\n const content = fs.readFileSync(file, \"utf-8\");\n const relativePath = path.relative(outDir, file);\n if (file.endsWith(\".d.ts\")) {\n const transformedCode = inlineExtensionsCjs(\n ts,\n content,\n makeFileExists(outDir, relativePath),\n );\n fs.writeFileSync(file, transformedCode);\n }\n if (file.endsWith(\".d.mts\")) {\n const transformedCode = inlineExtensionsMjs(\n ts,\n content,\n makeFileExists(outDir, relativePath),\n );\n fs.writeFileSync(file, transformedCode);\n }\n }\n // </fix vscode typings>\n\n // <find all libraries names>\n const packages = new Set<string>();\n for (const sourceEntrypoint of tsEntrypoints) {\n const esmEntrypoint = sourceToEsmDtsMap.get(sourceEntrypoint);\n if (esmEntrypoint) {\n const localPackages = findTypingsNames(\n esmEntrypoint,\n esmOutDir,\n \".d.mts\",\n );\n for (const p of localPackages) {\n packages.add(p);\n }\n }\n\n const cjsEntrypoint = sourceToCjsDtsMap.get(sourceEntrypoint);\n if (cjsEntrypoint) {\n const localPackages = findTypingsNames(cjsEntrypoint, cjsOutDir, \".d.ts\");\n for (const p of localPackages) {\n packages.add(p);\n }\n }\n }\n // </find all libraries names>\n\n // <check not installed typings libraries>\n const { missingTypings, existingTypingPackages } = findTypingsPackages(\n packages,\n sourceDir,\n );\n for (const lib of existingTypingPackages) {\n if (\n getMinVersion(packageJson, lib, [\n \"optionalDependencies\",\n \"devDependencies\",\n ]) == null\n ) {\n missingTypings.add(lib);\n }\n }\n if (missingTypings.size > 0) {\n const libsList = [...missingTypings].map((x) => `\"${x}\"`).join(\", \");\n throw new BuildError(\n `The typings won't installed in bundled package: ${libsList}. Please install them into dependencies or peerDependencies.`,\n );\n }\n // </check not installed typings libraries>\n\n return {\n sourceToCjsDtsMap,\n sourceToEsmDtsMap,\n };\n}\n"],"names":["path","fs","inlineExtensionsCjs","inlineExtensionsMjs","findTypingsNames","findTypingsPackages","getMinVersion","BuildError"],"mappings":"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"}
|
@@ -0,0 +1 @@
|
|
1
|
+
export declare function findTypingsNames(entrypoint: string, sourceDir: string, ext: string): Set<string>;
|
@@ -0,0 +1,89 @@
|
|
1
|
+
"use strict";
|
2
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
3
|
+
const ts = require("typescript");
|
4
|
+
const path = require("node:path");
|
5
|
+
const fs = require("node:fs");
|
6
|
+
function _interopNamespaceDefault(e) {
|
7
|
+
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
8
|
+
if (e) {
|
9
|
+
for (const k in e) {
|
10
|
+
if (k !== "default") {
|
11
|
+
const d = Object.getOwnPropertyDescriptor(e, k);
|
12
|
+
Object.defineProperty(n, k, d.get ? d : {
|
13
|
+
enumerable: true,
|
14
|
+
get: () => e[k]
|
15
|
+
});
|
16
|
+
}
|
17
|
+
}
|
18
|
+
}
|
19
|
+
n.default = e;
|
20
|
+
return Object.freeze(n);
|
21
|
+
}
|
22
|
+
const ts__namespace = /* @__PURE__ */ _interopNamespaceDefault(ts);
|
23
|
+
function createCompilerHostWithVirtualSource(sourceDir) {
|
24
|
+
return ts__namespace.createCompilerHost({
|
25
|
+
target: ts__namespace.ScriptTarget.ESNext,
|
26
|
+
moduleResolution: ts__namespace.ModuleResolutionKind.NodeNext,
|
27
|
+
baseUrl: ".",
|
28
|
+
sourceRoot: sourceDir,
|
29
|
+
noEmit: true,
|
30
|
+
emitDeclarationOnly: true,
|
31
|
+
noEmitOnError: true
|
32
|
+
});
|
33
|
+
}
|
34
|
+
function collectAllFilesInDir(sourceDir, ext) {
|
35
|
+
const files = fs.readdirSync(sourceDir);
|
36
|
+
const ret = new Array();
|
37
|
+
for (const file of files) {
|
38
|
+
const stat = fs.statSync(path.join(sourceDir, file));
|
39
|
+
if (stat.isDirectory()) {
|
40
|
+
ret.push(...collectAllFilesInDir(path.join(sourceDir, file), ext));
|
41
|
+
} else if (file.endsWith(ext)) {
|
42
|
+
ret.push(path.join(sourceDir, file));
|
43
|
+
}
|
44
|
+
}
|
45
|
+
return ret;
|
46
|
+
}
|
47
|
+
function findTypingsNames(entrypoint, sourceDir, ext) {
|
48
|
+
const host = createCompilerHostWithVirtualSource(sourceDir);
|
49
|
+
const program = ts__namespace.createProgram({
|
50
|
+
rootNames: collectAllFilesInDir(sourceDir, ext),
|
51
|
+
options: {},
|
52
|
+
host
|
53
|
+
});
|
54
|
+
const packages = /* @__PURE__ */ new Set();
|
55
|
+
const processedFiles = /* @__PURE__ */ new Set();
|
56
|
+
const filesQueue = [path.relative(sourceDir, entrypoint)];
|
57
|
+
function processModuleSpecifier(moduleSpecifier) {
|
58
|
+
const moduleName = moduleSpecifier.text;
|
59
|
+
if (moduleName.startsWith(".")) {
|
60
|
+
filesQueue.push(moduleName.replace(/\.js$/, ext));
|
61
|
+
return;
|
62
|
+
}
|
63
|
+
packages.add(moduleName);
|
64
|
+
}
|
65
|
+
while (filesQueue.length > 0) {
|
66
|
+
let visit = function(node) {
|
67
|
+
if (ts__namespace.isImportDeclaration(node) && ts__namespace.isStringLiteral(node.moduleSpecifier)) {
|
68
|
+
processModuleSpecifier(node.moduleSpecifier);
|
69
|
+
}
|
70
|
+
if (ts__namespace.isImportTypeNode(node) && ts__namespace.isLiteralTypeNode(node.argument) && ts__namespace.isStringLiteral(node.argument.literal)) {
|
71
|
+
processModuleSpecifier(node.argument.literal);
|
72
|
+
}
|
73
|
+
if (ts__namespace.isExportDeclaration(node) && node.moduleSpecifier && ts__namespace.isStringLiteral(node.moduleSpecifier)) {
|
74
|
+
processModuleSpecifier(node.moduleSpecifier);
|
75
|
+
}
|
76
|
+
ts__namespace.forEachChild(node, visit);
|
77
|
+
};
|
78
|
+
const relativeCurrentFile = filesQueue.pop();
|
79
|
+
const currentFile = path.join(sourceDir, relativeCurrentFile);
|
80
|
+
if (processedFiles.has(currentFile)) continue;
|
81
|
+
const sourceFile = program.getSourceFile(currentFile);
|
82
|
+
if (!sourceFile) continue;
|
83
|
+
processedFiles.add(currentFile);
|
84
|
+
ts__namespace.forEachChild(sourceFile, visit);
|
85
|
+
}
|
86
|
+
return packages;
|
87
|
+
}
|
88
|
+
exports.findTypingsNames = findTypingsNames;
|
89
|
+
//# sourceMappingURL=findTypingsNames.js.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"findTypingsNames.js","sources":["../../../../../../src/tasks/buildTypesTask/findTypingsNames.ts"],"sourcesContent":["import * as ts from \"typescript\";\nimport { join, relative } from \"node:path\";\nimport { readdirSync, statSync } from \"node:fs\";\n\nfunction createCompilerHostWithVirtualSource(sourceDir: string) {\n return ts.createCompilerHost({\n target: ts.ScriptTarget.ESNext,\n moduleResolution: ts.ModuleResolutionKind.NodeNext,\n baseUrl: \".\",\n sourceRoot: sourceDir,\n noEmit: true,\n emitDeclarationOnly: true,\n noEmitOnError: true,\n });\n}\n\n/*\nChatGPT told me we need to specify all files in rootNames for the program to work correctly.\n */\nfunction collectAllFilesInDir(sourceDir: string, ext: string) {\n const files = readdirSync(sourceDir);\n const ret = new Array<string>();\n for (const file of files) {\n // check if the file is a directory\n const stat = statSync(join(sourceDir, file));\n if (stat.isDirectory()) {\n ret.push(...collectAllFilesInDir(join(sourceDir, file), ext));\n } else if (file.endsWith(ext)) {\n ret.push(join(sourceDir, file));\n }\n }\n\n return ret;\n}\n\nexport function findTypingsNames(\n entrypoint: string,\n sourceDir: string,\n ext: string,\n) {\n const host = createCompilerHostWithVirtualSource(sourceDir);\n const program = ts.createProgram({\n rootNames: collectAllFilesInDir(sourceDir, ext),\n options: {},\n host,\n });\n\n const packages = new Set<string>();\n const processedFiles = new Set<string>();\n const filesQueue = [relative(sourceDir, entrypoint)];\n\n function processModuleSpecifier(moduleSpecifier: ts.StringLiteral) {\n const moduleName = moduleSpecifier.text;\n if (moduleName.startsWith(\".\")) {\n filesQueue.push(moduleName.replace(/\\.js$/, ext));\n return;\n }\n\n packages.add(moduleName);\n }\n\n while (filesQueue.length > 0) {\n const relativeCurrentFile = filesQueue.pop()!;\n const currentFile = join(sourceDir, relativeCurrentFile);\n if (processedFiles.has(currentFile)) continue;\n\n const sourceFile = program.getSourceFile(currentFile);\n if (!sourceFile) continue;\n\n function visit(node: ts.Node) {\n // import \"moduleSpecifier\";\n if (\n ts.isImportDeclaration(node) &&\n ts.isStringLiteral(node.moduleSpecifier)\n ) {\n processModuleSpecifier(node.moduleSpecifier);\n }\n\n // Generic<import(\"node\")>;\n if (\n ts.isImportTypeNode(node) &&\n ts.isLiteralTypeNode(node.argument) &&\n ts.isStringLiteral(node.argument.literal)\n ) {\n processModuleSpecifier(node.argument.literal);\n }\n\n // export * from \"moduleSpecifier\";\n if (\n ts.isExportDeclaration(node) &&\n node.moduleSpecifier &&\n ts.isStringLiteral(node.moduleSpecifier)\n ) {\n processModuleSpecifier(node.moduleSpecifier);\n }\n\n ts.forEachChild(node, visit);\n }\n\n processedFiles.add(currentFile);\n\n ts.forEachChild(sourceFile, visit);\n }\n\n return packages;\n}\n"],"names":["ts","readdirSync","statSync","join","relative"],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAIA,SAAS,oCAAoC,WAAmB;AAC9D,SAAOA,cAAG,mBAAmB;AAAA,IAC3B,QAAQA,cAAG,aAAa;AAAA,IACxB,kBAAkBA,cAAG,qBAAqB;AAAA,IAC1C,SAAS;AAAA,IACT,YAAY;AAAA,IACZ,QAAQ;AAAA,IACR,qBAAqB;AAAA,IACrB,eAAe;AAAA,EAAA,CAChB;AACH;AAKA,SAAS,qBAAqB,WAAmB,KAAa;AACtD,QAAA,QAAQC,eAAY,SAAS;AAC7B,QAAA,MAAM,IAAI,MAAc;AAC9B,aAAW,QAAQ,OAAO;AAExB,UAAM,OAAOC,GAAA,SAASC,KAAK,KAAA,WAAW,IAAI,CAAC;AACvC,QAAA,KAAK,eAAe;AAClB,UAAA,KAAK,GAAG,qBAAqBA,KAAAA,KAAK,WAAW,IAAI,GAAG,GAAG,CAAC;AAAA,IACnD,WAAA,KAAK,SAAS,GAAG,GAAG;AAC7B,UAAI,KAAKA,KAAAA,KAAK,WAAW,IAAI,CAAC;AAAA,IAAA;AAAA,EAChC;AAGK,SAAA;AACT;AAEgB,SAAA,iBACd,YACA,WACA,KACA;AACM,QAAA,OAAO,oCAAoC,SAAS;AACpD,QAAA,UAAUH,cAAG,cAAc;AAAA,IAC/B,WAAW,qBAAqB,WAAW,GAAG;AAAA,IAC9C,SAAS,CAAC;AAAA,IACV;AAAA,EAAA,CACD;AAEK,QAAA,+BAAe,IAAY;AAC3B,QAAA,qCAAqB,IAAY;AACvC,QAAM,aAAa,CAACI,KAAAA,SAAS,WAAW,UAAU,CAAC;AAEnD,WAAS,uBAAuB,iBAAmC;AACjE,UAAM,aAAa,gBAAgB;AAC/B,QAAA,WAAW,WAAW,GAAG,GAAG;AAC9B,iBAAW,KAAK,WAAW,QAAQ,SAAS,GAAG,CAAC;AAChD;AAAA,IAAA;AAGF,aAAS,IAAI,UAAU;AAAA,EAAA;AAGlB,SAAA,WAAW,SAAS,GAAG;AAQnB,QAAA,QAAT,SAAe,MAAe;AAG1B,UAAAJ,cAAG,oBAAoB,IAAI,KAC3BA,cAAG,gBAAgB,KAAK,eAAe,GACvC;AACA,+BAAuB,KAAK,eAAe;AAAA,MAAA;AAI7C,UACEA,cAAG,iBAAiB,IAAI,KACxBA,cAAG,kBAAkB,KAAK,QAAQ,KAClCA,cAAG,gBAAgB,KAAK,SAAS,OAAO,GACxC;AACuB,+BAAA,KAAK,SAAS,OAAO;AAAA,MAAA;AAK5C,UAAAA,cAAG,oBAAoB,IAAI,KAC3B,KAAK,mBACLA,cAAG,gBAAgB,KAAK,eAAe,GACvC;AACA,+BAAuB,KAAK,eAAe;AAAA,MAAA;AAG1CA,oBAAA,aAAa,MAAM,KAAK;AAAA,IAC7B;AAnCM,UAAA,sBAAsB,WAAW,IAAI;AACrC,UAAA,cAAcG,KAAAA,KAAK,WAAW,mBAAmB;AACnD,QAAA,eAAe,IAAI,WAAW,EAAG;AAE/B,UAAA,aAAa,QAAQ,cAAc,WAAW;AACpD,QAAI,CAAC,WAAY;AAgCjB,mBAAe,IAAI,WAAW;AAE3BH,kBAAA,aAAa,YAAY,KAAK;AAAA,EAAA;AAG5B,SAAA;AACT;;"}
|