@xylabs/ts-scripts-yarn3 2.12.32 → 2.13.0

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.
Files changed (150) hide show
  1. package/.tsconfig.build.cjs.json +3 -1
  2. package/.tsconfig.build.esm.json +5 -3
  3. package/dist/.tsconfig.build.cjs.tsbuildinfo +1 -1
  4. package/dist/.tsconfig.build.esm.tsbuildinfo +1 -1
  5. package/dist/cjs/actions/dupdeps.d.ts +2 -0
  6. package/dist/cjs/actions/dupdeps.d.ts.map +1 -0
  7. package/dist/cjs/actions/dupdeps.js +15 -0
  8. package/dist/cjs/actions/dupdeps.js.map +1 -0
  9. package/dist/cjs/actions/gitlint.d.ts +1 -1
  10. package/dist/cjs/actions/index.d.ts +2 -0
  11. package/dist/cjs/actions/index.d.ts.map +1 -1
  12. package/dist/cjs/actions/index.js +2 -0
  13. package/dist/cjs/actions/index.js.map +1 -1
  14. package/dist/cjs/actions/statics.d.ts +2 -0
  15. package/dist/cjs/actions/statics.d.ts.map +1 -0
  16. package/dist/cjs/actions/statics.js +15 -0
  17. package/dist/cjs/actions/statics.js.map +1 -0
  18. package/dist/cjs/actions/tsconfig-gen-cjs.d.ts +1 -1
  19. package/dist/cjs/actions/tsconfig-gen-cjs.d.ts.map +1 -1
  20. package/dist/cjs/actions/tsconfig-gen-cjs.js +1 -10
  21. package/dist/cjs/actions/tsconfig-gen-cjs.js.map +1 -1
  22. package/dist/cjs/actions/tsconfig-gen-clean.d.ts +1 -1
  23. package/dist/cjs/actions/tsconfig-gen-esm.d.ts +1 -1
  24. package/dist/cjs/actions/tsconfig-gen-esm.d.ts.map +1 -1
  25. package/dist/cjs/actions/tsconfig-gen-esm.js +1 -10
  26. package/dist/cjs/actions/tsconfig-gen-esm.js.map +1 -1
  27. package/dist/cjs/actions/tsconfig-gen-test.d.ts +1 -1
  28. package/dist/cjs/actions/tsconfig-gen.d.ts +1 -1
  29. package/dist/cjs/lib/createBuildConfig.d.ts +2 -0
  30. package/dist/cjs/lib/createBuildConfig.d.ts.map +1 -0
  31. package/dist/cjs/lib/createBuildConfig.js +22 -0
  32. package/dist/cjs/lib/createBuildConfig.js.map +1 -0
  33. package/dist/cjs/lib/defaultBuildConfig.d.ts +8 -0
  34. package/dist/cjs/lib/defaultBuildConfig.d.ts.map +1 -0
  35. package/dist/cjs/lib/defaultBuildConfig.js +11 -0
  36. package/dist/cjs/lib/defaultBuildConfig.js.map +1 -0
  37. package/dist/cjs/lib/dependencies/DuplicateDetector.d.ts +9 -0
  38. package/dist/cjs/lib/dependencies/DuplicateDetector.d.ts.map +1 -0
  39. package/dist/cjs/lib/dependencies/DuplicateDetector.js +46 -0
  40. package/dist/cjs/lib/dependencies/DuplicateDetector.js.map +1 -0
  41. package/dist/cjs/lib/dependencies/detectDuplicateDependencies.d.ts +2 -0
  42. package/dist/cjs/lib/dependencies/detectDuplicateDependencies.d.ts.map +1 -0
  43. package/dist/cjs/lib/dependencies/detectDuplicateDependencies.js +44 -0
  44. package/dist/cjs/lib/dependencies/detectDuplicateDependencies.js.map +1 -0
  45. package/dist/cjs/lib/dependencies/index.d.ts +3 -0
  46. package/dist/cjs/lib/dependencies/index.d.ts.map +1 -0
  47. package/dist/cjs/lib/dependencies/index.js +6 -0
  48. package/dist/cjs/lib/dependencies/index.js.map +1 -0
  49. package/dist/cjs/lib/index.d.ts +5 -0
  50. package/dist/cjs/lib/index.d.ts.map +1 -1
  51. package/dist/cjs/lib/index.js +5 -0
  52. package/dist/cjs/lib/index.js.map +1 -1
  53. package/dist/cjs/lib/jsonFormatters.d.ts +2 -0
  54. package/dist/cjs/lib/jsonFormatters.d.ts.map +1 -0
  55. package/dist/cjs/lib/jsonFormatters.js +11 -0
  56. package/dist/cjs/lib/jsonFormatters.js.map +1 -0
  57. package/dist/cjs/lib/parsedPackageJSON.d.ts +2 -0
  58. package/dist/cjs/lib/parsedPackageJSON.d.ts.map +1 -0
  59. package/dist/cjs/lib/parsedPackageJSON.js +12 -0
  60. package/dist/cjs/lib/parsedPackageJSON.js.map +1 -0
  61. package/dist/cjs/lib/withErrnoException.d.ts +0 -1
  62. package/dist/cjs/lib/withErrnoException.d.ts.map +1 -1
  63. package/dist/cjs/lib/xy/xy.d.ts.map +1 -1
  64. package/dist/cjs/lib/xy/xy.js +4 -1
  65. package/dist/cjs/lib/xy/xy.js.map +1 -1
  66. package/dist/cjs/lib/xy/xyInstallCommands.d.ts.map +1 -1
  67. package/dist/cjs/lib/xy/xyInstallCommands.js +14 -0
  68. package/dist/cjs/lib/xy/xyInstallCommands.js.map +1 -1
  69. package/dist/esm/actions/dupdeps.d.ts +2 -0
  70. package/dist/esm/actions/dupdeps.d.ts.map +1 -0
  71. package/dist/esm/actions/dupdeps.js +9 -0
  72. package/dist/esm/actions/dupdeps.js.map +1 -0
  73. package/dist/esm/actions/gitlint.d.ts +1 -1
  74. package/dist/esm/actions/index.d.ts +2 -0
  75. package/dist/esm/actions/index.d.ts.map +1 -1
  76. package/dist/esm/actions/index.js +2 -0
  77. package/dist/esm/actions/index.js.map +1 -1
  78. package/dist/esm/actions/statics.d.ts +2 -0
  79. package/dist/esm/actions/statics.d.ts.map +1 -0
  80. package/dist/esm/actions/statics.js +9 -0
  81. package/dist/esm/actions/statics.js.map +1 -0
  82. package/dist/esm/actions/tsconfig-gen-cjs.d.ts +1 -1
  83. package/dist/esm/actions/tsconfig-gen-cjs.d.ts.map +1 -1
  84. package/dist/esm/actions/tsconfig-gen-cjs.js +2 -11
  85. package/dist/esm/actions/tsconfig-gen-cjs.js.map +1 -1
  86. package/dist/esm/actions/tsconfig-gen-clean.d.ts +1 -1
  87. package/dist/esm/actions/tsconfig-gen-esm.d.ts +1 -1
  88. package/dist/esm/actions/tsconfig-gen-esm.d.ts.map +1 -1
  89. package/dist/esm/actions/tsconfig-gen-esm.js +2 -11
  90. package/dist/esm/actions/tsconfig-gen-esm.js.map +1 -1
  91. package/dist/esm/actions/tsconfig-gen-test.d.ts +1 -1
  92. package/dist/esm/actions/tsconfig-gen.d.ts +1 -1
  93. package/dist/esm/lib/createBuildConfig.d.ts +2 -0
  94. package/dist/esm/lib/createBuildConfig.d.ts.map +1 -0
  95. package/dist/esm/lib/createBuildConfig.js +28 -0
  96. package/dist/esm/lib/createBuildConfig.js.map +1 -0
  97. package/dist/esm/lib/defaultBuildConfig.d.ts +8 -0
  98. package/dist/esm/lib/defaultBuildConfig.d.ts.map +1 -0
  99. package/dist/esm/lib/defaultBuildConfig.js +8 -0
  100. package/dist/esm/lib/defaultBuildConfig.js.map +1 -0
  101. package/dist/esm/lib/dependencies/DuplicateDetector.d.ts +9 -0
  102. package/dist/esm/lib/dependencies/DuplicateDetector.d.ts.map +1 -0
  103. package/dist/esm/lib/dependencies/DuplicateDetector.js +43 -0
  104. package/dist/esm/lib/dependencies/DuplicateDetector.js.map +1 -0
  105. package/dist/esm/lib/dependencies/detectDuplicateDependencies.d.ts +2 -0
  106. package/dist/esm/lib/dependencies/detectDuplicateDependencies.d.ts.map +1 -0
  107. package/dist/esm/lib/dependencies/detectDuplicateDependencies.js +40 -0
  108. package/dist/esm/lib/dependencies/detectDuplicateDependencies.js.map +1 -0
  109. package/dist/esm/lib/dependencies/index.d.ts +3 -0
  110. package/dist/esm/lib/dependencies/index.d.ts.map +1 -0
  111. package/dist/esm/lib/dependencies/index.js +3 -0
  112. package/dist/esm/lib/dependencies/index.js.map +1 -0
  113. package/dist/esm/lib/index.d.ts +5 -0
  114. package/dist/esm/lib/index.d.ts.map +1 -1
  115. package/dist/esm/lib/index.js +5 -0
  116. package/dist/esm/lib/index.js.map +1 -1
  117. package/dist/esm/lib/jsonFormatters.d.ts +2 -0
  118. package/dist/esm/lib/jsonFormatters.d.ts.map +1 -0
  119. package/dist/esm/lib/jsonFormatters.js +7 -0
  120. package/dist/esm/lib/jsonFormatters.js.map +1 -0
  121. package/dist/esm/lib/parsedPackageJSON.d.ts +2 -0
  122. package/dist/esm/lib/parsedPackageJSON.d.ts.map +1 -0
  123. package/dist/esm/lib/parsedPackageJSON.js +7 -0
  124. package/dist/esm/lib/parsedPackageJSON.js.map +1 -0
  125. package/dist/esm/lib/withErrnoException.d.ts +0 -1
  126. package/dist/esm/lib/withErrnoException.d.ts.map +1 -1
  127. package/dist/esm/lib/xy/xy.d.ts.map +1 -1
  128. package/dist/esm/lib/xy/xy.js +4 -1
  129. package/dist/esm/lib/xy/xy.js.map +1 -1
  130. package/dist/esm/lib/xy/xyInstallCommands.d.ts.map +1 -1
  131. package/dist/esm/lib/xy/xyInstallCommands.js +15 -1
  132. package/dist/esm/lib/xy/xyInstallCommands.js.map +1 -1
  133. package/dist/tsconfig.build.cjs.tsbuildinfo +1 -1
  134. package/dist/tsconfig.build.esm.tsbuildinfo +1 -1
  135. package/package.json +6 -6
  136. package/src/actions/dupdeps.ts +12 -0
  137. package/src/actions/index.ts +2 -0
  138. package/src/actions/statics.ts +13 -0
  139. package/src/actions/tsconfig-gen-cjs.ts +2 -16
  140. package/src/actions/tsconfig-gen-esm.ts +2 -16
  141. package/src/lib/createBuildConfig.ts +35 -0
  142. package/src/lib/defaultBuildConfig.ts +7 -0
  143. package/src/lib/dependencies/DuplicateDetector.ts +62 -0
  144. package/src/lib/dependencies/detectDuplicateDependencies.ts +42 -0
  145. package/src/lib/dependencies/index.ts +2 -0
  146. package/src/lib/index.ts +5 -0
  147. package/src/lib/jsonFormatters.ts +6 -0
  148. package/src/lib/parsedPackageJSON.ts +7 -0
  149. package/src/lib/xy/xy.ts +4 -1
  150. package/src/lib/xy/xyInstallCommands.ts +23 -1
