@gradientedge/cdk-utils 4.4.3 → 4.4.7

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 (205) hide show
  1. package/app/api-destined-function/node_modules/.yarn-integrity +2 -89
  2. package/app/api-destined-function/package.json +1 -5
  3. package/lerna.json +6 -0
  4. package/package.json +9 -9
  5. package/api-docs/AcmManager.html +0 -622
  6. package/api-docs/AcmProps.html +0 -238
  7. package/api-docs/AlarmProps.html +0 -238
  8. package/api-docs/AlarmStatusWidgetProps.html +0 -238
  9. package/api-docs/ApiDestinationEvent.html +0 -297
  10. package/api-docs/ApiDestinationEventType.html +0 -238
  11. package/api-docs/ApiDestinedLambda.html +0 -297
  12. package/api-docs/ApiDestinedLambdaEnvironment.html +0 -238
  13. package/api-docs/ApiDestinedLambdaType.html +0 -238
  14. package/api-docs/ApiDestinedRestApi.html +0 -297
  15. package/api-docs/ApiDestinedRestApiType.html +0 -238
  16. package/api-docs/ApiManager.html +0 -766
  17. package/api-docs/ApiToEventBridgeTarget.html +0 -1877
  18. package/api-docs/ApiToEventBridgeTarget.jpg +0 -0
  19. package/api-docs/ApiToEventBridgeTargetEventProps.html +0 -238
  20. package/api-docs/ApiToEventBridgeTargetLambdaProps.html +0 -238
  21. package/api-docs/ApiToEventBridgeTargetProps.html +0 -238
  22. package/api-docs/ApiToEventBridgeTargetRestApiProps.html +0 -238
  23. package/api-docs/AppConfigManager.html +0 -1203
  24. package/api-docs/AppConfigProps.html +0 -238
  25. package/api-docs/CloudFrontManager.html +0 -2402
  26. package/api-docs/CloudFrontProps.html +0 -238
  27. package/api-docs/CloudTrailManager.html +0 -637
  28. package/api-docs/CloudTrailProps.html +0 -238
  29. package/api-docs/CloudWatchManager.html +0 -2986
  30. package/api-docs/CloudfrontFunctionProps.html +0 -238
  31. package/api-docs/CodeBuildManager.html +0 -736
  32. package/api-docs/CommonConstruct.html +0 -1299
  33. package/api-docs/CommonStack.html +0 -813
  34. package/api-docs/CommonStackProps.html +0 -238
  35. package/api-docs/DashboardProps.html +0 -238
  36. package/api-docs/DistributionProps.html +0 -238
  37. package/api-docs/DynamodbManager.html +0 -530
  38. package/api-docs/EcrManager.html +0 -530
  39. package/api-docs/EcsClusterProps.html +0 -238
  40. package/api-docs/EcsManager.html +0 -880
  41. package/api-docs/EcsTaskProps.html +0 -238
  42. package/api-docs/EksClusterProps.html +0 -238
  43. package/api-docs/EksManager.html +0 -580
  44. package/api-docs/EventBusProps.html +0 -238
  45. package/api-docs/EventManager.html +0 -1454
  46. package/api-docs/EventRuleProps.html +0 -238
  47. package/api-docs/GraphQLApiLambda.html +0 -1671
  48. package/api-docs/GraphQLApiLambda.jpg +0 -0
  49. package/api-docs/GraphQlApiLambdaEnvironment.html +0 -238
  50. package/api-docs/GraphQlApiLambdaProps.html +0 -238
  51. package/api-docs/GraphWidgetProps.html +0 -238
  52. package/api-docs/HealthCheck.html +0 -238
  53. package/api-docs/IamManager.html +0 -3821
  54. package/api-docs/LambdaEdgeProps.html +0 -238
  55. package/api-docs/LambdaEnvironment.html +0 -238
  56. package/api-docs/LambdaManager.html +0 -2378
  57. package/api-docs/LambdaProps.html +0 -238
  58. package/api-docs/LifecycleRule.html +0 -238
  59. package/api-docs/LogManager.html +0 -955
  60. package/api-docs/LogProps.html +0 -238
  61. package/api-docs/LogQueryWidgetProps.html +0 -238
  62. package/api-docs/MetricFilterProps.html +0 -238
  63. package/api-docs/MetricProps.html +0 -238
  64. package/api-docs/NumericWidgetProps.html +0 -238
  65. package/api-docs/Route53Manager.html +0 -1460
  66. package/api-docs/Route53Props.html +0 -238
  67. package/api-docs/RuleProps.html +0 -238
  68. package/api-docs/S3BucketProps.html +0 -238
  69. package/api-docs/S3Manager.html +0 -1546
  70. package/api-docs/SSMParameterReader.html +0 -431
  71. package/api-docs/SSMParameterReaderProps.html +0 -238
  72. package/api-docs/SecretsManager.html +0 -1140
  73. package/api-docs/SiteWithEcsBackend.html +0 -2391
  74. package/api-docs/SiteWithEcsBackendProps.html +0 -238
  75. package/api-docs/SnsManager.html +0 -780
  76. package/api-docs/SsmManager.html +0 -955
  77. package/api-docs/StaticSite.html +0 -1358
  78. package/api-docs/StaticSiteProps.html +0 -238
  79. package/api-docs/SubscriptionProps.html +0 -238
  80. package/api-docs/TableProps.html +0 -238
  81. package/api-docs/TextWidgetProps.html +0 -238
  82. package/api-docs/VpcManager.html +0 -986
  83. package/api-docs/WafIPSetProps.html +0 -238
  84. package/api-docs/WafManager.html +0 -730
  85. package/api-docs/WafWebACLProps.html +0 -238
  86. package/api-docs/common_construct.ts.html +0 -279
  87. package/api-docs/common_stack.ts.html +0 -303
  88. package/api-docs/construct_api-to-eventbridge-target_api-destination-event.ts.html +0 -175
  89. package/api-docs/construct_api-to-eventbridge-target_api-destined-lambda.ts.html +0 -178
  90. package/api-docs/construct_api-to-eventbridge-target_api-destined-rest-api.ts.html +0 -190
  91. package/api-docs/construct_api-to-eventbridge-target_main.ts.html +0 -751
  92. package/api-docs/construct_graphql-api-lambda_main.ts.html +0 -408
  93. package/api-docs/construct_site-with-ecs-backend_main.ts.html +0 -544
  94. package/api-docs/construct_static-site_main.ts.html +0 -374
  95. package/api-docs/global.html +0 -1530
  96. package/api-docs/index.html +0 -208
  97. package/api-docs/logo.png +0 -0
  98. package/api-docs/manager_aws_acm-manager.ts.html +0 -236
  99. package/api-docs/manager_aws_api-manager.ts.html +0 -260
  100. package/api-docs/manager_aws_app-config-manager.ts.html +0 -310
  101. package/api-docs/manager_aws_cloudfront-manager.ts.html +0 -491
  102. package/api-docs/manager_aws_cloudtrail-manager.ts.html +0 -251
  103. package/api-docs/manager_aws_cloudwatch-manager.ts.html +0 -553
  104. package/api-docs/manager_aws_codebuild-manager.ts.html +0 -240
  105. package/api-docs/manager_aws_dynamodb-manager.ts.html +0 -219
  106. package/api-docs/manager_aws_ecr-manager.ts.html +0 -199
  107. package/api-docs/manager_aws_ecs-manager.ts.html +0 -259
  108. package/api-docs/manager_aws_eks-manager.ts.html +0 -260
  109. package/api-docs/manager_aws_event-manager.ts.html +0 -336
  110. package/api-docs/manager_aws_iam-manager.ts.html +0 -573
  111. package/api-docs/manager_aws_lambda-manager.ts.html +0 -400
  112. package/api-docs/manager_aws_log-manager.ts.html +0 -259
  113. package/api-docs/manager_aws_route53-manager.ts.html +0 -333
  114. package/api-docs/manager_aws_s3-manager.ts.html +0 -361
  115. package/api-docs/manager_aws_secrets-manager.ts.html +0 -274
  116. package/api-docs/manager_aws_sns-manager.ts.html +0 -246
  117. package/api-docs/manager_aws_ssm-manager.ts.html +0 -273
  118. package/api-docs/manager_aws_vpc-manager.ts.html +0 -244
  119. package/api-docs/manager_aws_waf-manager.ts.html +0 -232
  120. package/api-docs/scripts/app.min.js +0 -1
  121. package/api-docs/scripts/linenumber.js +0 -26
  122. package/api-docs/scripts/search.js +0 -39
  123. package/api-docs/styles/app.min.css +0 -1
  124. package/api-docs/styles/iframe.css +0 -13
  125. package/api-docs/styles/prettify-jsdoc.css +0 -111
  126. package/api-docs/styles/prettify-tomorrow.css +0 -132
  127. package/api-docs/styles/reset.css +0 -44
  128. package/api-docs/styles.css +0 -113
  129. package/api-docs/tutorial-Architecture.html +0 -151
  130. package/api-docs/tutorial-Build.html +0 -150
  131. package/api-docs/tutorial-CI-CD.html +0 -154
  132. package/api-docs/tutorial-Development.html +0 -227
  133. package/api-docs/types_aws_index.ts.html +0 -665
  134. package/api-docs/utils_aws_index.ts.html +0 -192
  135. package/api-docs/utils_index.ts.html +0 -227
  136. package/app/api-destined-function/node_modules/balanced-match/LICENSE.md +0 -21
  137. package/app/api-destined-function/node_modules/balanced-match/README.md +0 -97
  138. package/app/api-destined-function/node_modules/balanced-match/index.js +0 -62
  139. package/app/api-destined-function/node_modules/balanced-match/package.json +0 -48
  140. package/app/api-destined-function/node_modules/brace-expansion/LICENSE +0 -21
  141. package/app/api-destined-function/node_modules/brace-expansion/README.md +0 -129
  142. package/app/api-destined-function/node_modules/brace-expansion/index.js +0 -201
  143. package/app/api-destined-function/node_modules/brace-expansion/package.json +0 -47
  144. package/app/api-destined-function/node_modules/concat-map/.travis.yml +0 -4
  145. package/app/api-destined-function/node_modules/concat-map/LICENSE +0 -18
  146. package/app/api-destined-function/node_modules/concat-map/README.markdown +0 -62
  147. package/app/api-destined-function/node_modules/concat-map/example/map.js +0 -6
  148. package/app/api-destined-function/node_modules/concat-map/index.js +0 -13
  149. package/app/api-destined-function/node_modules/concat-map/package.json +0 -43
  150. package/app/api-destined-function/node_modules/fs.realpath/LICENSE +0 -43
  151. package/app/api-destined-function/node_modules/fs.realpath/README.md +0 -33
  152. package/app/api-destined-function/node_modules/fs.realpath/index.js +0 -66
  153. package/app/api-destined-function/node_modules/fs.realpath/old.js +0 -303
  154. package/app/api-destined-function/node_modules/fs.realpath/package.json +0 -26
  155. package/app/api-destined-function/node_modules/glob/LICENSE +0 -21
  156. package/app/api-destined-function/node_modules/glob/README.md +0 -378
  157. package/app/api-destined-function/node_modules/glob/common.js +0 -236
  158. package/app/api-destined-function/node_modules/glob/glob.js +0 -787
  159. package/app/api-destined-function/node_modules/glob/package.json +0 -52
  160. package/app/api-destined-function/node_modules/glob/sync.js +0 -483
  161. package/app/api-destined-function/node_modules/inflight/LICENSE +0 -15
  162. package/app/api-destined-function/node_modules/inflight/README.md +0 -37
  163. package/app/api-destined-function/node_modules/inflight/inflight.js +0 -54
  164. package/app/api-destined-function/node_modules/inflight/package.json +0 -29
  165. package/app/api-destined-function/node_modules/inherits/LICENSE +0 -16
  166. package/app/api-destined-function/node_modules/inherits/README.md +0 -42
  167. package/app/api-destined-function/node_modules/inherits/inherits.js +0 -9
  168. package/app/api-destined-function/node_modules/inherits/inherits_browser.js +0 -27
  169. package/app/api-destined-function/node_modules/inherits/package.json +0 -29
  170. package/app/api-destined-function/node_modules/minimatch/LICENSE +0 -15
  171. package/app/api-destined-function/node_modules/minimatch/README.md +0 -209
  172. package/app/api-destined-function/node_modules/minimatch/minimatch.js +0 -923
  173. package/app/api-destined-function/node_modules/minimatch/package.json +0 -30
  174. package/app/api-destined-function/node_modules/mkdirp/LICENSE +0 -21
  175. package/app/api-destined-function/node_modules/mkdirp/bin/cmd.js +0 -68
  176. package/app/api-destined-function/node_modules/mkdirp/index.js +0 -31
  177. package/app/api-destined-function/node_modules/mkdirp/lib/find-made.js +0 -29
  178. package/app/api-destined-function/node_modules/mkdirp/lib/mkdirp-manual.js +0 -64
  179. package/app/api-destined-function/node_modules/mkdirp/lib/mkdirp-native.js +0 -39
  180. package/app/api-destined-function/node_modules/mkdirp/lib/opts-arg.js +0 -23
  181. package/app/api-destined-function/node_modules/mkdirp/lib/path-arg.js +0 -29
  182. package/app/api-destined-function/node_modules/mkdirp/lib/use-native.js +0 -10
  183. package/app/api-destined-function/node_modules/mkdirp/package.json +0 -44
  184. package/app/api-destined-function/node_modules/mkdirp/readme.markdown +0 -266
  185. package/app/api-destined-function/node_modules/once/LICENSE +0 -15
  186. package/app/api-destined-function/node_modules/once/README.md +0 -79
  187. package/app/api-destined-function/node_modules/once/once.js +0 -42
  188. package/app/api-destined-function/node_modules/once/package.json +0 -33
  189. package/app/api-destined-function/node_modules/path-is-absolute/index.js +0 -20
  190. package/app/api-destined-function/node_modules/path-is-absolute/license +0 -21
  191. package/app/api-destined-function/node_modules/path-is-absolute/package.json +0 -43
  192. package/app/api-destined-function/node_modules/path-is-absolute/readme.md +0 -59
  193. package/app/api-destined-function/node_modules/rimraf/LICENSE +0 -15
  194. package/app/api-destined-function/node_modules/rimraf/README.md +0 -101
  195. package/app/api-destined-function/node_modules/rimraf/bin.js +0 -68
  196. package/app/api-destined-function/node_modules/rimraf/package.json +0 -32
  197. package/app/api-destined-function/node_modules/rimraf/rimraf.js +0 -360
  198. package/app/api-destined-function/node_modules/wrappy/LICENSE +0 -15
  199. package/app/api-destined-function/node_modules/wrappy/README.md +0 -36
  200. package/app/api-destined-function/node_modules/wrappy/package.json +0 -29
  201. package/app/api-destined-function/node_modules/wrappy/wrappy.js +0 -33
  202. package/img/ApiToEventBridgeTarget.jpg +0 -0
  203. package/img/GraphQLApiLambda.jpg +0 -0
  204. package/img/logo.png +0 -0
  205. package/theme/styles.css +0 -113
