@xylabs/ts-scripts-yarn3 3.0.11 → 3.0.12
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/dist/actions/package/compile/CompileParams.js +17 -0
- package/dist/actions/package/compile/CompileParams.js.map +1 -0
- package/dist/actions/package/compile/CompileParams.mjs +1 -0
- package/dist/actions/package/compile/CompileParams.mjs.map +1 -0
- package/dist/actions/package/compile/compile.js +86 -0
- package/dist/actions/package/compile/compile.js.map +1 -0
- package/dist/actions/package/compile/compile.mjs +52 -0
- package/dist/actions/package/compile/compile.mjs.map +1 -0
- package/dist/actions/package/compile/copyTypeFiles.js +49 -0
- package/dist/actions/package/compile/copyTypeFiles.js.map +1 -0
- package/dist/actions/package/compile/copyTypeFiles.mjs +25 -0
- package/dist/actions/package/compile/copyTypeFiles.mjs.map +1 -0
- package/dist/actions/package/compile/index.js +29 -0
- package/dist/actions/package/compile/index.js.map +1 -0
- package/dist/actions/package/compile/index.mjs +5 -0
- package/dist/actions/package/compile/index.mjs.map +1 -0
- package/dist/actions/package/compile/inputs.js +58 -0
- package/dist/actions/package/compile/inputs.js.map +1 -0
- package/dist/actions/package/compile/inputs.mjs +32 -0
- package/dist/actions/package/compile/inputs.mjs.map +1 -0
- package/dist/actions/package/{compile.js → compile/rollup.js} +24 -75
- package/dist/actions/package/compile/rollup.js.map +1 -0
- package/dist/actions/package/compile/rollup.mjs +98 -0
- package/dist/actions/package/compile/rollup.mjs.map +1 -0
- package/dist/actions/package/compile/tsc.js +114 -0
- package/dist/actions/package/compile/tsc.js.map +1 -0
- package/dist/actions/package/compile/tsc.mjs +80 -0
- package/dist/actions/package/compile/tsc.mjs.map +1 -0
- package/dist/actions/package/compile/tscTypes.js +55 -0
- package/dist/actions/package/compile/tscTypes.js.map +1 -0
- package/dist/actions/package/compile/tscTypes.mjs +31 -0
- package/dist/actions/package/compile/tscTypes.mjs.map +1 -0
- package/dist/actions/package/compile/tsup.js +75 -0
- package/dist/actions/package/compile/tsup.js.map +1 -0
- package/dist/actions/package/compile/tsup.mjs +51 -0
- package/dist/actions/package/compile/tsup.mjs.map +1 -0
- package/dist/actions/package/publint.js +1 -1
- package/dist/actions/package/publint.js.map +1 -1
- package/dist/actions/package/publint.mjs +1 -1
- package/dist/actions/package/publint.mjs.map +1 -1
- package/dist/bin/package/compile-tsup.js +31 -0
- package/dist/bin/package/compile-tsup.js.map +1 -0
- package/dist/bin/package/compile-tsup.mjs +8 -0
- package/dist/bin/package/compile-tsup.mjs.map +1 -0
- package/dist/index.d.mts +53 -10
- package/dist/index.d.ts +53 -10
- package/dist/lib/index.js +3 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +1 -0
- package/dist/lib/index.mjs.map +1 -1
- package/dist/lib/loadConfig.js +54 -0
- package/dist/lib/loadConfig.js.map +1 -0
- package/dist/lib/loadConfig.mjs +20 -0
- package/dist/lib/loadConfig.mjs.map +1 -0
- package/package.json +5 -6
- package/src/actions/package/compile/CompileParams.ts +10 -0
- package/src/actions/package/compile/compile.ts +59 -0
- package/src/actions/package/compile/copyTypeFiles.ts +27 -0
- package/src/actions/package/compile/index.ts +4 -0
- package/src/actions/package/compile/inputs.ts +33 -0
- package/src/actions/package/compile/rollup.ts +108 -0
- package/src/actions/package/compile/tsc.ts +100 -0
- package/src/actions/package/compile/tscTypes.ts +32 -0
- package/src/actions/package/compile/tsup.ts +64 -0
- package/src/actions/package/publint.ts +5 -1
- package/src/bin/package/compile-tsup.ts +9 -0
- package/src/lib/index.ts +1 -0
- package/src/lib/loadConfig.ts +19 -0
- package/tsconfig.json +1 -7
- package/dist/actions/package/compile.js.map +0 -1
- package/dist/actions/package/compile.mjs +0 -150
- package/dist/actions/package/compile.mjs.map +0 -1
- package/src/actions/package/compile.ts +0 -177
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import commonjs from '@rollup/plugin-commonjs'
|
|
2
|
+
import json from '@rollup/plugin-json'
|
|
3
|
+
import typescript from '@rollup/plugin-typescript'
|
|
4
|
+
import chalk from 'chalk'
|
|
5
|
+
import { OutputOptions, rollup, RollupLog, RollupOptions } from 'rollup'
|
|
6
|
+
import externalDeps from 'rollup-plugin-exclude-dependencies-from-bundle'
|
|
7
|
+
import nodeExternals from 'rollup-plugin-node-externals'
|
|
8
|
+
import { getInputDirs, getInputs } from './inputs'
|
|
9
|
+
import { packagePublint } from '../publint'
|
|
10
|
+
import { loadPackageConfig } from '../../../loadPackageConfig'
|
|
11
|
+
import { CompileParams } from './CompileParams'
|
|
12
|
+
import { loadConfig } from '../../../lib'
|
|
13
|
+
|
|
14
|
+
export interface PackageCompileRollupParams extends CompileParams {
|
|
15
|
+
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export const compileSubDir = async (format: 'cjs' | 'esm', ext: string, subDir?: string, verbose = false) => {
|
|
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
|
+
const pushLog = !(log.code === 'EMPTY_BUNDLE' || log.code === 'MIXED_EXPORTS' || log.code === 'UNUSED_EXTERNAL_IMPORT')
|
|
43
|
+
if (pushLog) {
|
|
44
|
+
switch (level) {
|
|
45
|
+
case 'warn': {
|
|
46
|
+
warnings.push(log)
|
|
47
|
+
break
|
|
48
|
+
}
|
|
49
|
+
case 'info': {
|
|
50
|
+
infos.push(log)
|
|
51
|
+
break
|
|
52
|
+
}
|
|
53
|
+
case 'debug': {
|
|
54
|
+
debugs.push(log)
|
|
55
|
+
break
|
|
56
|
+
}
|
|
57
|
+
default: {
|
|
58
|
+
errors.push(log)
|
|
59
|
+
break
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
console.log(chalk.yellow(`${level}: ${log.message} [${log.code}]`))
|
|
64
|
+
if (log.id) {
|
|
65
|
+
console.log(chalk.gray(log.id))
|
|
66
|
+
}
|
|
67
|
+
log.ids?.map((id) => {
|
|
68
|
+
console.log(chalk.gray(id))
|
|
69
|
+
})
|
|
70
|
+
return defaultHandler(level, log)
|
|
71
|
+
},
|
|
72
|
+
plugins: [commonjs(), externalDeps(), nodeExternals(), json(), tsPlugIn],
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
const outputOptions: OutputOptions = {
|
|
76
|
+
dir: subDir ? `dist/${subDir}` : 'dist',
|
|
77
|
+
dynamicImportInCjs: true,
|
|
78
|
+
entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,
|
|
79
|
+
format,
|
|
80
|
+
sourcemap: true,
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (input.length) {
|
|
84
|
+
await (await rollup(options)).write(outputOptions)
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
return errors.length + warnings.length
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
export const packageCompileRollup = async (params?: PackageCompileRollupParams) => {
|
|
91
|
+
const config = await loadConfig(params)
|
|
92
|
+
const pkg = await loadPackageConfig()
|
|
93
|
+
const inputDirs = await getInputDirs(config.compile?.depth)
|
|
94
|
+
const verbose = config.verbose
|
|
95
|
+
const publint = config.compile?.publint
|
|
96
|
+
|
|
97
|
+
const pkgType = pkg.type ?? 'commonjs'
|
|
98
|
+
|
|
99
|
+
const esmExt = pkgType === 'module' ? 'js' : 'mjs'
|
|
100
|
+
const cjsExt = pkgType === 'commonjs' ? 'js' : 'cjs'
|
|
101
|
+
|
|
102
|
+
const result = (await Promise.all(
|
|
103
|
+
inputDirs.map(async (inputDir) => {
|
|
104
|
+
return await compileSubDir('cjs', cjsExt, inputDir, verbose) + await compileSubDir('esm', esmExt, inputDir, verbose)
|
|
105
|
+
}),
|
|
106
|
+
)).reduce(((prev, result) => prev + result), 0)
|
|
107
|
+
return result + (publint ? await packagePublint() : 0)
|
|
108
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import ts, { CompilerOptions, readConfigFile, sys, getPreEmitDiagnostics, parseJsonConfigFileContent, getLineAndCharacterOfPosition, flattenDiagnosticMessageText, createProgram, convertCompilerOptionsFromJson, Diagnostic, findConfigFile } from "typescript"
|
|
2
|
+
import { CompileParams } from "./CompileParams"
|
|
3
|
+
import { loadConfig } from "../../../lib"
|
|
4
|
+
import { getAllInputs } from "./inputs"
|
|
5
|
+
import merge from 'lodash/merge'
|
|
6
|
+
import chalk from "chalk"
|
|
7
|
+
|
|
8
|
+
export type PackageCompileTscParams = Partial<CompileParams & {
|
|
9
|
+
compile?: {
|
|
10
|
+
tsc?: {
|
|
11
|
+
tsconfig?: string
|
|
12
|
+
compilerOptions?: CompilerOptions
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}>
|
|
16
|
+
|
|
17
|
+
const getCompilerOptionsJSONFollowExtends = (filename: string): Record<string, any> => {
|
|
18
|
+
let opts = {};
|
|
19
|
+
const config = readConfigFile(filename, ts.sys.readFile).config;
|
|
20
|
+
if (config.extends) {
|
|
21
|
+
const requirePath = require.resolve(config.extends);
|
|
22
|
+
opts = getCompilerOptionsJSONFollowExtends(requirePath);
|
|
23
|
+
}
|
|
24
|
+
if (config?.error) {
|
|
25
|
+
throw Error(`getCompilerOptionsJSONFollowExtends failed ${JSON.stringify(config?.error?.messageText, null, 2)}`)
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return config.compilerOptions
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const getCompilerOptions = (options?: CompilerOptions, tsconfig: string = "tsconfig.json"): CompilerOptions => {
|
|
32
|
+
const configFileName = findConfigFile(
|
|
33
|
+
"./",
|
|
34
|
+
ts.sys.fileExists,
|
|
35
|
+
tsconfig
|
|
36
|
+
)
|
|
37
|
+
const configFileCompilerOptions = configFileName ? getCompilerOptionsJSONFollowExtends(configFileName) : undefined
|
|
38
|
+
|
|
39
|
+
return merge({}, configFileCompilerOptions, options)
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
const getConfigFile = (options?: CompilerOptions, tsconfig: string = "tsconfig.json") => {
|
|
43
|
+
const configFileName = findConfigFile(
|
|
44
|
+
"./",
|
|
45
|
+
ts.sys.fileExists,
|
|
46
|
+
tsconfig
|
|
47
|
+
)
|
|
48
|
+
return {...(configFileName ? readConfigFile(configFileName, sys.readFile).config : {}), compilerOptions: getCompilerOptions(options)}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
const compile = (fileNames: string[], optionsParam: CompilerOptions) => {
|
|
52
|
+
console.log(chalk.blue(`compile`))
|
|
53
|
+
const {moduleResolution, ...options} = optionsParam
|
|
54
|
+
console.log(chalk.magenta(`options: ${JSON.stringify(options, null, 2)}`))
|
|
55
|
+
const program = createProgram(fileNames, options)
|
|
56
|
+
console.log(chalk.blue(`createProgram`))
|
|
57
|
+
const emitResult = program.emit()
|
|
58
|
+
console.log(chalk.blue(`emit`))
|
|
59
|
+
|
|
60
|
+
const allDiagnostics: Diagnostic[] = getPreEmitDiagnostics(program)
|
|
61
|
+
.concat(emitResult.diagnostics)
|
|
62
|
+
|
|
63
|
+
const errorDiagnostics = allDiagnostics.filter((diagnostic) => diagnostic.category === 1)
|
|
64
|
+
|
|
65
|
+
allDiagnostics.forEach(diagnostic => {
|
|
66
|
+
if (diagnostic.file) {
|
|
67
|
+
let { line, character } = getLineAndCharacterOfPosition(diagnostic.file, diagnostic.start!)
|
|
68
|
+
let message = flattenDiagnosticMessageText(diagnostic.messageText, "\n")
|
|
69
|
+
console.log(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`)
|
|
70
|
+
} else {
|
|
71
|
+
console.log(flattenDiagnosticMessageText(diagnostic.messageText, "\n"))
|
|
72
|
+
}
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
if (errorDiagnostics.length) {
|
|
76
|
+
console.log(chalk.red(`Errors: ${errorDiagnostics.length}`))
|
|
77
|
+
process.exit(errorDiagnostics.length)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
return errorDiagnostics.length
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
export const packageCompileTsc = async (params?: PackageCompileTscParams): Promise<number> => {
|
|
84
|
+
const defaultCompilerOptions: CompilerOptions = {
|
|
85
|
+
sourceMap: true,
|
|
86
|
+
declaration: true,
|
|
87
|
+
declarationMap: true,
|
|
88
|
+
rootDir: 'src',
|
|
89
|
+
outDir: 'dist',
|
|
90
|
+
}
|
|
91
|
+
const compilerOptions = merge({}, defaultCompilerOptions, params?.compile?.tsc?.compilerOptions)
|
|
92
|
+
const config = await loadConfig(params)
|
|
93
|
+
if (config.verbose) {
|
|
94
|
+
console.log(`Compiling with TSC`)
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
const fileNames = (await getAllInputs(config.compile?.depth)).map((fileName) => `src/${fileName}`)
|
|
98
|
+
const configFile = getConfigFile(compilerOptions)
|
|
99
|
+
return compile(fileNames, configFile.compilerOptions)
|
|
100
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { build, BuildOptions } from 'tsc-prog'
|
|
2
|
+
import { CompileParams } from "./CompileParams"
|
|
3
|
+
import { loadConfig } from "../../../lib"
|
|
4
|
+
import { getAllInputs } from "./inputs"
|
|
5
|
+
import { cwd } from 'process'
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
export const packageCompileTscTypes = async (params?: CompileParams): Promise<number> => {
|
|
9
|
+
const pkg = process.env.INIT_CWD
|
|
10
|
+
const buildOptions: BuildOptions = {
|
|
11
|
+
basePath: pkg ?? cwd(),
|
|
12
|
+
compilerOptions: {
|
|
13
|
+
sourceMap: true,
|
|
14
|
+
declaration: true,
|
|
15
|
+
declarationMap: true,
|
|
16
|
+
emitDeclarationOnly: true,
|
|
17
|
+
esModuleInterop: true,
|
|
18
|
+
outDir: 'dist'
|
|
19
|
+
},
|
|
20
|
+
include: ['src'],
|
|
21
|
+
exclude: ['dist', 'docs']
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
const config = await loadConfig(params)
|
|
25
|
+
if (config.verbose) {
|
|
26
|
+
console.log(`Compiling types with TSC [${pkg}]`)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const fileNames = (await getAllInputs(config.compile?.depth)).map((fileName) => `src/${fileName}`)
|
|
30
|
+
build(buildOptions)
|
|
31
|
+
return 0
|
|
32
|
+
}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
import { build, defineConfig, Options } from 'tsup'
|
|
2
|
+
import {getInputDirs, getInputs} from './inputs'
|
|
3
|
+
import { packagePublint } from '../publint'
|
|
4
|
+
import { CompileParams } from './CompileParams'
|
|
5
|
+
import { loadConfig } from '../../../lib'
|
|
6
|
+
import { packageCompileTscTypes } from './tscTypes'
|
|
7
|
+
|
|
8
|
+
export type PackageCompileTsupParams = Partial<CompileParams & {
|
|
9
|
+
compile?: {
|
|
10
|
+
tsup?: {
|
|
11
|
+
options?: Options
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
}>
|
|
15
|
+
|
|
16
|
+
const compileSubDir = async (subDir?: string, options?: Options, verbose?: boolean) => {
|
|
17
|
+
const dir = subDir === '.' ? undefined : subDir
|
|
18
|
+
const input = await getInputs(dir)
|
|
19
|
+
const optionsResult = defineConfig({
|
|
20
|
+
bundle: true,
|
|
21
|
+
cjsInterop: true,
|
|
22
|
+
clean: true,
|
|
23
|
+
dts: {
|
|
24
|
+
entry: ['src/index.ts'],
|
|
25
|
+
resolve: false,
|
|
26
|
+
only: false
|
|
27
|
+
},
|
|
28
|
+
entry: subDir ? input.map((file) => `./src/${file}`) : ['./src/index.ts'],
|
|
29
|
+
format: ['cjs', 'esm'],
|
|
30
|
+
outDir: 'dist',
|
|
31
|
+
sourcemap: true,
|
|
32
|
+
splitting: false,
|
|
33
|
+
tsconfig: 'tsconfig.json',
|
|
34
|
+
...options
|
|
35
|
+
})
|
|
36
|
+
const optionsList = (
|
|
37
|
+
await Promise.all(
|
|
38
|
+
(Array.isArray(optionsResult) ? optionsResult : [optionsResult])
|
|
39
|
+
.map<Promise<Options[]>>(async (options) => {
|
|
40
|
+
const result = typeof options === 'function' ? await options({}) : [options]
|
|
41
|
+
return Array.isArray(result) ? result : [result]
|
|
42
|
+
})
|
|
43
|
+
.flat(),
|
|
44
|
+
)
|
|
45
|
+
).flat()
|
|
46
|
+
await Promise.all(optionsList.map((options) => build(options)))
|
|
47
|
+
|
|
48
|
+
return await packageCompileTscTypes({verbose})
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
export const packageCompileTsup = async (params?: PackageCompileTsupParams) => {
|
|
52
|
+
const config = await loadConfig(params)
|
|
53
|
+
if (config.verbose) {
|
|
54
|
+
console.log(`Compiling with TSUP`)
|
|
55
|
+
}
|
|
56
|
+
const inputDirs = await getInputDirs(config.compile?.depth)
|
|
57
|
+
|
|
58
|
+
const result = (await Promise.all(
|
|
59
|
+
inputDirs.map(async (inputDir) => {
|
|
60
|
+
return await compileSubDir(inputDir, config.compile?.tsup?.options, config.verbose )
|
|
61
|
+
}),
|
|
62
|
+
)).reduce(((prev, result) => prev + result), 0)
|
|
63
|
+
return result + (config.compile?.publint ? await packagePublint() : 0)
|
|
64
|
+
}
|
|
@@ -2,7 +2,11 @@ import chalk from 'chalk'
|
|
|
2
2
|
import { promises as fs } from 'fs'
|
|
3
3
|
import { Message } from 'publint'
|
|
4
4
|
|
|
5
|
-
export
|
|
5
|
+
export interface PackagePublintParams {
|
|
6
|
+
verbose?: boolean
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export const packagePublint = async (params?: PackagePublintParams) => {
|
|
6
10
|
const pkgDir = process.env.INIT_CWD
|
|
7
11
|
|
|
8
12
|
const pkg = JSON.parse(await fs.readFile(`${pkgDir}/package.json`, 'utf8'))
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
import chalk from 'chalk'
|
|
4
|
+
import { packageCompileTsup } from '../../actions'
|
|
5
|
+
|
|
6
|
+
packageCompileTsup({verbose: true}).then((value) => process.exitCode = value).catch((reason) => {
|
|
7
|
+
console.error(chalk.red(reason))
|
|
8
|
+
process.exitCode = 1
|
|
9
|
+
})
|
package/src/lib/index.ts
CHANGED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import chalk from 'chalk'
|
|
2
|
+
import merge from 'lodash/merge'
|
|
3
|
+
import { cosmiconfig } from 'cosmiconfig'
|
|
4
|
+
|
|
5
|
+
let config: Record<string, any>
|
|
6
|
+
|
|
7
|
+
export const loadConfig = async <T extends object>(params?: T): Promise<T> => {
|
|
8
|
+
if (config) {
|
|
9
|
+
return merge({}, config, params)
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
const cosmicConfigResult = await cosmiconfig('xy').search()
|
|
13
|
+
config = cosmicConfigResult?.config
|
|
14
|
+
const configFilePath = cosmicConfigResult?.filepath
|
|
15
|
+
if (configFilePath) {
|
|
16
|
+
console.log(chalk.gray(`Loading config from ${configFilePath}`))
|
|
17
|
+
}
|
|
18
|
+
return merge({}, config, params)
|
|
19
|
+
}
|
package/tsconfig.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/package/compile.ts"],"sourcesContent":["import commonjs from '@rollup/plugin-commonjs'\nimport json from '@rollup/plugin-json'\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 } 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 const pushLog = !(log.code === 'EMPTY_BUNDLE' || log.code === 'MIXED_EXPORTS' || log.code === 'UNUSED_EXTERNAL_IMPORT')\n if (pushLog) {\n switch (level) {\n case 'warn': {\n warnings.push(log)\n break\n }\n case 'info': {\n infos.push(log)\n break\n }\n case 'debug': {\n debugs.push(log)\n break\n }\n default: {\n errors.push(log)\n break\n }\n }\n }\n console.log(chalk.yellow(`${level}: ${log.message} [${log.code}]`))\n if (log.id) {\n console.log(chalk.gray(log.id))\n }\n log.ids?.map((id) => {\n console.log(chalk.gray(id))\n })\n return defaultHandler(level, log)\n },\n plugins: [commonjs(), externalDeps(), nodeExternals(), json(), 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 (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 console.log(`Compile Depth: ${compileDepth}`)\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","json"]}
|
|
@@ -1,150 +0,0 @@
|
|
|
1
|
-
import commonjs from "@rollup/plugin-commonjs";
|
|
2
|
-
import json from "@rollup/plugin-json";
|
|
3
|
-
import typescript from "@rollup/plugin-typescript";
|
|
4
|
-
import chalk from "chalk";
|
|
5
|
-
import { cosmiconfig } from "cosmiconfig";
|
|
6
|
-
import { copyFile, readdir } from "fs/promises";
|
|
7
|
-
import { rollup } from "rollup";
|
|
8
|
-
import externalDeps from "rollup-plugin-exclude-dependencies-from-bundle";
|
|
9
|
-
import nodeExternals from "rollup-plugin-node-externals";
|
|
10
|
-
import { loadPackageConfig } from "../../loadPackageConfig";
|
|
11
|
-
import { packagePublint } from "./publint";
|
|
12
|
-
const rollItUp = async (format, ext, subDir) => {
|
|
13
|
-
const dir = subDir === "." ? void 0 : subDir;
|
|
14
|
-
const input = await getInputs(dir);
|
|
15
|
-
const tsPlugIn = typescript({
|
|
16
|
-
baseUrl: "src",
|
|
17
|
-
declaration: !dir || !subDir,
|
|
18
|
-
declarationMap: !dir || !subDir,
|
|
19
|
-
emitDeclarationOnly: false,
|
|
20
|
-
esModuleInterop: true,
|
|
21
|
-
exclude: ["**/*.spec.*", "dist", "docs", "node_modules", "packages"],
|
|
22
|
-
outDir: dir ? `dist/${dir}` : "dist",
|
|
23
|
-
rootDir: "src",
|
|
24
|
-
tsconfig: "tsconfig.json"
|
|
25
|
-
});
|
|
26
|
-
const errors = [];
|
|
27
|
-
const warnings = [];
|
|
28
|
-
const infos = [];
|
|
29
|
-
const debugs = [];
|
|
30
|
-
const options = {
|
|
31
|
-
input: subDir ? input.map((file) => `./src/${file}`) : ["./src/index.ts"],
|
|
32
|
-
logLevel: "warn",
|
|
33
|
-
onLog: (level, log, defaultHandler) => {
|
|
34
|
-
const pushLog = !(log.code === "EMPTY_BUNDLE" || log.code === "MIXED_EXPORTS" || log.code === "UNUSED_EXTERNAL_IMPORT");
|
|
35
|
-
if (pushLog) {
|
|
36
|
-
switch (level) {
|
|
37
|
-
case "warn": {
|
|
38
|
-
warnings.push(log);
|
|
39
|
-
break;
|
|
40
|
-
}
|
|
41
|
-
case "info": {
|
|
42
|
-
infos.push(log);
|
|
43
|
-
break;
|
|
44
|
-
}
|
|
45
|
-
case "debug": {
|
|
46
|
-
debugs.push(log);
|
|
47
|
-
break;
|
|
48
|
-
}
|
|
49
|
-
default: {
|
|
50
|
-
errors.push(log);
|
|
51
|
-
break;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
console.log(chalk.yellow(`${level}: ${log.message} [${log.code}]`));
|
|
56
|
-
if (log.id) {
|
|
57
|
-
console.log(chalk.gray(log.id));
|
|
58
|
-
}
|
|
59
|
-
log.ids?.map((id) => {
|
|
60
|
-
console.log(chalk.gray(id));
|
|
61
|
-
});
|
|
62
|
-
return defaultHandler(level, log);
|
|
63
|
-
},
|
|
64
|
-
plugins: [commonjs(), externalDeps(), nodeExternals(), json(), tsPlugIn]
|
|
65
|
-
};
|
|
66
|
-
const outputOptions = {
|
|
67
|
-
dir: subDir ? `dist/${subDir}` : "dist",
|
|
68
|
-
dynamicImportInCjs: true,
|
|
69
|
-
entryFileNames: (chunkInfo) => `${chunkInfo.name}.${ext}`,
|
|
70
|
-
format,
|
|
71
|
-
sourcemap: true
|
|
72
|
-
};
|
|
73
|
-
if (input.length) {
|
|
74
|
-
await (await rollup(options)).write(outputOptions);
|
|
75
|
-
}
|
|
76
|
-
return errors.length + warnings.length;
|
|
77
|
-
};
|
|
78
|
-
const getInputs = async (subDir) => {
|
|
79
|
-
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);
|
|
80
|
-
};
|
|
81
|
-
const getInputDirs = async (depth) => {
|
|
82
|
-
if (depth === 0) {
|
|
83
|
-
return [];
|
|
84
|
-
}
|
|
85
|
-
return [
|
|
86
|
-
".",
|
|
87
|
-
...(await readdir("src", { recursive: depth > 1, withFileTypes: true })).filter((file) => file.isDirectory()).map((file) => {
|
|
88
|
-
const pathParts = file.path.split("/");
|
|
89
|
-
pathParts.shift();
|
|
90
|
-
if (pathParts.length) {
|
|
91
|
-
const root = pathParts.join("/");
|
|
92
|
-
return `${root}/${file.name}`;
|
|
93
|
-
} else {
|
|
94
|
-
return file.name;
|
|
95
|
-
}
|
|
96
|
-
})
|
|
97
|
-
];
|
|
98
|
-
};
|
|
99
|
-
const getDistTypeFiles = async () => {
|
|
100
|
-
return (await readdir("dist", { recursive: true })).filter((file) => file.endsWith("d.ts")).map((file) => `dist/${file}`);
|
|
101
|
-
};
|
|
102
|
-
const getDistTypeMapFiles = async () => {
|
|
103
|
-
return (await readdir("dist", { recursive: true })).filter((file) => file.endsWith("d.ts.map")).map((file) => `dist/${file}`);
|
|
104
|
-
};
|
|
105
|
-
const buildIt = async (pkg, compileDepth) => {
|
|
106
|
-
console.log(`Compile Depth: ${compileDepth}`);
|
|
107
|
-
const inputDirs = await getInputDirs(compileDepth);
|
|
108
|
-
const pkgType = pkg.type ?? "commonjs";
|
|
109
|
-
const esmExt = pkgType === "module" ? "js" : "mjs";
|
|
110
|
-
const cjsExt = pkgType === "commonjs" ? "js" : "cjs";
|
|
111
|
-
const rollupResult = inputDirs.length ? await Promise.all(
|
|
112
|
-
inputDirs.map(async (inputDir) => {
|
|
113
|
-
return await rollItUp("esm", esmExt, inputDir) + await rollItUp("cjs", cjsExt, inputDir);
|
|
114
|
-
})
|
|
115
|
-
) : [await rollItUp("esm", esmExt) + await rollItUp("cjs", cjsExt)];
|
|
116
|
-
const distTypeFiles = await getDistTypeFiles();
|
|
117
|
-
await Promise.all(
|
|
118
|
-
distTypeFiles.map(async (file) => {
|
|
119
|
-
await copyFile(file, file.replace("d.ts", "d.mts"));
|
|
120
|
-
})
|
|
121
|
-
);
|
|
122
|
-
const distTypeMapFiles = await getDistTypeMapFiles();
|
|
123
|
-
await Promise.all(
|
|
124
|
-
distTypeMapFiles.map(async (file) => {
|
|
125
|
-
await copyFile(file, file.replace("d.ts.map", "d.mts.map"));
|
|
126
|
-
})
|
|
127
|
-
);
|
|
128
|
-
return rollupResult.reduce((prev, item) => prev + item, 0);
|
|
129
|
-
};
|
|
130
|
-
const packageCompile = async ({ publint = true, verbose } = { verbose: false }) => {
|
|
131
|
-
const xyConfig = await cosmiconfig("xy").search();
|
|
132
|
-
const compileDepth = xyConfig?.config.compile?.depth ?? 0;
|
|
133
|
-
const pkgName = process.env.npm_package_name;
|
|
134
|
-
if (verbose) {
|
|
135
|
-
console.log(chalk.green(`Compiling ${pkgName} Start`));
|
|
136
|
-
}
|
|
137
|
-
const result = await buildIt(await loadPackageConfig(), compileDepth) + (publint ? await packagePublint() : 0);
|
|
138
|
-
if (result) {
|
|
139
|
-
const input = await getInputs();
|
|
140
|
-
console.log(`Inputs: ${JSON.stringify(input, null, 2)}`);
|
|
141
|
-
console.error(chalk.red(`Compiling ${pkgName} Failed [${result}]`));
|
|
142
|
-
} else if (verbose) {
|
|
143
|
-
console.log(chalk.green(`Compiling ${pkgName} Done`));
|
|
144
|
-
}
|
|
145
|
-
return result;
|
|
146
|
-
};
|
|
147
|
-
export {
|
|
148
|
-
packageCompile
|
|
149
|
-
};
|
|
150
|
-
//# sourceMappingURL=compile.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/actions/package/compile.ts"],"sourcesContent":["import commonjs from '@rollup/plugin-commonjs'\nimport json from '@rollup/plugin-json'\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 } 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 const pushLog = !(log.code === 'EMPTY_BUNDLE' || log.code === 'MIXED_EXPORTS' || log.code === 'UNUSED_EXTERNAL_IMPORT')\n if (pushLog) {\n switch (level) {\n case 'warn': {\n warnings.push(log)\n break\n }\n case 'info': {\n infos.push(log)\n break\n }\n case 'debug': {\n debugs.push(log)\n break\n }\n default: {\n errors.push(log)\n break\n }\n }\n }\n console.log(chalk.yellow(`${level}: ${log.message} [${log.code}]`))\n if (log.id) {\n console.log(chalk.gray(log.id))\n }\n log.ids?.map((id) => {\n console.log(chalk.gray(id))\n })\n return defaultHandler(level, log)\n },\n plugins: [commonjs(), externalDeps(), nodeExternals(), json(), 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 (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 console.log(`Compile Depth: ${compileDepth}`)\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":[]}
|