@@ -2,7 +2,6 @@ const fs = require('fs')
2
2
const path = require ( 'path' )
3
3
const rimraf = require ( 'rimraf' )
4
4
const mkdirp = require ( 'mkdirp' )
5
- const arrify = require ( 'arrify' )
6
5
const has = require ( 'lodash.has' )
7
6
const readPkgUp = require ( 'read-pkg-up' )
8
7
const which = require ( 'which' )
@@ -66,19 +65,42 @@ function resolveBin(
66
65
const fromRoot = ( /** @type {string[] } */ ...p ) => path . join ( appDirectory , ...p )
67
66
const hasFile = ( /** @type {string[] } */ ...p ) => fs . existsSync ( fromRoot ( ...p ) )
68
67
69
- const ifFile = (
70
- /** @type {* } */ files ,
71
- /** @type {* } */ t ,
72
- /** @type {* } */ f ,
73
- ) => ( arrify ( files ) . some ( ( /** @type {* } */ file ) => hasFile ( file ) ) ? t : f )
68
+ /**
69
+ * @param {string | string[] } stringOrArray
70
+ */
71
+ const liftStringArray = stringOrArray =>
72
+ typeof stringOrArray === 'string' ? [ stringOrArray ] : stringOrArray
73
+
74
+ /**
75
+ *
76
+ * @template T
77
+ * @template F
78
+ *
79
+ * @param {string | string[] } files
80
+ * @param {T } t
81
+ * @param {F } f
82
+ */
83
+ const ifFile = ( files , t , f ) =>
84
+ liftStringArray ( files ) . some ( file => hasFile ( file ) ) ? t : f
74
85
75
86
const getPkgName = ( ) => pkg . name
76
87
77
- const hasPkgProp = ( /** @type {* } */ props ) =>
78
- arrify ( props ) . some ( ( /** @type {* } */ prop ) => has ( pkg , prop ) )
88
+ /**
89
+ * @param {string | string[] } props
90
+ */
91
+ const hasPkgProp = props => liftStringArray ( props ) . some ( prop => has ( pkg , prop ) )
79
92
80
- const hasPkgSubProp = ( /** @type {* } */ pkgProp ) => ( /** @type {* } */ props ) =>
81
- hasPkgProp ( arrify ( props ) . map ( ( /** @type {* } */ p ) => `${ pkgProp } .${ p } ` ) )
93
+ /**
94
+ * @param {string } pkgProp
95
+ */
96
+ const hasPkgSubProp =
97
+ pkgProp =>
98
+ /**
99
+ * @param {string | string[] } props
100
+ * @returns
101
+ */
102
+ props =>
103
+ hasPkgProp ( liftStringArray ( props ) . map ( p => `${ pkgProp } .${ p } ` ) )
82
104
83
105
const ifPkgSubProp =
84
106
( /** @type {* } */ pkgProp ) =>
@@ -95,11 +117,17 @@ const hasAnyDep = (/** @type {*} */ args) =>
95
117
const ifPeerDep = ifPkgSubProp ( 'peerDependencies' )
96
118
const ifDep = ifPkgSubProp ( 'dependencies' )
97
119
const ifDevDep = ifPkgSubProp ( 'devDependencies' )
98
- const ifAnyDep = (
99
- /** @type {* } */ deps ,
100
- /** @type {* } */ t ,
101
- /** @type {* } */ f ,
102
- ) => ( hasAnyDep ( arrify ( deps ) ) ? t : f )
120
+
121
+ /**
122
+ * @template T
123
+ * @template F
124
+ *
125
+ * @param {string | string[] } deps
126
+ * @param {T } t
127
+ * @param {F } f
128
+ */
129
+ const ifAnyDep = ( deps , t , f ) => ( hasAnyDep ( liftStringArray ( deps ) ) ? t : f )
130
+
103
131
const ifScript = ifPkgSubProp ( 'scripts' )
104
132
105
133
function parseEnv ( /** @type {string } */ name , /** @type {* } */ def ) {
0 commit comments