@xylabs/ts-scripts-yarn3 3.0.3 → 3.0.5

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