@hakobu/hakobu 1.0.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 (284) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +673 -0
  3. package/dictionary/angular-bridge.js +3 -0
  4. package/dictionary/any-promise.js +3 -0
  5. package/dictionary/async.js +3 -0
  6. package/dictionary/aws-sdk.js +7 -0
  7. package/dictionary/babel-core.js +3 -0
  8. package/dictionary/batch.js +3 -0
  9. package/dictionary/bcrypt.js +3 -0
  10. package/dictionary/better-sqlite3.js +3 -0
  11. package/dictionary/bignum.js +3 -0
  12. package/dictionary/bindings.js +3 -0
  13. package/dictionary/blessed.js +8 -0
  14. package/dictionary/body-parser.js +9 -0
  15. package/dictionary/browserify.js +7 -0
  16. package/dictionary/bson.js +3 -0
  17. package/dictionary/buffermaker.js +7 -0
  18. package/dictionary/bunyan.js +9 -0
  19. package/dictionary/busboy.js +7 -0
  20. package/dictionary/bytes.js +3 -0
  21. package/dictionary/callsites.js +3 -0
  22. package/dictionary/chokidar.js +3 -0
  23. package/dictionary/coffee-script.js +7 -0
  24. package/dictionary/colors.js +3 -0
  25. package/dictionary/compression.js +3 -0
  26. package/dictionary/compressjs.js +7 -0
  27. package/dictionary/connect-mongo.js +3 -0
  28. package/dictionary/connect-mongodb.js +3 -0
  29. package/dictionary/connect-redis.js +3 -0
  30. package/dictionary/connect.js +10 -0
  31. package/dictionary/consolidate.js +3 -0
  32. package/dictionary/cookie-parser.js +3 -0
  33. package/dictionary/cookie.js +3 -0
  34. package/dictionary/cors.js +3 -0
  35. package/dictionary/cron.js +3 -0
  36. package/dictionary/cross-env.js +11 -0
  37. package/dictionary/cross-spawn-async.js +3 -0
  38. package/dictionary/curve25519.js +3 -0
  39. package/dictionary/data-preflight.js +7 -0
  40. package/dictionary/debug.js +3 -0
  41. package/dictionary/denymount.js +3 -0
  42. package/dictionary/diff.js +3 -0
  43. package/dictionary/drivelist.js +22 -0
  44. package/dictionary/ed25519.js +3 -0
  45. package/dictionary/ejs.js +3 -0
  46. package/dictionary/elasticsearch.js +3 -0
  47. package/dictionary/electron.js +17 -0
  48. package/dictionary/emailjs.js +3 -0
  49. package/dictionary/engine.io.js +3 -0
  50. package/dictionary/epoll.js +3 -0
  51. package/dictionary/errorhandler.js +7 -0
  52. package/dictionary/errors.js +7 -0
  53. package/dictionary/eslint.js +7 -0
  54. package/dictionary/etcher-image-write.js +3 -0
  55. package/dictionary/exceljs.js +21 -0
  56. package/dictionary/exiftool.exe.js +13 -0
  57. package/dictionary/exiftool.pl.js +13 -0
  58. package/dictionary/express-load.js +12 -0
  59. package/dictionary/express-session.js +3 -0
  60. package/dictionary/express.js +14 -0
  61. package/dictionary/extender.js +11 -0
  62. package/dictionary/extsprintf.js +3 -0
  63. package/dictionary/faye-websocket.js +3 -0
  64. package/dictionary/feathers.js +3 -0
  65. package/dictionary/findup-sync.js +3 -0
  66. package/dictionary/floordate.js +3 -0
  67. package/dictionary/fmt.js +3 -0
  68. package/dictionary/formidable.js +3 -0
  69. package/dictionary/fs-extra.js +3 -0
  70. package/dictionary/fsevents.js +3 -0
  71. package/dictionary/geoip-lite.js +7 -0
  72. package/dictionary/github.js +7 -0
  73. package/dictionary/gm.js +3 -0
  74. package/dictionary/google-closure-compiler-java.js +13 -0
  75. package/dictionary/google-closure-compiler.js +13 -0
  76. package/dictionary/googleapis.js +7 -0
  77. package/dictionary/got.js +3 -0
  78. package/dictionary/graceful-fs.js +19 -0
  79. package/dictionary/grpc.js +11 -0
  80. package/dictionary/gulp.js +3 -0
  81. package/dictionary/hap-nodejs.js +3 -0
  82. package/dictionary/heapdump.js +3 -0
  83. package/dictionary/hoek.js +3 -0
  84. package/dictionary/homebridge.js +3 -0
  85. package/dictionary/http-proxy.js +3 -0
  86. package/dictionary/http-server.js +3 -0
  87. package/dictionary/image-size.js +3 -0
  88. package/dictionary/indexof.js +3 -0
  89. package/dictionary/inquirer.js +3 -0
  90. package/dictionary/j.js +16 -0
  91. package/dictionary/jade.js +3 -0
  92. package/dictionary/jsdom.js +3 -0
  93. package/dictionary/json-stringify-date.js +3 -0
  94. package/dictionary/json-stringify-safe.js +3 -0
  95. package/dictionary/jsonwebtoken.js +3 -0
  96. package/dictionary/kerberos.js +3 -0
  97. package/dictionary/knex.js +7 -0
  98. package/dictionary/later.js +7 -0
  99. package/dictionary/level.js +3 -0
  100. package/dictionary/leveldown.js +10 -0
  101. package/dictionary/levelup.js +3 -0
  102. package/dictionary/liftoff.js +12 -0
  103. package/dictionary/lodash.js +3 -0
  104. package/dictionary/log4js.js +7 -0
  105. package/dictionary/logform.js +7 -0
  106. package/dictionary/machinepack-urls.js +7 -0
  107. package/dictionary/markdown.js +3 -0
  108. package/dictionary/mdns.js +6 -0
  109. package/dictionary/method-override.js +3 -0
  110. package/dictionary/microjob.js +16 -0
  111. package/dictionary/mime-types.js +3 -0
  112. package/dictionary/mime.js +3 -0
  113. package/dictionary/minimatch.js +3 -0
  114. package/dictionary/minstache.js +3 -0
  115. package/dictionary/module-deps.js +3 -0
  116. package/dictionary/moment-timezone.js +3 -0
  117. package/dictionary/moment.js +7 -0
  118. package/dictionary/mongodb-core.js +22 -0
  119. package/dictionary/mongodb.js +7 -0
  120. package/dictionary/mongoose.js +7 -0
  121. package/dictionary/mongoskin.js +7 -0
  122. package/dictionary/ms.js +3 -0
  123. package/dictionary/msgpack.js +3 -0
  124. package/dictionary/multer.js +3 -0
  125. package/dictionary/muri.js +3 -0
  126. package/dictionary/native-or-bluebird.js +3 -0
  127. package/dictionary/natives.js +3 -0
  128. package/dictionary/nconf.js +7 -0
  129. package/dictionary/nedb.js +3 -0
  130. package/dictionary/negotiator.js +7 -0
  131. package/dictionary/newrelic.js +3 -0
  132. package/dictionary/nib.js +3 -0
  133. package/dictionary/nightmare.js +18 -0
  134. package/dictionary/node-forge.js +7 -0
  135. package/dictionary/node-libcurl.js +3 -0
  136. package/dictionary/node-notifier.js +30 -0
  137. package/dictionary/node-pre-gyp.js +7 -0
  138. package/dictionary/node-redis-pubsub.js +3 -0
  139. package/dictionary/node-sass.js +3 -0
  140. package/dictionary/node-uuid.js +3 -0
  141. package/dictionary/node-xlsx.js +3 -0
  142. package/dictionary/node-zookeeper-client.js +7 -0
  143. package/dictionary/nodegit.js +7 -0
  144. package/dictionary/nodemailer-sendmail-transport.js +3 -0
  145. package/dictionary/nodemailer.js +3 -0
  146. package/dictionary/npm-registry-client.js +7 -0
  147. package/dictionary/npm.js +7 -0
  148. package/dictionary/nssocket.js +3 -0
  149. package/dictionary/oauth2orize.js +7 -0
  150. package/dictionary/octobat.js +3 -0
  151. package/dictionary/open.js +13 -0
  152. package/dictionary/opn.js +4 -0
  153. package/dictionary/optimist.js +3 -0
  154. package/dictionary/passport-local.js +3 -0
  155. package/dictionary/passport.js +3 -0
  156. package/dictionary/pg-cursor.js +3 -0
  157. package/dictionary/pg-query-stream.js +3 -0
  158. package/dictionary/pg-types.js +7 -0
  159. package/dictionary/pg.js +7 -0
  160. package/dictionary/pg.js.js +7 -0
  161. package/dictionary/pgpass.js +7 -0
  162. package/dictionary/phantom.js +19 -0
  163. package/dictionary/phantomjs-prebuilt.js +16 -0
  164. package/dictionary/pkginfo.js +3 -0
  165. package/dictionary/pm2.js +7 -0
  166. package/dictionary/pmx.js +3 -0
  167. package/dictionary/pouchdb.js +3 -0
  168. package/dictionary/primus-emitter.js +3 -0
  169. package/dictionary/primus-spark-latency.js +3 -0
  170. package/dictionary/primus.js +3 -0
  171. package/dictionary/publicsuffixlist.js +15 -0
  172. package/dictionary/pug.js +3 -0
  173. package/dictionary/punt.js +3 -0
  174. package/dictionary/puppeteer.js +13 -0
  175. package/dictionary/pwd.js +3 -0
  176. package/dictionary/q.js +3 -0
  177. package/dictionary/raven.js +3 -0
  178. package/dictionary/rc.js +12 -0
  179. package/dictionary/readable-stream.js +3 -0
  180. package/dictionary/rechoir.js +3 -0
  181. package/dictionary/redis-parser.js +3 -0
  182. package/dictionary/redis.js +3 -0
  183. package/dictionary/regression.js +3 -0
  184. package/dictionary/reload.js +7 -0
  185. package/dictionary/request.js +3 -0
  186. package/dictionary/require-uncached.js +3 -0
  187. package/dictionary/require_optional.js +3 -0
  188. package/dictionary/s3.js +3 -0
  189. package/dictionary/safe_datejs.js +3 -0
  190. package/dictionary/sails.js +33 -0
  191. package/dictionary/sax.js +3 -0
  192. package/dictionary/scrypt.js +3 -0
  193. package/dictionary/semver.js +3 -0
  194. package/dictionary/sequelize.js +7 -0
  195. package/dictionary/serialport.js +3 -0
  196. package/dictionary/sha3.js +3 -0
  197. package/dictionary/sharp.js +11 -0
  198. package/dictionary/shelljs.js +7 -0
  199. package/dictionary/sinon.js +3 -0
  200. package/dictionary/socket.io-client.js +13 -0
  201. package/dictionary/socket.io.js +12 -0
  202. package/dictionary/sqip.js +7 -0
  203. package/dictionary/sqlite3.js +7 -0
  204. package/dictionary/steam-crypto.js +7 -0
  205. package/dictionary/steam-resources.js +19 -0
  206. package/dictionary/steam.js +3 -0
  207. package/dictionary/stripe-webhook-middleware.js +3 -0
  208. package/dictionary/stripe.js +3 -0
  209. package/dictionary/strong-globalize.js +3 -0
  210. package/dictionary/stylus.js +14 -0
  211. package/dictionary/supervisor.js +3 -0
  212. package/dictionary/svgo.js +8 -0
  213. package/dictionary/tabtab.js +3 -0
  214. package/dictionary/tesseract.js.js +7 -0
  215. package/dictionary/thread-stream.js +7 -0
  216. package/dictionary/throng.js +3 -0
  217. package/dictionary/time.js +3 -0
  218. package/dictionary/tinify.js +7 -0
  219. package/dictionary/tiny-worker.js +7 -0
  220. package/dictionary/tmp.js +3 -0
  221. package/dictionary/transformers.js +3 -0
  222. package/dictionary/uglify-js.js +9 -0
  223. package/dictionary/umd.js +19 -0
  224. package/dictionary/underscore.js +3 -0
  225. package/dictionary/union.js +3 -0
  226. package/dictionary/update-notifier.js +3 -0
  227. package/dictionary/usage.js +7 -0
  228. package/dictionary/v8flags.js +13 -0
  229. package/dictionary/verror.js +3 -0
  230. package/dictionary/voc.js +3 -0
  231. package/dictionary/webdriverio.js +7 -0
  232. package/dictionary/winston-uber.js +7 -0
  233. package/dictionary/winston.js +7 -0
  234. package/dictionary/ws.js +3 -0
  235. package/dictionary/xlsx.js +16 -0
  236. package/dictionary/xml2js.js +3 -0
  237. package/dictionary/yargs.js +3 -0
  238. package/dictionary/zeromq.js +13 -0
  239. package/lib-es5/addon-extract.js +164 -0
  240. package/lib-es5/analyzer.js +687 -0
  241. package/lib-es5/app-bundle.js +133 -0
  242. package/lib-es5/appdir.js +265 -0
  243. package/lib-es5/bin.js +304 -0
  244. package/lib-es5/bootstrap.js +179 -0
  245. package/lib-es5/bundler.js +496 -0
  246. package/lib-es5/chmod.js +15 -0
  247. package/lib-es5/colors.js +12 -0
  248. package/lib-es5/commands.js +376 -0
  249. package/lib-es5/common.js +328 -0
  250. package/lib-es5/compress_type.js +10 -0
  251. package/lib-es5/config.js +291 -0
  252. package/lib-es5/detector.js +421 -0
  253. package/lib-es5/esm-hooks.js +366 -0
  254. package/lib-es5/esm-resolver.js +292 -0
  255. package/lib-es5/esm-transformer.js +378 -0
  256. package/lib-es5/exports-resolver.js +184 -0
  257. package/lib-es5/external-artifacts.js +170 -0
  258. package/lib-es5/fabricator.js +137 -0
  259. package/lib-es5/follow.js +190 -0
  260. package/lib-es5/help.js +52 -0
  261. package/lib-es5/index.d.ts +2 -0
  262. package/lib-es5/index.js +552 -0
  263. package/lib-es5/log.js +7 -0
  264. package/lib-es5/mach-o.js +262 -0
  265. package/lib-es5/manifest.js +21 -0
  266. package/lib-es5/options.js +19 -0
  267. package/lib-es5/packager.js +1036 -0
  268. package/lib-es5/packer.js +137 -0
  269. package/lib-es5/pe-metadata.js +130 -0
  270. package/lib-es5/producer.js +378 -0
  271. package/lib-es5/refiner.js +87 -0
  272. package/lib-es5/resolver.js +142 -0
  273. package/lib-es5/runtime-diagnostics.js +172 -0
  274. package/lib-es5/sea.js +307 -0
  275. package/lib-es5/snapshot-fs-patch.js +396 -0
  276. package/lib-es5/snapshot-fs.js +255 -0
  277. package/lib-es5/snapshot-index.js +135 -0
  278. package/lib-es5/snapshot-path.js +168 -0
  279. package/lib-es5/types.js +9 -0
  280. package/lib-es5/walker.js +1019 -0
  281. package/lib-es5/windows-sign.js +139 -0
  282. package/package.json +99 -0
  283. package/prelude/bootstrap.js +2263 -0
  284. package/prelude/diagnostic.js +147 -0
