@xylabs/ts-scripts-yarn3 3.0.4 → 3.0.6
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.
|
@@ -34,6 +34,7 @@ module.exports = __toCommonJS(compile_exports);
|
|
|
34
34
|
var import_plugin_commonjs = __toESM(require("@rollup/plugin-commonjs"));
|
|
35
35
|
var import_plugin_typescript = __toESM(require("@rollup/plugin-typescript"));
|
|
36
36
|
var import_chalk = __toESM(require("chalk"));
|
|
37
|
+
var import_cosmiconfig = require("cosmiconfig");
|
|
37
38
|
var import_promises = require("fs/promises");
|
|
38
39
|
var import_rollup = require("rollup");
|
|
39
40
|
var import_rollup_plugin_exclude_dependencies_from_bundle = __toESM(require("rollup-plugin-exclude-dependencies-from-bundle"));
|
|
@@ -41,15 +42,16 @@ var import_rollup_plugin_node_externals = __toESM(require("rollup-plugin-node-ex
|
|
|
41
42
|
var import_loadPackageConfig = require("../../loadPackageConfig");
|
|
42
43
|
var import_publint = require("./publint");
|
|
43
44
|
const rollItUp = async (format, ext, subDir) => {
|
|
44
|
-
const
|
|
45
|
+
const dir = subDir === "." ? void 0 : subDir;
|
|
46
|
+
const input = await getInputs(dir);
|
|
45
47
|
const tsPlugIn = (0, import_plugin_typescript.default)({
|
|
46
48
|
baseUrl: "src",
|
|
47
|
-
declaration: !subDir,
|
|
48
|
-
declarationMap: !subDir,
|
|
49
|
+
declaration: !dir || !subDir,
|
|
50
|
+
declarationMap: !dir || !subDir,
|
|
49
51
|
emitDeclarationOnly: false,
|
|
50
52
|
esModuleInterop: true,
|
|
51
53
|
exclude: ["**/*.spec.*", "dist", "docs", "node_modules", "packages"],
|
|
52
|
-
outDir:
|
|
54
|
+
outDir: dir ? `dist/${dir}` : "dist",
|
|
53
55
|
rootDir: "src",
|
|
54
56
|
tsconfig: "tsconfig.json"
|
|
55
57
|
});
|
|
@@ -58,9 +60,12 @@ const rollItUp = async (format, ext, subDir) => {
|
|
|
58
60
|
const infos = [];
|
|
59
61
|
const debugs = [];
|
|
60
62
|
const options = {
|
|
61
|
-
input: input.map((file) => `./src/${file}`),
|
|
63
|
+
input: subDir ? input.map((file) => `./src/${file}`) : ["./src/index.ts"],
|
|
62
64
|
logLevel: "warn",
|
|
63
65
|
onLog: (level, log, defaultHandler) => {
|
|
66
|
+
if (log.code === "EMPTY_BUNDLE") {
|
|
67
|
+
return defaultHandler(level, log);
|
|
68
|
+
}
|
|
64
69
|
switch (level) {
|
|
65
70
|
case "warn": {
|
|
66
71
|
warnings.push(log);
|
|
@@ -83,13 +88,13 @@ const rollItUp = async (format, ext, subDir) => {
|
|
|
83
88
|
break;
|
|
84
89
|
}
|
|
85
90
|
}
|
|
86
|
-
console.log(`Log: ${level}: ${log.
|
|
91
|
+
console.log(`Log: ${level}: ${log.message}`);
|
|
87
92
|
return defaultHandler(level, log);
|
|
88
93
|
},
|
|
89
94
|
plugins: [(0, import_plugin_commonjs.default)(), (0, import_rollup_plugin_exclude_dependencies_from_bundle.default)(), (0, import_rollup_plugin_node_externals.default)(), tsPlugIn]
|
|
90
95
|
};
|
|
91
96
|
const outputOptions = {
|
|
92
|
-
dir:
|
|
97
|
+
dir: dir ? `dist/${dir}` : "dist",
|
|
93
98
|
dynamicImportInCjs: true,
|
|
94
99
|
entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,
|
|
95
100
|
format,
|
|
@@ -103,10 +108,13 @@ const rollItUp = async (format, ext, subDir) => {
|
|
|
103
108
|
const getInputs = async (subDir) => {
|
|
104
109
|
return (await (0, import_promises.readdir)(subDir ? `src/${subDir}` : "src", { recursive: false })).filter((file) => (file.endsWith(".ts") || file.endsWith(".tsx")) && !file.endsWith("d.ts") && !file.endsWith("spec.ts")).map((file) => subDir ? `${subDir}/${file}` : file);
|
|
105
110
|
};
|
|
106
|
-
const getInputDirs = async () => {
|
|
111
|
+
const getInputDirs = async (depth) => {
|
|
112
|
+
if (depth === 0) {
|
|
113
|
+
return [];
|
|
114
|
+
}
|
|
107
115
|
return [
|
|
108
|
-
|
|
109
|
-
...(await (0, import_promises.readdir)("src", { recursive:
|
|
116
|
+
".",
|
|
117
|
+
...(await (0, import_promises.readdir)("src", { recursive: depth > 1, withFileTypes: true })).filter((file) => file.isDirectory()).map((file) => {
|
|
110
118
|
const pathParts = file.path.split("/");
|
|
111
119
|
pathParts.shift();
|
|
112
120
|
if (pathParts.length) {
|
|
@@ -124,16 +132,16 @@ const getDistTypeFiles = async () => {
|
|
|
124
132
|
const getDistTypeMapFiles = async () => {
|
|
125
133
|
return (await (0, import_promises.readdir)("dist", { recursive: true })).filter((file) => file.endsWith("d.ts.map")).map((file) => `dist/${file}`);
|
|
126
134
|
};
|
|
127
|
-
const buildIt = async (pkg) => {
|
|
128
|
-
const inputDirs = await getInputDirs();
|
|
135
|
+
const buildIt = async (pkg, compileDepth) => {
|
|
136
|
+
const inputDirs = await getInputDirs(compileDepth);
|
|
129
137
|
const pkgType = pkg.type ?? "commonjs";
|
|
130
138
|
const esmExt = pkgType === "module" ? "js" : "mjs";
|
|
131
139
|
const cjsExt = pkgType === "commonjs" ? "js" : "cjs";
|
|
132
|
-
const rollupResult = await Promise.all(
|
|
140
|
+
const rollupResult = inputDirs.length ? await Promise.all(
|
|
133
141
|
inputDirs.map(async (inputDir) => {
|
|
134
142
|
return await rollItUp("esm", esmExt, inputDir) + await rollItUp("cjs", cjsExt, inputDir);
|
|
135
143
|
})
|
|
136
|
-
);
|
|
144
|
+
) : [await rollItUp("esm", esmExt) + await rollItUp("cjs", cjsExt)];
|
|
137
145
|
const distTypeFiles = await getDistTypeFiles();
|
|
138
146
|
await Promise.all(
|
|
139
147
|
distTypeFiles.map(async (file) => {
|
|
@@ -149,11 +157,13 @@ const buildIt = async (pkg) => {
|
|
|
149
157
|
return rollupResult.reduce((prev, item) => prev + item, 0);
|
|
150
158
|
};
|
|
151
159
|
const packageCompile = async ({ publint = true, verbose } = { verbose: false }) => {
|
|
160
|
+
const xyConfig = await (0, import_cosmiconfig.cosmiconfig)("xy").search();
|
|
161
|
+
const compileDepth = xyConfig?.config.compile?.depth ?? 0;
|
|
152
162
|
const pkgName = process.env.npm_package_name;
|
|
153
163
|
if (verbose) {
|
|
154
164
|
console.log(import_chalk.default.green(`Compiling ${pkgName} Start`));
|
|
155
165
|
}
|
|
156
|
-
const result = await buildIt(await (0, import_loadPackageConfig.loadPackageConfig)()) + (publint ? await (0, import_publint.packagePublint)() : 0);
|
|
166
|
+
const result = await buildIt(await (0, import_loadPackageConfig.loadPackageConfig)(), compileDepth) + (publint ? await (0, import_publint.packagePublint)() : 0);
|
|
157
167
|
if (result) {
|
|
158
168
|
const input = await getInputs();
|
|
159
169
|
console.log(`Inputs: ${JSON.stringify(input, null, 2)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/package/compile.ts"],"sourcesContent":["import commonjs from '@rollup/plugin-commonjs'\nimport typescript from '@rollup/plugin-typescript'\nimport chalk from 'chalk'\nimport { copyFile, readdir } from 'fs/promises'\nimport { OutputOptions, rollup, RollupLog, RollupOptions, watch } from 'rollup'\nimport externalDeps from 'rollup-plugin-exclude-dependencies-from-bundle'\nimport nodeExternals from 'rollup-plugin-node-externals'\n\nimport { loadPackageConfig, PackageJsonEx } from '../../loadPackageConfig'\nimport { packagePublint } from './publint'\n\nexport interface CompilePackageParams {\n publint?: boolean\n verbose?: boolean\n}\n\nconst rollItUp = async (format: 'cjs' | 'esm', ext: string, subDir?: string) => {\n const input = await getInputs(subDir)\n const tsPlugIn = typescript({\n baseUrl: 'src',\n declaration: !subDir,\n declarationMap: !subDir,\n emitDeclarationOnly: false,\n esModuleInterop: true,\n exclude: ['**/*.spec.*', 'dist', 'docs', 'node_modules', 'packages'],\n outDir: subDir ? `dist/${subDir}` : 'dist',\n rootDir: 'src',\n tsconfig: 'tsconfig.json',\n })\n\n const errors: RollupLog[] = []\n const warnings: RollupLog[] = []\n const infos: RollupLog[] = []\n const debugs: RollupLog[] = []\n\n const options: RollupOptions = {\n input: input.map((file) => `./src/${file}`),\n logLevel: 'warn',\n onLog: (level, log, defaultHandler) => {\n switch (level) {\n case 'warn': {\n warnings.push(log)\n console.warn(chalk.yellow(JSON.stringify(log, null, 2)))\n break\n }\n case 'info': {\n infos.push(log)\n console.info(chalk.white(JSON.stringify(log, null, 2)))\n break\n }\n case 'debug': {\n debugs.push(log)\n console.debug(chalk.gray(JSON.stringify(log, null, 2)))\n break\n }\n default: {\n errors.push(log)\n console.error(chalk.red(JSON.stringify(log, null, 2)))\n break\n }\n }\n console.log(`Log: ${level}: ${log.cause}`)\n return defaultHandler(level, log)\n },\n plugins: [commonjs(), externalDeps(), nodeExternals(), tsPlugIn],\n }\n\n const outputOptions: OutputOptions = {\n dir: subDir ? `dist/${subDir}` : 'dist',\n dynamicImportInCjs: true,\n entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,\n format,\n sourcemap: true,\n }\n\n if (input.length) {\n await (await rollup(options)).write(outputOptions)\n }\n\n return errors.length + warnings.length\n}\n\nconst getInputs = async (subDir?: string) => {\n return (await readdir(subDir ? `src/${subDir}` : 'src', { recursive: false }))\n .filter((file) => (file.endsWith('.ts') || file.endsWith('.tsx')) && !file.endsWith('d.ts') && !file.endsWith('spec.ts'))\n .map((file) => (subDir ? `${subDir}/${file}` : file))\n}\n\nconst getInputDirs = async () => {\n return [\n undefined,\n ...(await readdir('src', { recursive: true, withFileTypes: true }))\n .filter((file) => file.isDirectory())\n .map((file) => {\n const pathParts = file.path.split('/')\n pathParts.shift()\n if (pathParts.length) {\n const root = pathParts.join('/')\n return `${root}/${file.name}`\n } else {\n return file.name\n }\n }),\n ]\n}\n\nconst getDistTypeFiles = async () => {\n return (await readdir('dist', { recursive: true })).filter((file) => file.endsWith('d.ts')).map((file) => `dist/${file}`)\n}\n\nconst getDistTypeMapFiles = async () => {\n return (await readdir('dist', { recursive: true })).filter((file) => file.endsWith('d.ts.map')).map((file) => `dist/${file}`)\n}\n\nconst buildIt = async (pkg: PackageJsonEx) => {\n const inputDirs = await getInputDirs()\n\n const pkgType = pkg.type ?? 'commonjs'\n\n const esmExt = pkgType === 'module' ? 'js' : 'mjs'\n const cjsExt = pkgType === 'commonjs' ? 'js' : 'cjs'\n\n const rollupResult = await Promise.all(\n inputDirs.map(async (inputDir) => {\n return await rollItUp('esm', esmExt, inputDir) + await rollItUp('cjs', cjsExt, inputDir)\n }),\n )\n\n //hybrid packages want two copies of the types\n const distTypeFiles = await getDistTypeFiles()\n await Promise.all(\n distTypeFiles.map(async (file) => {\n await copyFile(file, file.replace('d.ts', 'd.mts'))\n }),\n )\n\n const distTypeMapFiles = await getDistTypeMapFiles()\n await Promise.all(\n distTypeMapFiles.map(async (file) => {\n await copyFile(file, file.replace('d.ts.map', 'd.mts.map'))\n }),\n )\n\n return rollupResult.reduce((prev, item) => prev + item, 0)\n}\n\nexport const packageCompile = async ({ publint = true, verbose }: CompilePackageParams = { verbose: false }) => {\n const pkgName = process.env.npm_package_name\n if (verbose) {\n console.log(chalk.green(`Compiling ${pkgName} Start`))\n }\n const result = (await buildIt(await loadPackageConfig())) + (publint ? await packagePublint() : 0)\n if (result) {\n const input = await getInputs()\n console.log(`Inputs: ${JSON.stringify(input, null, 2)}`)\n console.error(chalk.red(`Compiling ${pkgName} Failed [${result}]`))\n } else if (verbose) {\n console.log(chalk.green(`Compiling ${pkgName} Done`))\n }\n return result\n}\n"],"mappings":"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","names":["typescript","chalk","commonjs","externalDeps","nodeExternals"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/package/compile.ts"],"sourcesContent":["import commonjs from '@rollup/plugin-commonjs'\nimport typescript from '@rollup/plugin-typescript'\nimport chalk from 'chalk'\nimport { cosmiconfig } from 'cosmiconfig'\nimport { copyFile, readdir } from 'fs/promises'\nimport { OutputOptions, rollup, RollupLog, RollupOptions, watch } from 'rollup'\nimport externalDeps from 'rollup-plugin-exclude-dependencies-from-bundle'\nimport nodeExternals from 'rollup-plugin-node-externals'\n\nimport { loadPackageConfig, PackageJsonEx } from '../../loadPackageConfig'\nimport { packagePublint } from './publint'\n\nexport interface CompilePackageParams {\n publint?: boolean\n verbose?: boolean\n}\n\nconst rollItUp = async (format: 'cjs' | 'esm', ext: string, subDir?: string) => {\n const dir = subDir === '.' ? undefined : subDir\n const input = await getInputs(dir)\n const tsPlugIn = typescript({\n baseUrl: 'src',\n declaration: !dir || !subDir,\n declarationMap: !dir || !subDir,\n emitDeclarationOnly: false,\n esModuleInterop: true,\n exclude: ['**/*.spec.*', 'dist', 'docs', 'node_modules', 'packages'],\n outDir: dir ? `dist/${dir}` : 'dist',\n rootDir: 'src',\n tsconfig: 'tsconfig.json',\n })\n\n const errors: RollupLog[] = []\n const warnings: RollupLog[] = []\n const infos: RollupLog[] = []\n const debugs: RollupLog[] = []\n\n const options: RollupOptions = {\n input: subDir ? input.map((file) => `./src/${file}`) : ['./src/index.ts'],\n logLevel: 'warn',\n onLog: (level, log, defaultHandler) => {\n if (log.code === 'EMPTY_BUNDLE') {\n return defaultHandler(level, log)\n }\n switch (level) {\n case 'warn': {\n warnings.push(log)\n console.warn(chalk.yellow(JSON.stringify(log, null, 2)))\n break\n }\n case 'info': {\n infos.push(log)\n console.info(chalk.white(JSON.stringify(log, null, 2)))\n break\n }\n case 'debug': {\n debugs.push(log)\n console.debug(chalk.gray(JSON.stringify(log, null, 2)))\n break\n }\n default: {\n errors.push(log)\n console.error(chalk.red(JSON.stringify(log, null, 2)))\n break\n }\n }\n console.log(`Log: ${level}: ${log.message}`)\n return defaultHandler(level, log)\n },\n plugins: [commonjs(), externalDeps(), nodeExternals(), tsPlugIn],\n }\n\n const outputOptions: OutputOptions = {\n dir: dir ? `dist/${dir}` : 'dist',\n dynamicImportInCjs: true,\n entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,\n format,\n sourcemap: true,\n }\n\n if (input.length) {\n await (await rollup(options)).write(outputOptions)\n }\n\n return errors.length + warnings.length\n}\n\nconst getInputs = async (subDir?: string) => {\n return (await readdir(subDir ? `src/${subDir}` : 'src', { recursive: false }))\n .filter((file) => (file.endsWith('.ts') || file.endsWith('.tsx')) && !file.endsWith('d.ts') && !file.endsWith('spec.ts'))\n .map((file) => (subDir ? `${subDir}/${file}` : file))\n}\n\nconst getInputDirs = async (depth: number) => {\n if (depth === 0) {\n return []\n }\n return [\n '.',\n ...(await readdir('src', { recursive: depth > 1, withFileTypes: true }))\n .filter((file) => file.isDirectory())\n .map((file) => {\n const pathParts = file.path.split('/')\n pathParts.shift()\n if (pathParts.length) {\n const root = pathParts.join('/')\n return `${root}/${file.name}`\n } else {\n return file.name\n }\n }),\n ]\n}\n\nconst getDistTypeFiles = async () => {\n return (await readdir('dist', { recursive: true })).filter((file) => file.endsWith('d.ts')).map((file) => `dist/${file}`)\n}\n\nconst getDistTypeMapFiles = async () => {\n return (await readdir('dist', { recursive: true })).filter((file) => file.endsWith('d.ts.map')).map((file) => `dist/${file}`)\n}\n\nconst buildIt = async (pkg: PackageJsonEx, compileDepth: number) => {\n const inputDirs = await getInputDirs(compileDepth)\n\n const pkgType = pkg.type ?? 'commonjs'\n\n const esmExt = pkgType === 'module' ? 'js' : 'mjs'\n const cjsExt = pkgType === 'commonjs' ? 'js' : 'cjs'\n\n const rollupResult = inputDirs.length\n ? await Promise.all(\n inputDirs.map(async (inputDir) => {\n return (await rollItUp('esm', esmExt, inputDir)) + (await rollItUp('cjs', cjsExt, inputDir))\n }),\n )\n : [(await rollItUp('esm', esmExt)) + (await rollItUp('cjs', cjsExt))]\n\n //hybrid packages want two copies of the types\n const distTypeFiles = await getDistTypeFiles()\n await Promise.all(\n distTypeFiles.map(async (file) => {\n await copyFile(file, file.replace('d.ts', 'd.mts'))\n }),\n )\n\n const distTypeMapFiles = await getDistTypeMapFiles()\n await Promise.all(\n distTypeMapFiles.map(async (file) => {\n await copyFile(file, file.replace('d.ts.map', 'd.mts.map'))\n }),\n )\n\n return rollupResult.reduce((prev, item) => prev + item, 0)\n}\n\nexport const packageCompile = async ({ publint = true, verbose }: CompilePackageParams = { verbose: false }) => {\n const xyConfig = await cosmiconfig('xy').search()\n const compileDepth: number = xyConfig?.config.compile?.depth ?? 0\n const pkgName = process.env.npm_package_name\n if (verbose) {\n console.log(chalk.green(`Compiling ${pkgName} Start`))\n }\n const result = (await buildIt(await loadPackageConfig(), compileDepth)) + (publint ? await packagePublint() : 0)\n if (result) {\n const input = await getInputs()\n console.log(`Inputs: ${JSON.stringify(input, null, 2)}`)\n console.error(chalk.red(`Compiling ${pkgName} Failed [${result}]`))\n } else if (verbose) {\n console.log(chalk.green(`Compiling ${pkgName} Done`))\n }\n return result\n}\n"],"mappings":"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","names":["typescript","chalk","commonjs","externalDeps","nodeExternals"]}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import commonjs from "@rollup/plugin-commonjs";
|
|
2
2
|
import typescript from "@rollup/plugin-typescript";
|
|
3
3
|
import chalk from "chalk";
|
|
4
|
+
import { cosmiconfig } from "cosmiconfig";
|
|
4
5
|
import { copyFile, readdir } from "fs/promises";
|
|
5
6
|
import { rollup } from "rollup";
|
|
6
7
|
import externalDeps from "rollup-plugin-exclude-dependencies-from-bundle";
|
|
@@ -8,15 +9,16 @@ import nodeExternals from "rollup-plugin-node-externals";
|
|
|
8
9
|
import { loadPackageConfig } from "../../loadPackageConfig";
|
|
9
10
|
import { packagePublint } from "./publint";
|
|
10
11
|
const rollItUp = async (format, ext, subDir) => {
|
|
11
|
-
const
|
|
12
|
+
const dir = subDir === "." ? void 0 : subDir;
|
|
13
|
+
const input = await getInputs(dir);
|
|
12
14
|
const tsPlugIn = typescript({
|
|
13
15
|
baseUrl: "src",
|
|
14
|
-
declaration: !subDir,
|
|
15
|
-
declarationMap: !subDir,
|
|
16
|
+
declaration: !dir || !subDir,
|
|
17
|
+
declarationMap: !dir || !subDir,
|
|
16
18
|
emitDeclarationOnly: false,
|
|
17
19
|
esModuleInterop: true,
|
|
18
20
|
exclude: ["**/*.spec.*", "dist", "docs", "node_modules", "packages"],
|
|
19
|
-
outDir:
|
|
21
|
+
outDir: dir ? `dist/${dir}` : "dist",
|
|
20
22
|
rootDir: "src",
|
|
21
23
|
tsconfig: "tsconfig.json"
|
|
22
24
|
});
|
|
@@ -25,9 +27,12 @@ const rollItUp = async (format, ext, subDir) => {
|
|
|
25
27
|
const infos = [];
|
|
26
28
|
const debugs = [];
|
|
27
29
|
const options = {
|
|
28
|
-
input: input.map((file) => `./src/${file}`),
|
|
30
|
+
input: subDir ? input.map((file) => `./src/${file}`) : ["./src/index.ts"],
|
|
29
31
|
logLevel: "warn",
|
|
30
32
|
onLog: (level, log, defaultHandler) => {
|
|
33
|
+
if (log.code === "EMPTY_BUNDLE") {
|
|
34
|
+
return defaultHandler(level, log);
|
|
35
|
+
}
|
|
31
36
|
switch (level) {
|
|
32
37
|
case "warn": {
|
|
33
38
|
warnings.push(log);
|
|
@@ -50,13 +55,13 @@ const rollItUp = async (format, ext, subDir) => {
|
|
|
50
55
|
break;
|
|
51
56
|
}
|
|
52
57
|
}
|
|
53
|
-
console.log(`Log: ${level}: ${log.
|
|
58
|
+
console.log(`Log: ${level}: ${log.message}`);
|
|
54
59
|
return defaultHandler(level, log);
|
|
55
60
|
},
|
|
56
61
|
plugins: [commonjs(), externalDeps(), nodeExternals(), tsPlugIn]
|
|
57
62
|
};
|
|
58
63
|
const outputOptions = {
|
|
59
|
-
dir:
|
|
64
|
+
dir: dir ? `dist/${dir}` : "dist",
|
|
60
65
|
dynamicImportInCjs: true,
|
|
61
66
|
entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,
|
|
62
67
|
format,
|
|
@@ -70,10 +75,13 @@ const rollItUp = async (format, ext, subDir) => {
|
|
|
70
75
|
const getInputs = async (subDir) => {
|
|
71
76
|
return (await readdir(subDir ? `src/${subDir}` : "src", { recursive: false })).filter((file) => (file.endsWith(".ts") || file.endsWith(".tsx")) && !file.endsWith("d.ts") && !file.endsWith("spec.ts")).map((file) => subDir ? `${subDir}/${file}` : file);
|
|
72
77
|
};
|
|
73
|
-
const getInputDirs = async () => {
|
|
78
|
+
const getInputDirs = async (depth) => {
|
|
79
|
+
if (depth === 0) {
|
|
80
|
+
return [];
|
|
81
|
+
}
|
|
74
82
|
return [
|
|
75
|
-
|
|
76
|
-
...(await readdir("src", { recursive:
|
|
83
|
+
".",
|
|
84
|
+
...(await readdir("src", { recursive: depth > 1, withFileTypes: true })).filter((file) => file.isDirectory()).map((file) => {
|
|
77
85
|
const pathParts = file.path.split("/");
|
|
78
86
|
pathParts.shift();
|
|
79
87
|
if (pathParts.length) {
|
|
@@ -91,16 +99,16 @@ const getDistTypeFiles = async () => {
|
|
|
91
99
|
const getDistTypeMapFiles = async () => {
|
|
92
100
|
return (await readdir("dist", { recursive: true })).filter((file) => file.endsWith("d.ts.map")).map((file) => `dist/${file}`);
|
|
93
101
|
};
|
|
94
|
-
const buildIt = async (pkg) => {
|
|
95
|
-
const inputDirs = await getInputDirs();
|
|
102
|
+
const buildIt = async (pkg, compileDepth) => {
|
|
103
|
+
const inputDirs = await getInputDirs(compileDepth);
|
|
96
104
|
const pkgType = pkg.type ?? "commonjs";
|
|
97
105
|
const esmExt = pkgType === "module" ? "js" : "mjs";
|
|
98
106
|
const cjsExt = pkgType === "commonjs" ? "js" : "cjs";
|
|
99
|
-
const rollupResult = await Promise.all(
|
|
107
|
+
const rollupResult = inputDirs.length ? await Promise.all(
|
|
100
108
|
inputDirs.map(async (inputDir) => {
|
|
101
109
|
return await rollItUp("esm", esmExt, inputDir) + await rollItUp("cjs", cjsExt, inputDir);
|
|
102
110
|
})
|
|
103
|
-
);
|
|
111
|
+
) : [await rollItUp("esm", esmExt) + await rollItUp("cjs", cjsExt)];
|
|
104
112
|
const distTypeFiles = await getDistTypeFiles();
|
|
105
113
|
await Promise.all(
|
|
106
114
|
distTypeFiles.map(async (file) => {
|
|
@@ -116,11 +124,13 @@ const buildIt = async (pkg) => {
|
|
|
116
124
|
return rollupResult.reduce((prev, item) => prev + item, 0);
|
|
117
125
|
};
|
|
118
126
|
const packageCompile = async ({ publint = true, verbose } = { verbose: false }) => {
|
|
127
|
+
const xyConfig = await cosmiconfig("xy").search();
|
|
128
|
+
const compileDepth = xyConfig?.config.compile?.depth ?? 0;
|
|
119
129
|
const pkgName = process.env.npm_package_name;
|
|
120
130
|
if (verbose) {
|
|
121
131
|
console.log(chalk.green(`Compiling ${pkgName} Start`));
|
|
122
132
|
}
|
|
123
|
-
const result = await buildIt(await loadPackageConfig()) + (publint ? await packagePublint() : 0);
|
|
133
|
+
const result = await buildIt(await loadPackageConfig(), compileDepth) + (publint ? await packagePublint() : 0);
|
|
124
134
|
if (result) {
|
|
125
135
|
const input = await getInputs();
|
|
126
136
|
console.log(`Inputs: ${JSON.stringify(input, null, 2)}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/package/compile.ts"],"sourcesContent":["import commonjs from '@rollup/plugin-commonjs'\nimport typescript from '@rollup/plugin-typescript'\nimport chalk from 'chalk'\nimport { copyFile, readdir } from 'fs/promises'\nimport { OutputOptions, rollup, RollupLog, RollupOptions, watch } from 'rollup'\nimport externalDeps from 'rollup-plugin-exclude-dependencies-from-bundle'\nimport nodeExternals from 'rollup-plugin-node-externals'\n\nimport { loadPackageConfig, PackageJsonEx } from '../../loadPackageConfig'\nimport { packagePublint } from './publint'\n\nexport interface CompilePackageParams {\n publint?: boolean\n verbose?: boolean\n}\n\nconst rollItUp = async (format: 'cjs' | 'esm', ext: string, subDir?: string) => {\n const input = await getInputs(
|
|
1
|
+
{"version":3,"sources":["../../../src/actions/package/compile.ts"],"sourcesContent":["import commonjs from '@rollup/plugin-commonjs'\nimport typescript from '@rollup/plugin-typescript'\nimport chalk from 'chalk'\nimport { cosmiconfig } from 'cosmiconfig'\nimport { copyFile, readdir } from 'fs/promises'\nimport { OutputOptions, rollup, RollupLog, RollupOptions, watch } from 'rollup'\nimport externalDeps from 'rollup-plugin-exclude-dependencies-from-bundle'\nimport nodeExternals from 'rollup-plugin-node-externals'\n\nimport { loadPackageConfig, PackageJsonEx } from '../../loadPackageConfig'\nimport { packagePublint } from './publint'\n\nexport interface CompilePackageParams {\n publint?: boolean\n verbose?: boolean\n}\n\nconst rollItUp = async (format: 'cjs' | 'esm', ext: string, subDir?: string) => {\n const dir = subDir === '.' ? undefined : subDir\n const input = await getInputs(dir)\n const tsPlugIn = typescript({\n baseUrl: 'src',\n declaration: !dir || !subDir,\n declarationMap: !dir || !subDir,\n emitDeclarationOnly: false,\n esModuleInterop: true,\n exclude: ['**/*.spec.*', 'dist', 'docs', 'node_modules', 'packages'],\n outDir: dir ? `dist/${dir}` : 'dist',\n rootDir: 'src',\n tsconfig: 'tsconfig.json',\n })\n\n const errors: RollupLog[] = []\n const warnings: RollupLog[] = []\n const infos: RollupLog[] = []\n const debugs: RollupLog[] = []\n\n const options: RollupOptions = {\n input: subDir ? input.map((file) => `./src/${file}`) : ['./src/index.ts'],\n logLevel: 'warn',\n onLog: (level, log, defaultHandler) => {\n if (log.code === 'EMPTY_BUNDLE') {\n return defaultHandler(level, log)\n }\n switch (level) {\n case 'warn': {\n warnings.push(log)\n console.warn(chalk.yellow(JSON.stringify(log, null, 2)))\n break\n }\n case 'info': {\n infos.push(log)\n console.info(chalk.white(JSON.stringify(log, null, 2)))\n break\n }\n case 'debug': {\n debugs.push(log)\n console.debug(chalk.gray(JSON.stringify(log, null, 2)))\n break\n }\n default: {\n errors.push(log)\n console.error(chalk.red(JSON.stringify(log, null, 2)))\n break\n }\n }\n console.log(`Log: ${level}: ${log.message}`)\n return defaultHandler(level, log)\n },\n plugins: [commonjs(), externalDeps(), nodeExternals(), tsPlugIn],\n }\n\n const outputOptions: OutputOptions = {\n dir: dir ? `dist/${dir}` : 'dist',\n dynamicImportInCjs: true,\n entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,\n format,\n sourcemap: true,\n }\n\n if (input.length) {\n await (await rollup(options)).write(outputOptions)\n }\n\n return errors.length + warnings.length\n}\n\nconst getInputs = async (subDir?: string) => {\n return (await readdir(subDir ? `src/${subDir}` : 'src', { recursive: false }))\n .filter((file) => (file.endsWith('.ts') || file.endsWith('.tsx')) && !file.endsWith('d.ts') && !file.endsWith('spec.ts'))\n .map((file) => (subDir ? `${subDir}/${file}` : file))\n}\n\nconst getInputDirs = async (depth: number) => {\n if (depth === 0) {\n return []\n }\n return [\n '.',\n ...(await readdir('src', { recursive: depth > 1, withFileTypes: true }))\n .filter((file) => file.isDirectory())\n .map((file) => {\n const pathParts = file.path.split('/')\n pathParts.shift()\n if (pathParts.length) {\n const root = pathParts.join('/')\n return `${root}/${file.name}`\n } else {\n return file.name\n }\n }),\n ]\n}\n\nconst getDistTypeFiles = async () => {\n return (await readdir('dist', { recursive: true })).filter((file) => file.endsWith('d.ts')).map((file) => `dist/${file}`)\n}\n\nconst getDistTypeMapFiles = async () => {\n return (await readdir('dist', { recursive: true })).filter((file) => file.endsWith('d.ts.map')).map((file) => `dist/${file}`)\n}\n\nconst buildIt = async (pkg: PackageJsonEx, compileDepth: number) => {\n const inputDirs = await getInputDirs(compileDepth)\n\n const pkgType = pkg.type ?? 'commonjs'\n\n const esmExt = pkgType === 'module' ? 'js' : 'mjs'\n const cjsExt = pkgType === 'commonjs' ? 'js' : 'cjs'\n\n const rollupResult = inputDirs.length\n ? await Promise.all(\n inputDirs.map(async (inputDir) => {\n return (await rollItUp('esm', esmExt, inputDir)) + (await rollItUp('cjs', cjsExt, inputDir))\n }),\n )\n : [(await rollItUp('esm', esmExt)) + (await rollItUp('cjs', cjsExt))]\n\n //hybrid packages want two copies of the types\n const distTypeFiles = await getDistTypeFiles()\n await Promise.all(\n distTypeFiles.map(async (file) => {\n await copyFile(file, file.replace('d.ts', 'd.mts'))\n }),\n )\n\n const distTypeMapFiles = await getDistTypeMapFiles()\n await Promise.all(\n distTypeMapFiles.map(async (file) => {\n await copyFile(file, file.replace('d.ts.map', 'd.mts.map'))\n }),\n )\n\n return rollupResult.reduce((prev, item) => prev + item, 0)\n}\n\nexport const packageCompile = async ({ publint = true, verbose }: CompilePackageParams = { verbose: false }) => {\n const xyConfig = await cosmiconfig('xy').search()\n const compileDepth: number = xyConfig?.config.compile?.depth ?? 0\n const pkgName = process.env.npm_package_name\n if (verbose) {\n console.log(chalk.green(`Compiling ${pkgName} Start`))\n }\n const result = (await buildIt(await loadPackageConfig(), compileDepth)) + (publint ? await packagePublint() : 0)\n if (result) {\n const input = await getInputs()\n console.log(`Inputs: ${JSON.stringify(input, null, 2)}`)\n console.error(chalk.red(`Compiling ${pkgName} Failed [${result}]`))\n } else if (verbose) {\n console.log(chalk.green(`Compiling ${pkgName} Done`))\n }\n return result\n}\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -65,8 +65,9 @@
|
|
|
65
65
|
"@types/yargs": "^17.0.24",
|
|
66
66
|
"@typescript-eslint/eslint-plugin": "^6.7.0",
|
|
67
67
|
"@typescript-eslint/parser": "^6.7.0",
|
|
68
|
-
"@xylabs/tsconfig": "~3.0.
|
|
68
|
+
"@xylabs/tsconfig": "~3.0.6",
|
|
69
69
|
"chalk": "^4.1.2",
|
|
70
|
+
"cosmiconfig": "^8.3.6",
|
|
70
71
|
"cpy": "^8.1.2",
|
|
71
72
|
"depcheck": "^1.4.6",
|
|
72
73
|
"eslint": "^8.49.0",
|
|
@@ -108,8 +109,8 @@
|
|
|
108
109
|
"@types/license-checker": "^25.0.4",
|
|
109
110
|
"@types/lodash": "^4.14.198",
|
|
110
111
|
"@types/parse-git-config": "^3.0.1",
|
|
111
|
-
"@xylabs/eslint-config": "^3.0.
|
|
112
|
-
"@xylabs/tsconfig": "^3.0.
|
|
112
|
+
"@xylabs/eslint-config": "^3.0.6",
|
|
113
|
+
"@xylabs/tsconfig": "^3.0.6",
|
|
113
114
|
"publint": "^0.2.2",
|
|
114
115
|
"tsup": "^7.2.0",
|
|
115
116
|
"typescript": "^5.2.2"
|
|
@@ -167,5 +168,5 @@
|
|
|
167
168
|
"package-clean": "echo Not cleaning..."
|
|
168
169
|
},
|
|
169
170
|
"sideEffects": false,
|
|
170
|
-
"version": "3.0.
|
|
171
|
+
"version": "3.0.6"
|
|
171
172
|
}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import commonjs from '@rollup/plugin-commonjs'
|
|
2
2
|
import typescript from '@rollup/plugin-typescript'
|
|
3
3
|
import chalk from 'chalk'
|
|
4
|
+
import { cosmiconfig } from 'cosmiconfig'
|
|
4
5
|
import { copyFile, readdir } from 'fs/promises'
|
|
5
6
|
import { OutputOptions, rollup, RollupLog, RollupOptions, watch } from 'rollup'
|
|
6
7
|
import externalDeps from 'rollup-plugin-exclude-dependencies-from-bundle'
|
|
@@ -15,15 +16,16 @@ export interface CompilePackageParams {
|
|
|
15
16
|
}
|
|
16
17
|
|
|
17
18
|
const rollItUp = async (format: 'cjs' | 'esm', ext: string, subDir?: string) => {
|
|
18
|
-
const
|
|
19
|
+
const dir = subDir === '.' ? undefined : subDir
|
|
20
|
+
const input = await getInputs(dir)
|
|
19
21
|
const tsPlugIn = typescript({
|
|
20
22
|
baseUrl: 'src',
|
|
21
|
-
declaration: !subDir,
|
|
22
|
-
declarationMap: !subDir,
|
|
23
|
+
declaration: !dir || !subDir,
|
|
24
|
+
declarationMap: !dir || !subDir,
|
|
23
25
|
emitDeclarationOnly: false,
|
|
24
26
|
esModuleInterop: true,
|
|
25
27
|
exclude: ['**/*.spec.*', 'dist', 'docs', 'node_modules', 'packages'],
|
|
26
|
-
outDir:
|
|
28
|
+
outDir: dir ? `dist/${dir}` : 'dist',
|
|
27
29
|
rootDir: 'src',
|
|
28
30
|
tsconfig: 'tsconfig.json',
|
|
29
31
|
})
|
|
@@ -34,9 +36,12 @@ const rollItUp = async (format: 'cjs' | 'esm', ext: string, subDir?: string) =>
|
|
|
34
36
|
const debugs: RollupLog[] = []
|
|
35
37
|
|
|
36
38
|
const options: RollupOptions = {
|
|
37
|
-
input: input.map((file) => `./src/${file}`),
|
|
39
|
+
input: subDir ? input.map((file) => `./src/${file}`) : ['./src/index.ts'],
|
|
38
40
|
logLevel: 'warn',
|
|
39
41
|
onLog: (level, log, defaultHandler) => {
|
|
42
|
+
if (log.code === 'EMPTY_BUNDLE') {
|
|
43
|
+
return defaultHandler(level, log)
|
|
44
|
+
}
|
|
40
45
|
switch (level) {
|
|
41
46
|
case 'warn': {
|
|
42
47
|
warnings.push(log)
|
|
@@ -59,14 +64,14 @@ const rollItUp = async (format: 'cjs' | 'esm', ext: string, subDir?: string) =>
|
|
|
59
64
|
break
|
|
60
65
|
}
|
|
61
66
|
}
|
|
62
|
-
console.log(`Log: ${level}: ${log.
|
|
67
|
+
console.log(`Log: ${level}: ${log.message}`)
|
|
63
68
|
return defaultHandler(level, log)
|
|
64
69
|
},
|
|
65
70
|
plugins: [commonjs(), externalDeps(), nodeExternals(), tsPlugIn],
|
|
66
71
|
}
|
|
67
72
|
|
|
68
73
|
const outputOptions: OutputOptions = {
|
|
69
|
-
dir:
|
|
74
|
+
dir: dir ? `dist/${dir}` : 'dist',
|
|
70
75
|
dynamicImportInCjs: true,
|
|
71
76
|
entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,
|
|
72
77
|
format,
|
|
@@ -86,10 +91,13 @@ const getInputs = async (subDir?: string) => {
|
|
|
86
91
|
.map((file) => (subDir ? `${subDir}/${file}` : file))
|
|
87
92
|
}
|
|
88
93
|
|
|
89
|
-
const getInputDirs = async () => {
|
|
94
|
+
const getInputDirs = async (depth: number) => {
|
|
95
|
+
if (depth === 0) {
|
|
96
|
+
return []
|
|
97
|
+
}
|
|
90
98
|
return [
|
|
91
|
-
|
|
92
|
-
...(await readdir('src', { recursive:
|
|
99
|
+
'.',
|
|
100
|
+
...(await readdir('src', { recursive: depth > 1, withFileTypes: true }))
|
|
93
101
|
.filter((file) => file.isDirectory())
|
|
94
102
|
.map((file) => {
|
|
95
103
|
const pathParts = file.path.split('/')
|
|
@@ -112,19 +120,21 @@ const getDistTypeMapFiles = async () => {
|
|
|
112
120
|
return (await readdir('dist', { recursive: true })).filter((file) => file.endsWith('d.ts.map')).map((file) => `dist/${file}`)
|
|
113
121
|
}
|
|
114
122
|
|
|
115
|
-
const buildIt = async (pkg: PackageJsonEx) => {
|
|
116
|
-
const inputDirs = await getInputDirs()
|
|
123
|
+
const buildIt = async (pkg: PackageJsonEx, compileDepth: number) => {
|
|
124
|
+
const inputDirs = await getInputDirs(compileDepth)
|
|
117
125
|
|
|
118
126
|
const pkgType = pkg.type ?? 'commonjs'
|
|
119
127
|
|
|
120
128
|
const esmExt = pkgType === 'module' ? 'js' : 'mjs'
|
|
121
129
|
const cjsExt = pkgType === 'commonjs' ? 'js' : 'cjs'
|
|
122
130
|
|
|
123
|
-
const rollupResult =
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
131
|
+
const rollupResult = inputDirs.length
|
|
132
|
+
? await Promise.all(
|
|
133
|
+
inputDirs.map(async (inputDir) => {
|
|
134
|
+
return (await rollItUp('esm', esmExt, inputDir)) + (await rollItUp('cjs', cjsExt, inputDir))
|
|
135
|
+
}),
|
|
136
|
+
)
|
|
137
|
+
: [(await rollItUp('esm', esmExt)) + (await rollItUp('cjs', cjsExt))]
|
|
128
138
|
|
|
129
139
|
//hybrid packages want two copies of the types
|
|
130
140
|
const distTypeFiles = await getDistTypeFiles()
|
|
@@ -145,11 +155,13 @@ const buildIt = async (pkg: PackageJsonEx) => {
|
|
|
145
155
|
}
|
|
146
156
|
|
|
147
157
|
export const packageCompile = async ({ publint = true, verbose }: CompilePackageParams = { verbose: false }) => {
|
|
158
|
+
const xyConfig = await cosmiconfig('xy').search()
|
|
159
|
+
const compileDepth: number = xyConfig?.config.compile?.depth ?? 0
|
|
148
160
|
const pkgName = process.env.npm_package_name
|
|
149
161
|
if (verbose) {
|
|
150
162
|
console.log(chalk.green(`Compiling ${pkgName} Start`))
|
|
151
163
|
}
|
|
152
|
-
const result = (await buildIt(await loadPackageConfig())) + (publint ? await packagePublint() : 0)
|
|
164
|
+
const result = (await buildIt(await loadPackageConfig(), compileDepth)) + (publint ? await packagePublint() : 0)
|
|
153
165
|
if (result) {
|
|
154
166
|
const input = await getInputs()
|
|
155
167
|
console.log(`Inputs: ${JSON.stringify(input, null, 2)}`)
|