@@ -1,923 +0,0 @@
1
- module.exports = minimatch
2
- minimatch.Minimatch = Minimatch
3
-
4
- var path = { sep: '/' }
5
- try {
6
- path = require('path')
7
- } catch (er) {}
8
-
9
- var GLOBSTAR = minimatch.GLOBSTAR = Minimatch.GLOBSTAR = {}
10
- var expand = require('brace-expansion')
11
-
12
- var plTypes = {
13
- '!': { open: '(?:(?!(?:', close: '))[^/]*?)'},
14
- '?': { open: '(?:', close: ')?' },
15
- '+': { open: '(?:', close: ')+' },
16
- '*': { open: '(?:', close: ')*' },
17
- '@': { open: '(?:', close: ')' }
18
- }
19
-
20
- // any single thing other than /
21
- // don't need to escape / when using new RegExp()
22
- var qmark = '[^/]'
23
-
24
- // * => any number of characters
25
- var star = qmark + '*?'
26
-
27
- // ** when dots are allowed. Anything goes, except .. and .
28
- // not (^ or / followed by one or two dots followed by $ or /),
29
- // followed by anything, any number of times.
30
- var twoStarDot = '(?:(?!(?:\\\/|^)(?:\\.{1,2})($|\\\/)).)*?'
31
-
32
- // not a ^ or / followed by a dot,
33
- // followed by anything, any number of times.
34
- var twoStarNoDot = '(?:(?!(?:\\\/|^)\\.).)*?'
35
-
36
- // characters that need to be escaped in RegExp.
37
- var reSpecials = charSet('().*{}+?[]^$\\!')
38
-
39
- // "abc" -> { a:true, b:true, c:true }
40
- function charSet (s) {
41
- return s.split('').reduce(function (set, c) {
42
- set[c] = true
43
- return set
44
- }, {})
45
- }
46
-
47
- // normalizes slashes.
48
- var slashSplit = /\/+/
49
-
50
- minimatch.filter = filter
51
- function filter (pattern, options) {
52
- options = options || {}
53
- return function (p, i, list) {
54
- return minimatch(p, pattern, options)
55
- }
56
- }
57
-
58
- function ext (a, b) {
59
- a = a || {}
60
- b = b || {}
61
- var t = {}
62
- Object.keys(b).forEach(function (k) {
63
- t[k] = b[k]
64
- })
65
- Object.keys(a).forEach(function (k) {
66
- t[k] = a[k]
67
- })
68
- return t
69
- }
70
-
71
- minimatch.defaults = function (def) {
72
- if (!def || !Object.keys(def).length) return minimatch
73
-
74
- var orig = minimatch
75
-
76
- var m = function minimatch (p, pattern, options) {
77
- return orig.minimatch(p, pattern, ext(def, options))
78
- }
79
-
80
- m.Minimatch = function Minimatch (pattern, options) {
81
- return new orig.Minimatch(pattern, ext(def, options))
82
- }
83
-
84
- return m
85
- }
86
-
87
- Minimatch.defaults = function (def) {
88
- if (!def || !Object.keys(def).length) return Minimatch
89
- return minimatch.defaults(def).Minimatch
90
- }
91
-
92
- function minimatch (p, pattern, options) {
93
- if (typeof pattern !== 'string') {
94
- throw new TypeError('glob pattern string required')
95
- }
96
-
97
- if (!options) options = {}
98
-
99
- // shortcut: comments match nothing.
100
- if (!options.nocomment && pattern.charAt(0) === '#') {
101
- return false
102
- }
103
-
104
- // "" only matches ""
105
- if (pattern.trim() === '') return p === ''
106
-
107
- return new Minimatch(pattern, options).match(p)
108
- }
109
-
110
- function Minimatch (pattern, options) {
111
- if (!(this instanceof Minimatch)) {
112
- return new Minimatch(pattern, options)
113
- }
114
-
115
- if (typeof pattern !== 'string') {
116
- throw new TypeError('glob pattern string required')
117
- }
118
-
119
- if (!options) options = {}
120
- pattern = pattern.trim()
121
-
122
- // windows support: need to use /, not \
123
- if (path.sep !== '/') {
124
- pattern = pattern.split(path.sep).join('/')
125
- }
126
-
127
- this.options = options
128
- this.set = []
129
- this.pattern = pattern
130
- this.regexp = null
131
- this.negate = false
132
- this.comment = false
133
- this.empty = false
134
-
135
- // make the set of regexps etc.
136
- this.make()
137
- }
138
-
139
- Minimatch.prototype.debug = function () {}
140
-
141
- Minimatch.prototype.make = make
142
- function make () {
143
- // don't do it more than once.
144
- if (this._made) return
145
-
146
- var pattern = this.pattern
147
- var options = this.options
148
-
149
- // empty patterns and comments match nothing.
150
- if (!options.nocomment && pattern.charAt(0) === '#') {
151
- this.comment = true
152
- return
153
- }
154
- if (!pattern) {
155
- this.empty = true
156
- return
157
- }
158
-
159
- // step 1: figure out negation, etc.
160
- this.parseNegate()
161
-
162
- // step 2: expand braces
163
- var set = this.globSet = this.braceExpand()
164
-
165
- if (options.debug) this.debug = console.error
166
-
167
- this.debug(this.pattern, set)
168
-
169
- // step 3: now we have a set, so turn each one into a series of path-portion
170
- // matching patterns.
171
- // These will be regexps, except in the case of "**", which is
172
- // set to the GLOBSTAR object for globstar behavior,
173
- // and will not contain any / characters
174
- set = this.globParts = set.map(function (s) {
175
- return s.split(slashSplit)
176
- })
177
-
178
- this.debug(this.pattern, set)
179
-
180
- // glob --> regexps
181
- set = set.map(function (s, si, set) {
182
- return s.map(this.parse, this)
183
- }, this)
184
-
185
- this.debug(this.pattern, set)
186
-
187
- // filter out everything that didn't compile properly.
188
- set = set.filter(function (s) {
189
- return s.indexOf(false) === -1
190
- })
191
-
192
- this.debug(this.pattern, set)
193
-
194
- this.set = set
195
- }
196
-
197
- Minimatch.prototype.parseNegate = parseNegate
198
- function parseNegate () {
199
- var pattern = this.pattern
200
- var negate = false
201
- var options = this.options
202
- var negateOffset = 0
203
-
204
- if (options.nonegate) return
205
-
206
- for (var i = 0, l = pattern.length
207
- ; i < l && pattern.charAt(i) === '!'
208
- ; i++) {
209
- negate = !negate
210
- negateOffset++
211
- }
212
-
213
- if (negateOffset) this.pattern = pattern.substr(negateOffset)
214
- this.negate = negate
215
- }
216
-
217
- // Brace expansion:
218
- // a{b,c}d -> abd acd
219
- // a{b,}c -> abc ac
220
- // a{0..3}d -> a0d a1d a2d a3d
221
- // a{b,c{d,e}f}g -> abg acdfg acefg
222
- // a{b,c}d{e,f}g -> abdeg acdeg abdeg abdfg
223
- //
224
- // Invalid sets are not expanded.
225
- // a{2..}b -> a{2..}b
226
- // a{b}c -> a{b}c
227
- minimatch.braceExpand = function (pattern, options) {
228
- return braceExpand(pattern, options)
229
- }
230
-
231
- Minimatch.prototype.braceExpand = braceExpand
232
-
233
- function braceExpand (pattern, options) {
234
- if (!options) {
235
- if (this instanceof Minimatch) {
236
- options = this.options
237
- } else {
238
- options = {}
239
- }
240
- }
241
-
242
- pattern = typeof pattern === 'undefined'
243
- ? this.pattern : pattern
244
-
245
- if (typeof pattern === 'undefined') {
246
- throw new TypeError('undefined pattern')
247
- }
248
-
249
- if (options.nobrace ||
250
- !pattern.match(/\{.*\}/)) {
251
- // shortcut. no need to expand.
252
- return [pattern]
253
- }
254
-
255
- return expand(pattern)
256
- }
257
-
258
- // parse a component of the expanded set.
259
- // At this point, no pattern may contain "/" in it
260
- // so we're going to return a 2d array, where each entry is the full
261
- // pattern, split on '/', and then turned into a regular expression.
262
- // A regexp is made at the end which joins each array with an
263
- // escaped /, and another full one which joins each regexp with |.
264
- //
265
- // Following the lead of Bash 4.1, note that "**" only has special meaning
266
- // when it is the *only* thing in a path portion. Otherwise, any series
267
- // of * is equivalent to a single *. Globstar behavior is enabled by
268
- // default, and can be disabled by setting options.noglobstar.
269
- Minimatch.prototype.parse = parse
270
- var SUBPARSE = {}
271
- function parse (pattern, isSub) {
272
- if (pattern.length > 1024 * 64) {
273
- throw new TypeError('pattern is too long')
274
- }
275
-
276
- var options = this.options
277
-
278
- // shortcuts
279
- if (!options.noglobstar && pattern === '**') return GLOBSTAR
280
- if (pattern === '') return ''
281
-
282
- var re = ''
283
- var hasMagic = !!options.nocase
284
- var escaping = false
285
- // ? => one single character
286
- var patternListStack = []
287
- var negativeLists = []
288
- var stateChar
289
- var inClass = false
290
- var reClassStart = -1
291
- var classStart = -1
292
- // . and .. never match anything that doesn't start with .,
293
- // even when options.dot is set.
294
- var patternStart = pattern.charAt(0) === '.' ? '' // anything
295
- // not (start or / followed by . or .. followed by / or end)
296
- : options.dot ? '(?!(?:^|\\\/)\\.{1,2}(?:$|\\\/))'
297
- : '(?!\\.)'
298
- var self = this
299
-
300
- function clearStateChar () {
301
- if (stateChar) {
302
- // we had some state-tracking character
303
- // that wasn't consumed by this pass.
304
- switch (stateChar) {
305
- case '*':
306
- re += star
307
- hasMagic = true
308
- break
309
- case '?':
310
- re += qmark
311
- hasMagic = true
312
- break
313
- default:
314
- re += '\\' + stateChar
315
- break
316
- }
317
- self.debug('clearStateChar %j %j', stateChar, re)
318
- stateChar = false
319
- }
320
- }
321
-
322
- for (var i = 0, len = pattern.length, c
323
- ; (i < len) && (c = pattern.charAt(i))
324
- ; i++) {
325
- this.debug('%s\t%s %s %j', pattern, i, re, c)
326
-
327
- // skip over any that are escaped.
328
- if (escaping && reSpecials[c]) {
329
- re += '\\' + c
330
- escaping = false
331
- continue
332
- }
333
-
334
- switch (c) {
335
- case '/':
336
- // completely not allowed, even escaped.
337
- // Should already be path-split by now.
338
- return false
339
-
340
- case '\\':
341
- clearStateChar()
342
- escaping = true
343
- continue
344
-
345
- // the various stateChar values
346
- // for the "extglob" stuff.
347
- case '?':
348
- case '*':
349
- case '+':
350
- case '@':
351
- case '!':
352
- this.debug('%s\t%s %s %j <-- stateChar', pattern, i, re, c)
353
-
354
- // all of those are literals inside a class, except that
355
- // the glob [!a] means [^a] in regexp
356
- if (inClass) {
357
- this.debug(' in class')
358
- if (c === '!' && i === classStart + 1) c = '^'
359
- re += c
360
- continue
361
- }
362
-
363
- // if we already have a stateChar, then it means
364
- // that there was something like ** or +? in there.
365
- // Handle the stateChar, then proceed with this one.
366
- self.debug('call clearStateChar %j', stateChar)
367
- clearStateChar()
368
- stateChar = c
369
- // if extglob is disabled, then +(asdf|foo) isn't a thing.
370
- // just clear the statechar *now*, rather than even diving into
371
- // the patternList stuff.
372
- if (options.noext) clearStateChar()
373
- continue
374
-
375
- case '(':
376
- if (inClass) {
377
- re += '('
378
- continue
379
- }
380
-
381
- if (!stateChar) {
382
- re += '\\('
383
- continue
384
- }
385
-
386
- patternListStack.push({
387
- type: stateChar,
388
- start: i - 1,
389
- reStart: re.length,
390
- open: plTypes[stateChar].open,
391
- close: plTypes[stateChar].close
392
- })
393
- // negation is (?:(?!js)[^/]*)
394
- re += stateChar === '!' ? '(?:(?!(?:' : '(?:'
395
- this.debug('plType %j %j', stateChar, re)
396
- stateChar = false
397
- continue
398
-
399
- case ')':
400
- if (inClass || !patternListStack.length) {
401
- re += '\\)'
402
- continue
403
- }
404
-
405
- clearStateChar()
406
- hasMagic = true
407
- var pl = patternListStack.pop()
408
- // negation is (?:(?!js)[^/]*)
409
- // The others are (?:<pattern>)<type>
410
- re += pl.close
411
- if (pl.type === '!') {
412
- negativeLists.push(pl)
413
- }
414
- pl.reEnd = re.length
415
- continue
416
-
417
- case '|':
418
- if (inClass || !patternListStack.length || escaping) {
419
- re += '\\|'
420
- escaping = false
421
- continue
422
- }
423
-
424
- clearStateChar()
425
- re += '|'
426
- continue
427
-
428
- // these are mostly the same in regexp and glob
429
- case '[':
430
- // swallow any state-tracking char before the [
431
- clearStateChar()
432
-
433
- if (inClass) {
434
- re += '\\' + c
435
- continue
436
- }
437
-
438
- inClass = true
439
- classStart = i
440
- reClassStart = re.length
441
- re += c
442
- continue
443
-
444
- case ']':
445
- // a right bracket shall lose its special
446
- // meaning and represent itself in
447
- // a bracket expression if it occurs
448
- // first in the list. -- POSIX.2 2.8.3.2
449
- if (i === classStart + 1 || !inClass) {
450
- re += '\\' + c
451
- escaping = false
452
- continue
453
- }
454
-
455
- // handle the case where we left a class open.
456
- // "[z-a]" is valid, equivalent to "\[z-a\]"
457
- if (inClass) {
458
- // split where the last [ was, make sure we don't have
459
- // an invalid re. if so, re-walk the contents of the
460
- // would-be class to re-translate any characters that
461
- // were passed through as-is
462
- // TODO: It would probably be faster to determine this
463
- // without a try/catch and a new RegExp, but it's tricky
464
- // to do safely. For now, this is safe and works.
465
- var cs = pattern.substring(classStart + 1, i)
466
- try {
467
- RegExp('[' + cs + ']')
468
- } catch (er) {
469
- // not a valid class!
470
- var sp = this.parse(cs, SUBPARSE)
471
- re = re.substr(0, reClassStart) + '\\[' + sp[0] + '\\]'
472
- hasMagic = hasMagic || sp[1]
473
- inClass = false
474
- continue
475
- }
476
- }
477
-
478
- // finish up the class.
479
- hasMagic = true
480
- inClass = false
481
- re += c
482
- continue
483
-
484
- default:
485
- // swallow any state char that wasn't consumed
486
- clearStateChar()
487
-
488
- if (escaping) {
489
- // no need
490
- escaping = false
491
- } else if (reSpecials[c]
492
- && !(c === '^' && inClass)) {
493
- re += '\\'
494
- }
495
-
496
- re += c
497
-
498
- } // switch
499
- } // for
500
-
501
- // handle the case where we left a class open.
502
- // "[abc" is valid, equivalent to "\[abc"
503
- if (inClass) {
504
- // split where the last [ was, and escape it
505
- // this is a huge pita. We now have to re-walk
506
- // the contents of the would-be class to re-translate
507
- // any characters that were passed through as-is
508
- cs = pattern.substr(classStart + 1)
509
- sp = this.parse(cs, SUBPARSE)
510
- re = re.substr(0, reClassStart) + '\\[' + sp[0]
511
- hasMagic = hasMagic || sp[1]
512
- }
513
-
514
- // handle the case where we had a +( thing at the *end*
515
- // of the pattern.
516
- // each pattern list stack adds 3 chars, and we need to go through
517
- // and escape any | chars that were passed through as-is for the regexp.
518
- // Go through and escape them, taking care not to double-escape any
519
- // | chars that were already escaped.
520
- for (pl = patternListStack.pop(); pl; pl = patternListStack.pop()) {
521
- var tail = re.slice(pl.reStart + pl.open.length)
522
- this.debug('setting tail', re, pl)
523
- // maybe some even number of \, then maybe 1 \, followed by a |
524
- tail = tail.replace(/((?:\\{2}){0,64})(\\?)\|/g, function (_, $1, $2) {
525
- if (!$2) {
526
- // the | isn't already escaped, so escape it.
527
- $2 = '\\'
528
- }
529
-
530
- // need to escape all those slashes *again*, without escaping the
531
- // one that we need for escaping the | character. As it works out,
532
- // escaping an even number of slashes can be done by simply repeating
533
- // it exactly after itself. That's why this trick works.
534
- //
535
- // I am sorry that you have to see this.
536
- return $1 + $1 + $2 + '|'
537
- })
538
-
539
- this.debug('tail=%j\n %s', tail, tail, pl, re)
540
- var t = pl.type === '*' ? star
541
- : pl.type === '?' ? qmark
542
- : '\\' + pl.type
543
-
544
- hasMagic = true
545
- re = re.slice(0, pl.reStart) + t + '\\(' + tail
546
- }
547
-
548
- // handle trailing things that only matter at the very end.
549
- clearStateChar()
550
- if (escaping) {
551
- // trailing \\
552
- re += '\\\\'
553
- }
554
-
555
- // only need to apply the nodot start if the re starts with
556
- // something that could conceivably capture a dot
557
- var addPatternStart = false
558
- switch (re.charAt(0)) {
559
- case '.':
560
- case '[':
561
- case '(': addPatternStart = true
562
- }
563
-
564
- // Hack to work around lack of negative lookbehind in JS
565
- // A pattern like: *.!(x).!(y|z) needs to ensure that a name
566
- // like 'a.xyz.yz' doesn't match. So, the first negative
567
- // lookahead, has to look ALL the way ahead, to the end of
568
- // the pattern.
569
- for (var n = negativeLists.length - 1; n > -1; n--) {
570
- var nl = negativeLists[n]
571
-
572
- var nlBefore = re.slice(0, nl.reStart)
573
- var nlFirst = re.slice(nl.reStart, nl.reEnd - 8)
574
- var nlLast = re.slice(nl.reEnd - 8, nl.reEnd)
575
- var nlAfter = re.slice(nl.reEnd)
576
-
577
- nlLast += nlAfter
578
-
579
- // Handle nested stuff like *(*.js|!(*.json)), where open parens
580
- // mean that we should *not* include the ) in the bit that is considered
581
- // "after" the negated section.
582
- var openParensBefore = nlBefore.split('(').length - 1
583
- var cleanAfter = nlAfter
584
- for (i = 0; i < openParensBefore; i++) {
585
- cleanAfter = cleanAfter.replace(/\)[+*?]?/, '')
586
- }
587
- nlAfter = cleanAfter
588
-
589
- var dollar = ''
590
- if (nlAfter === '' && isSub !== SUBPARSE) {
591
- dollar = '$'
592
- }
593
- var newRe = nlBefore + nlFirst + nlAfter + dollar + nlLast
594
- re = newRe
595
- }
596
-
597
- // if the re is not "" at this point, then we need to make sure
598
- // it doesn't match against an empty path part.
599
- // Otherwise a/* will match a/, which it should not.
600
- if (re !== '' && hasMagic) {
601
- re = '(?=.)' + re
602
- }
603
-
604
- if (addPatternStart) {
605
- re = patternStart + re
606
- }
607
-
608
- // parsing just a piece of a larger pattern.
609
- if (isSub === SUBPARSE) {
610
- return [re, hasMagic]
611
- }
612
-
613
- // skip the regexp for non-magical patterns
614
- // unescape anything in it, though, so that it'll be
615
- // an exact match against a file etc.
616
- if (!hasMagic) {
617
- return globUnescape(pattern)
618
- }
619
-
620
- var flags = options.nocase ? 'i' : ''
621
- try {
622
- var regExp = new RegExp('^' + re + '$', flags)
623
- } catch (er) {
624
- // If it was an invalid regular expression, then it can't match
625
- // anything. This trick looks for a character after the end of
626
- // the string, which is of course impossible, except in multi-line
627
- // mode, but it's not a /m regex.
628
- return new RegExp('$.')
629
- }
630
-
631
- regExp._glob = pattern
632
- regExp._src = re
633
-
634
- return regExp
635
- }
636
-
637
- minimatch.makeRe = function (pattern, options) {
638
- return new Minimatch(pattern, options || {}).makeRe()
639
- }
640
-
641
- Minimatch.prototype.makeRe = makeRe
642
- function makeRe () {
643
- if (this.regexp || this.regexp === false) return this.regexp
644
-
645
- // at this point, this.set is a 2d array of partial
646
- // pattern strings, or "**".
647
- //
648
- // It's better to use .match(). This function shouldn't
649
- // be used, really, but it's pretty convenient sometimes,
650
- // when you just want to work with a regex.
651
- var set = this.set
652
-
653
- if (!set.length) {
654
- this.regexp = false
655
- return this.regexp
656
- }
657
- var options = this.options
658
-
659
- var twoStar = options.noglobstar ? star
660
- : options.dot ? twoStarDot
661
- : twoStarNoDot
662
- var flags = options.nocase ? 'i' : ''
663
-
664
- var re = set.map(function (pattern) {
665
- return pattern.map(function (p) {
666
- return (p === GLOBSTAR) ? twoStar
667
- : (typeof p === 'string') ? regExpEscape(p)
668
- : p._src
669
- }).join('\\\/')
670
- }).join('|')
671
-
672
- // must match entire pattern
673
- // ending in a * or ** will make it less strict.
674
- re = '^(?:' + re + ')$'
675
-
676
- // can match anything, as long as it's not this.
677
- if (this.negate) re = '^(?!' + re + ').*$'
678
-
679
- try {
680
- this.regexp = new RegExp(re, flags)
681
- } catch (ex) {
682
- this.regexp = false
683
- }
684
- return this.regexp
685
- }
686
-
687
- minimatch.match = function (list, pattern, options) {
688
- options = options || {}
689
- var mm = new Minimatch(pattern, options)
690
- list = list.filter(function (f) {
691
- return mm.match(f)
692
- })
693
- if (mm.options.nonull && !list.length) {
694
- list.push(pattern)
695
- }
696
- return list
697
- }
698
-
699
- Minimatch.prototype.match = match
700
- function match (f, partial) {
701
- this.debug('match', f, this.pattern)
702
- // short-circuit in the case of busted things.
703
- // comments, etc.
704
- if (this.comment) return false
705
- if (this.empty) return f === ''
706
-
707
- if (f === '/' && partial) return true
708
-
709
- var options = this.options
710
-
711
- // windows: need to use /, not \
712
- if (path.sep !== '/') {
713
- f = f.split(path.sep).join('/')
714
- }
715
-
716
- // treat the test path as a set of pathparts.
717
- f = f.split(slashSplit)
718
- this.debug(this.pattern, 'split', f)
719
-
720
- // just ONE of the pattern sets in this.set needs to match
721
- // in order for it to be valid. If negating, then just one
722
- // match means that we have failed.
723
- // Either way, return on the first hit.
724
-
725
- var set = this.set
726
- this.debug(this.pattern, 'set', set)
727
-
728
- // Find the basename of the path by looking for the last non-empty segment
729
- var filename
730
- var i
731
- for (i = f.length - 1; i >= 0; i--) {
732
- filename = f[i]
733
- if (filename) break
734
- }
735
-
736
- for (i = 0; i < set.length; i++) {
737
- var pattern = set[i]
738
- var file = f
739
- if (options.matchBase && pattern.length === 1) {
740
- file = [filename]
741
- }
742
- var hit = this.matchOne(file, pattern, partial)
743
- if (hit) {
744
- if (options.flipNegate) return true
745
- return !this.negate
746
- }
747
- }
748
-
749
- // didn't get any hits. this is success if it's a negative
750
- // pattern, failure otherwise.
751
- if (options.flipNegate) return false
752
- return this.negate
753
- }
754
-
755
- // set partial to true to test if, for example,
756
- // "/a/b" matches the start of "/*/b/*/d"
757
- // Partial means, if you run out of file before you run
758
- // out of pattern, then that's fine, as long as all
759
- // the parts match.
760
- Minimatch.prototype.matchOne = function (file, pattern, partial) {
761
- var options = this.options
762
-
763
- this.debug('matchOne',
764
- { 'this': this, file: file, pattern: pattern })
765
-
766
- this.debug('matchOne', file.length, pattern.length)
767
-
768
- for (var fi = 0,
769
- pi = 0,
770
- fl = file.length,
771
- pl = pattern.length
772
- ; (fi < fl) && (pi < pl)
773
- ; fi++, pi++) {
774
- this.debug('matchOne loop')
775
- var p = pattern[pi]
776
- var f = file[fi]
777
-
778
- this.debug(pattern, p, f)
779
-
780
- // should be impossible.
781
- // some invalid regexp stuff in the set.
782
- if (p === false) return false
783
-
784
- if (p === GLOBSTAR) {
785
- this.debug('GLOBSTAR', [pattern, p, f])
786
-
787
- // "**"
788
- // a/**/b/**/c would match the following:
789
- // a/b/x/y/z/c
790
- // a/x/y/z/b/c
791
- // a/b/x/b/x/c
792
- // a/b/c
793
- // To do this, take the rest of the pattern after
794
- // the **, and see if it would match the file remainder.
795
- // If so, return success.
796
- // If not, the ** "swallows" a segment, and try again.
797
- // This is recursively awful.
798
- //
799
- // a/**/b/**/c matching a/b/x/y/z/c
800
- // - a matches a
801
- // - doublestar
802
- // - matchOne(b/x/y/z/c, b/**/c)
803
- // - b matches b
804
- // - doublestar
805
- // - matchOne(x/y/z/c, c) -> no
806
- // - matchOne(y/z/c, c) -> no
807
- // - matchOne(z/c, c) -> no
808
- // - matchOne(c, c) yes, hit
809
- var fr = fi
810
- var pr = pi + 1
811
- if (pr === pl) {
812
- this.debug('** at the end')
813
- // a ** at the end will just swallow the rest.
814
- // We have found a match.
815
- // however, it will not swallow /.x, unless
816
- // options.dot is set.
817
- // . and .. are *never* matched by **, for explosively
818
- // exponential reasons.
819
- for (; fi < fl; fi++) {
820
- if (file[fi] === '.' || file[fi] === '..' ||
821
- (!options.dot && file[fi].charAt(0) === '.')) return false
822
- }
823
- return true
824
- }
825
-
826
- // ok, let's see if we can swallow whatever we can.
827
- while (fr < fl) {
828
- var swallowee = file[fr]
829
-
830
- this.debug('\nglobstar while', file, fr, pattern, pr, swallowee)
831
-
832
- // XXX remove this slice. Just pass the start index.
833
- if (this.matchOne(file.slice(fr), pattern.slice(pr), partial)) {
834
- this.debug('globstar found match!', fr, fl, swallowee)
835
- // found a match.
836
- return true
837
- } else {
838
- // can't swallow "." or ".." ever.
839
- // can only swallow ".foo" when explicitly asked.
840
- if (swallowee === '.' || swallowee === '..' ||
841
- (!options.dot && swallowee.charAt(0) === '.')) {
842
- this.debug('dot detected!', file, fr, pattern, pr)
843
- break
844
- }
845
-
846
- // ** swallows a segment, and continue.
847
- this.debug('globstar swallow a segment, and continue')
848
- fr++
849
- }
850
- }
851
-
852
- // no match was found.
853
- // However, in partial mode, we can't say this is necessarily over.
854
- // If there's more *pattern* left, then
855
- if (partial) {
856
- // ran out of file
857
- this.debug('\n>>> no match, partial?', file, fr, pattern, pr)
858
- if (fr === fl) return true
859
- }
860
- return false
861
- }
862
-
863
- // something other than **
864
- // non-magic patterns just have to match exactly
865
- // patterns with magic have been turned into regexps.
866
- var hit
867
- if (typeof p === 'string') {
868
- if (options.nocase) {
869
- hit = f.toLowerCase() === p.toLowerCase()
870
- } else {
871
- hit = f === p
872
- }
873
- this.debug('string match', p, f, hit)
874
- } else {
875
- hit = f.match(p)
876
- this.debug('pattern match', p, f, hit)
877
- }
878
-
879
- if (!hit) return false
880
- }
881
-
882
- // Note: ending in / means that we'll get a final ""
883
- // at the end of the pattern. This can only match a
884
- // corresponding "" at the end of the file.
885
- // If the file ends in /, then it can only match a
886
- // a pattern that ends in /, unless the pattern just
887
- // doesn't have any more for it. But, a/b/ should *not*
888
- // match "a/b/*", even though "" matches against the
889
- // [^/]*? pattern, except in partial mode, where it might
890
- // simply not be reached yet.
891
- // However, a/b/ should still satisfy a/*
892
-
893
- // now either we fell off the end of the pattern, or we're done.
894
- if (fi === fl && pi === pl) {
895
- // ran out of pattern and filename at the same time.
896
- // an exact hit!
897
- return true
898
- } else if (fi === fl) {
899
- // ran out of file, but still had pattern left.
900
- // this is ok if we're doing the match as part of
901
- // a glob fs traversal.
902
- return partial
903
- } else if (pi === pl) {
904
- // ran out of pattern, still have file left.
905
- // this is only acceptable if we're on the very last
906
- // empty segment of a file with a trailing slash.
907
- // a/* should match a/b/
908
- var emptyFileEnd = (fi === fl - 1) && (file[fi] === '')
909
- return emptyFileEnd
910
- }
911
-
912
- // should be unreachable.
913
- throw new Error('wtf?')
914
- }
915
-
916
- // replace stuff like \* with *
917
- function globUnescape (s) {
918
- return s.replace(/\\(.)/g, '$1')
919
- }
920
-
921
- function regExpEscape (s) {
922
- return s.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&')
923
- }