@@ -0,0 +1,421 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ var __importDefault = (this && this.__importDefault) || function (mod) {
26
+ return (mod && mod.__esModule) ? mod : { "default": mod };
27
+ };
28
+ Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.detect = exports.parse = exports.visitorUseSCWD = exports.visitorMalformed = exports.visitorNonLiteral = exports.visitorSuccessful = void 0;
30
+ const babelTypes = __importStar(require("@babel/types"));
31
+ const babel = __importStar(require("@babel/parser"));
32
+ const generator_1 = __importDefault(require("@babel/generator"));
33
+ const log_1 = require("./log");
34
+ const common_1 = require("./common");
35
+ function isLiteral(node) {
36
+ if (node == null) {
37
+ return false;
38
+ }
39
+ if (!node.type.endsWith('Literal')) {
40
+ return false;
41
+ }
42
+ if (node.type === 'TemplateLiteral' && node.expressions.length !== 0) {
43
+ return false;
44
+ }
45
+ return true;
46
+ }
47
+ function getLiteralValue(node) {
48
+ if (node.type === 'TemplateLiteral') {
49
+ return node.quasis[0].value.raw;
50
+ }
51
+ if (node.type === 'NullLiteral') {
52
+ throw new Error('Unexpected null in require expression');
53
+ }
54
+ if (node.type === 'RegExpLiteral') {
55
+ throw new Error('Unexpected regexp in require expression');
56
+ }
57
+ return node.value;
58
+ }
59
+ function reconstructSpecifiers(specs) {
60
+ if (!specs || !specs.length) {
61
+ return '';
62
+ }
63
+ const defaults = [];
64
+ for (const spec of specs) {
65
+ if (babelTypes.isImportDefaultSpecifier(spec)) {
66
+ defaults.push(spec.local.name);
67
+ }
68
+ }
69
+ const nonDefaults = [];
70
+ for (const spec of specs) {
71
+ if (babelTypes.isImportSpecifier(spec)) {
72
+ const importedName = babelTypes.isIdentifier(spec.imported)
73
+ ? spec.imported.name
74
+ : spec.imported.value;
75
+ if (spec.local.name === importedName) {
76
+ nonDefaults.push(spec.local.name);
77
+ }
78
+ else {
79
+ nonDefaults.push(`${importedName} as ${spec.local.name}`);
80
+ }
81
+ }
82
+ }
83
+ if (nonDefaults.length) {
84
+ defaults.push(`{ ${nonDefaults.join(', ')} }`);
85
+ }
86
+ return defaults.join(', ');
87
+ }
88
+ function reconstruct(node) {
89
+ let v = (0, generator_1.default)(node, { comments: false }).code.replace(/\n/g, '');
90
+ let v2;
91
+ while (true) {
92
+ v2 = v.replace(/\[ /g, '[').replace(/ \]/g, ']').replace(/ {2}/g, ' ');
93
+ if (v2 === v) {
94
+ break;
95
+ }
96
+ v = v2;
97
+ }
98
+ return v2;
99
+ }
100
+ function forge(pattern, was) {
101
+ return pattern
102
+ .replace('{c1}', ', ')
103
+ .replace('{v1}', `"${was.v1}"`)
104
+ .replace('{c2}', was.v2 ? ', ' : '')
105
+ .replace('{v2}', was.v2 ? `"${was.v2}"` : '')
106
+ .replace('{c3}', was.v3 ? ' from ' : '')
107
+ .replace('{v3}', was.v3 ? was.v3 : '');
108
+ }
109
+ function valid2(v2) {
110
+ return (v2 === undefined ||
111
+ v2 === null ||
112
+ v2 === 'must-exclude' ||
113
+ v2 === 'may-exclude');
114
+ }
115
+ function visitorRequireResolve(n) {
116
+ if (!babelTypes.isCallExpression(n)) {
117
+ return null;
118
+ }
119
+ if (!babelTypes.isMemberExpression(n.callee)) {
120
+ return null;
121
+ }
122
+ const ci = n.callee.object.type === 'Identifier' &&
123
+ n.callee.object.name === 'require' &&
124
+ n.callee.property.type === 'Identifier' &&
125
+ n.callee.property.name === 'resolve';
126
+ if (!ci) {
127
+ return null;
128
+ }
129
+ if (!n.arguments || !isLiteral(n.arguments[0])) {
130
+ return null;
131
+ }
132
+ return {
133
+ v1: getLiteralValue(n.arguments[0]),
134
+ v2: isLiteral(n.arguments[1]) ? getLiteralValue(n.arguments[1]) : null,
135
+ };
136
+ }
137
+ function visitorRequire(n) {
138
+ if (!babelTypes.isCallExpression(n)) {
139
+ return null;
140
+ }
141
+ if (!babelTypes.isIdentifier(n.callee)) {
142
+ return null;
143
+ }
144
+ if (n.callee.name !== 'require') {
145
+ return null;
146
+ }
147
+ if (!n.arguments || !isLiteral(n.arguments[0])) {
148
+ return null;
149
+ }
150
+ return {
151
+ v1: getLiteralValue(n.arguments[0]),
152
+ v2: isLiteral(n.arguments[1]) ? getLiteralValue(n.arguments[1]) : null,
153
+ };
154
+ }
155
+ function visitorImport(n) {
156
+ if (!babelTypes.isImportDeclaration(n)) {
157
+ return null;
158
+ }
159
+ return { v1: n.source.value, v3: reconstructSpecifiers(n.specifiers) };
160
+ }
161
+ function visitorPathJoin(n) {
162
+ if (!babelTypes.isCallExpression(n)) {
163
+ return null;
164
+ }
165
+ if (!babelTypes.isMemberExpression(n.callee)) {
166
+ return null;
167
+ }
168
+ const ci = n.callee.object &&
169
+ n.callee.object.type === 'Identifier' &&
170
+ n.callee.object.name === 'path' &&
171
+ n.callee.property &&
172
+ n.callee.property.type === 'Identifier' &&
173
+ n.callee.property.name === 'join';
174
+ if (!ci) {
175
+ return null;
176
+ }
177
+ const dn = n.arguments[0] &&
178
+ n.arguments[0].type === 'Identifier' &&
179
+ n.arguments[0].name === '__dirname';
180
+ if (!dn) {
181
+ return null;
182
+ }
183
+ const f = n.arguments && isLiteral(n.arguments[1]) && n.arguments.length === 2; // TODO concat them
184
+ if (!f) {
185
+ return null;
186
+ }
187
+ return { v1: getLiteralValue(n.arguments[1]) };
188
+ }
189
+ function visitorSuccessful(node, test = false) {
190
+ let was = visitorRequireResolve(node);
191
+ if (was) {
192
+ if (test) {
193
+ return forge('require.resolve({v1}{c2}{v2})', was);
194
+ }
195
+ if (!valid2(was.v2)) {
196
+ return null;
197
+ }
198
+ return {
199
+ alias: was.v1,
200
+ aliasType: common_1.ALIAS_AS_RESOLVABLE,
201
+ mustExclude: was.v2 === 'must-exclude',
202
+ mayExclude: was.v2 === 'may-exclude',
203
+ };
204
+ }
205
+ was = visitorRequire(node);
206
+ if (was) {
207
+ if (test) {
208
+ return forge('require({v1}{c2}{v2})', was);
209
+ }
210
+ if (!valid2(was.v2)) {
211
+ return null;
212
+ }
213
+ return {
214
+ alias: was.v1,
215
+ aliasType: common_1.ALIAS_AS_RESOLVABLE,
216
+ mustExclude: was.v2 === 'must-exclude',
217
+ mayExclude: was.v2 === 'may-exclude',
218
+ };
219
+ }
220
+ was = visitorImport(node);
221
+ if (was) {
222
+ if (test) {
223
+ return forge('import {v3}{c3}{v1}', was);
224
+ }
225
+ return { alias: was.v1, aliasType: common_1.ALIAS_AS_RESOLVABLE };
226
+ }
227
+ was = visitorPathJoin(node);
228
+ if (was) {
229
+ if (test) {
230
+ return forge('path.join(__dirname{c1}{v1})', was);
231
+ }
232
+ return { alias: was.v1, aliasType: common_1.ALIAS_AS_RELATIVE, mayExclude: false };
233
+ }
234
+ return null;
235
+ }
236
+ exports.visitorSuccessful = visitorSuccessful;
237
+ function nonLiteralRequireResolve(n) {
238
+ if (!babelTypes.isCallExpression(n)) {
239
+ return null;
240
+ }
241
+ if (!babelTypes.isMemberExpression(n.callee)) {
242
+ return null;
243
+ }
244
+ const ci = n.callee.object.type === 'Identifier' &&
245
+ n.callee.object.name === 'require' &&
246
+ n.callee.property.type === 'Identifier' &&
247
+ n.callee.property.name === 'resolve';
248
+ if (!ci) {
249
+ return null;
250
+ }
251
+ if (isLiteral(n.arguments[0])) {
252
+ return null;
253
+ }
254
+ const m = n.arguments[1];
255
+ if (!m) {
256
+ return { v1: reconstruct(n.arguments[0]) };
257
+ }
258
+ if (!isLiteral(n.arguments[1])) {
259
+ return null;
260
+ }
261
+ return {
262
+ v1: reconstruct(n.arguments[0]),
263
+ v2: getLiteralValue(n.arguments[1]),
264
+ };
265
+ }
266
+ function nonLiteralRequire(n) {
267
+ if (!babelTypes.isCallExpression(n)) {
268
+ return null;
269
+ }
270
+ if (!babelTypes.isIdentifier(n.callee)) {
271
+ return null;
272
+ }
273
+ if (n.callee.name !== 'require') {
274
+ return null;
275
+ }
276
+ if (isLiteral(n.arguments[0])) {
277
+ return null;
278
+ }
279
+ const m = n.arguments[1];
280
+ if (!m) {
281
+ return { v1: reconstruct(n.arguments[0]) };
282
+ }
283
+ if (!isLiteral(n.arguments[1])) {
284
+ return null;
285
+ }
286
+ return {
287
+ v1: reconstruct(n.arguments[0]),
288
+ v2: getLiteralValue(n.arguments[1]),
289
+ };
290
+ }
291
+ function visitorNonLiteral(n) {
292
+ const was = nonLiteralRequireResolve(n) || nonLiteralRequire(n);
293
+ if (was) {
294
+ if (!valid2(was.v2)) {
295
+ return null;
296
+ }
297
+ return {
298
+ alias: was.v1,
299
+ mustExclude: was.v2 === 'must-exclude',
300
+ mayExclude: was.v2 === 'may-exclude',
301
+ };
302
+ }
303
+ return null;
304
+ }
305
+ exports.visitorNonLiteral = visitorNonLiteral;
306
+ function isRequire(n) {
307
+ if (!babelTypes.isCallExpression(n)) {
308
+ return null;
309
+ }
310
+ if (!babelTypes.isIdentifier(n.callee)) {
311
+ return null;
312
+ }
313
+ if (n.callee.name !== 'require') {
314
+ return null;
315
+ }
316
+ const f = n.arguments && n.arguments[0];
317
+ if (!f) {
318
+ return null;
319
+ }
320
+ return { v1: reconstruct(n.arguments[0]) };
321
+ }
322
+ function isRequireResolve(n) {
323
+ if (!babelTypes.isCallExpression(n)) {
324
+ return null;
325
+ }
326
+ if (!babelTypes.isMemberExpression(n.callee)) {
327
+ return null;
328
+ }
329
+ const ci = n.callee.object.type === 'Identifier' &&
330
+ n.callee.object.name === 'require' &&
331
+ n.callee.property.type === 'Identifier' &&
332
+ n.callee.property.name === 'resolve';
333
+ if (!ci) {
334
+ return null;
335
+ }
336
+ const f = n.type === 'CallExpression' && n.arguments && n.arguments[0];
337
+ if (!f) {
338
+ return null;
339
+ }
340
+ return { v1: reconstruct(n.arguments[0]) };
341
+ }
342
+ function visitorMalformed(n) {
343
+ const was = isRequireResolve(n) || isRequire(n);
344
+ if (was) {
345
+ return { alias: was.v1 };
346
+ }
347
+ return null;
348
+ }
349
+ exports.visitorMalformed = visitorMalformed;
350
+ function visitorUseSCWD(n) {
351
+ if (!babelTypes.isCallExpression(n)) {
352
+ return null;
353
+ }
354
+ if (!babelTypes.isMemberExpression(n.callee)) {
355
+ return null;
356
+ }
357
+ const ci = n.callee.object.type === 'Identifier' &&
358
+ n.callee.object.name === 'path' &&
359
+ n.callee.property.type === 'Identifier' &&
360
+ n.callee.property.name === 'resolve';
361
+ if (!ci) {
362
+ return null;
363
+ }
364
+ const was = { v1: n.arguments.map(reconstruct).join(', ') };
365
+ if (was) {
366
+ return { alias: was.v1 };
367
+ }
368
+ return null;
369
+ }
370
+ exports.visitorUseSCWD = visitorUseSCWD;
371
+ function traverse(ast, visitor) {
372
+ // modified esprima-walk to support
373
+ // visitor return value and "trying" flag
374
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
375
+ const stack = [[ast, false]];
376
+ for (let i = 0; i < stack.length; i += 1) {
377
+ const item = stack[i];
378
+ const [node] = item;
379
+ if (node) {
380
+ const trying = item[1] || babelTypes.isTryStatement(node);
381
+ if (visitor(node, trying)) {
382
+ for (const key in node) {
383
+ if (node[key]) {
384
+ const child = node[key];
385
+ if (child instanceof Array) {
386
+ for (let j = 0; j < child.length; j += 1) {
387
+ stack.push([child[j], trying]);
388
+ }
389
+ }
390
+ else if (child && typeof child.type === 'string') {
391
+ stack.push([child, trying]);
392
+ }
393
+ }
394
+ }
395
+ }
396
+ }
397
+ }
398
+ }
399
+ function parse(body) {
400
+ return babel.parse(body, {
401
+ allowImportExportEverywhere: true,
402
+ allowReturnOutsideFunction: true,
403
+ });
404
+ }
405
+ exports.parse = parse;
406
+ function detect(body, visitor, file) {
407
+ let json;
408
+ try {
409
+ json = parse(body);
410
+ }
411
+ catch (error) {
412
+ const fileInfo = file ? ` in ${file}` : '';
413
+ log_1.log.warn(`Babel parse has failed: ${error.message}${fileInfo}`);
414
+ }
415
+ if (!json) {
416
+ return;
417
+ }
418
+ traverse(json, visitor);
419
+ }
420
+ exports.detect = detect;
421
+ //# sourceMappingURL=detector.js.map