@@ -1,7 +1,7 @@
1
1
  import chalk from 'chalk'
2
2
  import { readFileSync, writeFileSync } from 'fs'
3
3
 
4
- import { yarnWorkspaces } from '../lib'
4
+ import { createBuildConfig, yarnWorkspaces } from '../lib'
5
5
 
6
6
  export const tsconfigGenEsm = (pkg?: string) => {
7
7
  const workspaces = yarnWorkspaces()
@@ -11,24 +11,10 @@ export const tsconfigGenEsm = (pkg?: string) => {
11
11
 
12
12
  console.log(chalk.green('Generate Configs [ESM]'))
13
13
 
14
- const config = JSON.stringify(
15
- {
16
- compilerOptions: {
17
- module: 'ESNEXT',
18
- outDir: './dist/esm',
19
- target: 'ESNEXT',
20
- },
21
- exclude: ['**/*.spec.*', '**/*.spec', '**/*.stories.*', '**/*.example.*', '**/spec/*', '**/stories/*'],
22
- extends: './tsconfig.json',
23
- include: ['src'],
24
- },
25
- null,
26
- 2,
27
- )
28
-
29
14
  return workspaceList
30
15
  .map(({ location, name }) => {
31
16
  try {
17
+ const config = JSON.stringify(createBuildConfig(location, 'ESNext', 'ESNext', 'esm'), null, 2)
32
18
  let currentConfig: string | undefined
33
19
  try {
34
20
  currentConfig = readFileSync(`${location}/.tsconfig.build.esm.json`, { encoding: 'utf8' })
@@ -0,0 +1,35 @@
1
+ import { readFileSync } from 'fs'
2
+
3
+ import { defaultBuildConfig } from './defaultBuildConfig'
4
+
5
+ const getGeneralTypescriptConfig = (location: string) => {
6
+ let generalConfig: string | undefined
7
+ try {
8
+ generalConfig = readFileSync(`${location}/tsconfig.json`, { encoding: 'utf8' })
9
+ } catch (ex) {
10
+ throw new Error('No tsconfig.json file found')
11
+ }
12
+ return JSON.parse(generalConfig)
13
+ }
14
+
15
+ export const createBuildConfig = (
16
+ location: string,
17
+ module: 'ESNext' | 'CommonJS',
18
+ target: 'ESNext' | 'ES6',
19
+ outDirSuffix: string,
20
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
21
+ ): Record<string, any> => {
22
+ const generalConfigObject = getGeneralTypescriptConfig(location)
23
+ return {
24
+ ...generalConfigObject,
25
+ compilerOptions: {
26
+ ...defaultBuildConfig.compilerOptions,
27
+ ...(generalConfigObject.compilerOptions ?? {}),
28
+ module,
29
+ outDir: `./${generalConfigObject.compilerOptions?.outDir ?? 'dist'}/${outDirSuffix}`,
30
+ target,
31
+ },
32
+ exclude: [...(generalConfigObject.exclude ?? []), ...defaultBuildConfig.exclude],
33
+ include: [...(generalConfigObject.include ?? []), ...defaultBuildConfig.include],
34
+ }
35
+ }
@@ -0,0 +1,7 @@
1
+ export const defaultBuildConfig = {
2
+ "compilerOptions": {
3
+ rootDir: "src"
4
+ },
5
+ exclude: ['**/*.spec.*', '**/*.spec', '**/*.stories.*', '**/*.example.*', '**/spec/*', '**/stories/*'],
6
+ include: ['src'],
7
+ }
@@ -0,0 +1,62 @@
1
+ import chalk from 'chalk'
2
+ // eslint-disable-next-line import/no-internal-modules
3
+ import uniq from 'lodash/uniq'
4
+ import { EOL } from 'os'
5
+
6
+ import { multiLineToJSONArray } from '../jsonFormatters'
7
+
8
+ interface DependencyEntry {
9
+ children: Record<string, Record<string, string>>
10
+ value: string
11
+ }
12
+
13
+ type DependencyEntries = DependencyEntry[]
14
+
15
+ interface Results {
16
+ currentVersion: string | undefined
17
+ dependency: string
18
+ duplicateVersions: string[]
19
+ }
20
+
21
+ export class DuplicateDetector {
22
+ private dependency: string
23
+ private dependencyEntries: DependencyEntries
24
+
25
+ constructor(output: string, dependency: string) {
26
+ this.dependency = dependency
27
+ this.dependencyEntries = multiLineToJSONArray(output)
28
+ }
29
+
30
+ public detect() {
31
+ const result = this.dependencyEntries.reduce(this.detectReducer, this.resultsFactory(this.dependency))
32
+ if (result.duplicateVersions.length) {
33
+ console.log(chalk.yellow(`${EOL}Duplicates found for: ${this.dependency}`))
34
+ console.log(chalk.grey(` ${result.duplicateVersions.toString().replaceAll(',', `${EOL} `)}`, EOL))
35
+ return 1
36
+ } else {
37
+ console.log(`${this.dependency} - OK`)
38
+ return 0
39
+ }
40
+ }
41
+
42
+ private detectReducer(acc: Results, entry: DependencyEntry) {
43
+ const version = Object.entries(entry.children).map(([k]) => k)[0]
44
+
45
+ if (!acc.currentVersion) {
46
+ acc.currentVersion = version
47
+ return acc
48
+ }
49
+
50
+ if (acc.currentVersion && acc.currentVersion !== version && !version.includes('@virtual:')) {
51
+ // if first duplicate, push the current version as the first duplicate
52
+ if (acc.duplicateVersions.length === 0) {
53
+ acc.duplicateVersions.push(acc.currentVersion)
54
+ }
55
+ acc.duplicateVersions.push(version)
56
+ acc.duplicateVersions = uniq(acc.duplicateVersions)
57
+ }
58
+ return acc
59
+ }
60
+
61
+ private resultsFactory = (dependency: string): Results => ({ currentVersion: undefined, dependency, duplicateVersions: [] })
62
+ }
@@ -0,0 +1,42 @@
1
+ import { execSync } from 'child_process'
2
+
3
+ import { safeExit } from '../safeExit'
4
+ import { DuplicateDetector } from './DuplicateDetector'
5
+
6
+ export const detectDuplicateDependencies = (depsFromPackageJSON?: string[], DefaultDependencies?: string[]) => {
7
+ let exitCode = 0
8
+
9
+ const dependencies = depsFromPackageJSON?.length ? depsFromPackageJSON : DefaultDependencies
10
+
11
+ return safeExit(() => {
12
+ if (dependencies) {
13
+ dependencies.forEach((dependency) => {
14
+ let output: string
15
+
16
+ try {
17
+ const cmd = `yarn why ${dependency} --json`
18
+ output = execSync(cmd).toString()
19
+ } catch (e) {
20
+ console.error(`Error running yarn why: ${e}`)
21
+ exitCode = 1
22
+ return
23
+ }
24
+
25
+ if (output) {
26
+ exitCode = new DuplicateDetector(output, dependency).detect()
27
+ return
28
+ } else {
29
+ console.log(`${dependency} - N/A`)
30
+ if (depsFromPackageJSON) {
31
+ console.log(`🚨 Library ${dependency} was requested in package.json but not found`)
32
+ }
33
+ exitCode = 1
34
+ return
35
+ }
36
+ })
37
+ return exitCode
38
+ } else {
39
+ console.log('🚨 No dependencies where passed')
40
+ }
41
+ })
42
+ }
@@ -0,0 +1,2 @@
1
+ export * from './detectDuplicateDependencies'
2
+ export * from './DuplicateDetector'
package/src/lib/index.ts CHANGED
@@ -1,4 +1,9 @@
1
+ export * from './createBuildConfig'
2
+ export * from './defaultBuildConfig'
3
+ export * from './dependencies'
1
4
  export * from './isYarnVersionOrGreater'
5
+ export * from './jsonFormatters'
6
+ export * from './parsedPackageJSON'
2
7
  export * from './processEx'
3
8
  export * from './runSteps'
4
9
  export * from './runStepsAsync'
@@ -0,0 +1,6 @@
1
+ export const multiLineToJSONArray = (output: string) => {
2
+ const withCommas = output.replace(/\r\n/g, '').replace(/\n/g, ',')
3
+ const cleanCollection = withCommas.substring(0, withCommas.length - 1)
4
+ const collection = `[${cleanCollection}]`
5
+ return JSON.parse(collection)
6
+ }
@@ -0,0 +1,7 @@
1
+ import { readFileSync } from 'fs'
2
+
3
+ export const parsedPackageJSON = (path?: string) => {
4
+ const pathToPackageJSON = path ?? process.env.npm_package_json ?? ''
5
+ const packageJSON = readFileSync(pathToPackageJSON).toString()
6
+ return JSON.parse(packageJSON)
7
+ }
package/src/lib/xy/xy.ts CHANGED
@@ -6,5 +6,8 @@ import { xyLintCommands } from './xyLintCommands'
6
6
  import { xyParseOptions } from './xyParseOptions'
7
7
 
8
8
  export const xy = () => {
9
- return xyBuildCommands(xyCommonCommands(xyInstallCommands(xyDeployCommands(xyLintCommands(xyParseOptions()))))).help().argv
9
+ return xyBuildCommands(xyCommonCommands(xyInstallCommands(xyDeployCommands(xyLintCommands(xyParseOptions())))))
10
+ .demandCommand(1)
11
+ .version()
12
+ .help().argv
10
13
  }
@@ -1,6 +1,6 @@
1
1
  import yargs from 'yargs'
2
2
 
3
- import { clean, reinstall, up, updo } from '../../actions'
3
+ import { clean, dupdeps, reinstall, statics, up, updo } from '../../actions'
4
4
 
5
5
  export const xyInstallCommands = (args: yargs.Argv) => {
6
6
  return args
@@ -50,4 +50,26 @@ export const xyInstallCommands = (args: yargs.Argv) => {
50
50
  process.exitCode = updo()
51
51
  },
52
52
  )
53
+ .command(
54
+ 'statics',
55
+ 'Statics - Confirming Static Packages',
56
+ (yargs) => {
57
+ return yargs
58
+ },
59
+ (argv) => {
60
+ if (argv.verbose) console.log('Statics')
61
+ process.exitCode = statics()
62
+ },
63
+ )
64
+ .command(
65
+ 'dupdeps',
66
+ 'Dupdeps - Duplicate Dependencies in package.json',
67
+ (yargs) => {
68
+ return yargs
69
+ },
70
+ (argv) => {
71
+ if (argv.verbose) console.log('Dupdeps')
72
+ process.exitCode = dupdeps()
73
+ },
74
+ )
53
75
  }