1 |
|
2 |
|
3 |
|
4 |
|
5 | "use strict";
|
6 | const path = require("path");
|
7 |
|
8 | const BasicEvaluatedExpression = require("./BasicEvaluatedExpression");
|
9 | const ConstDependency = require("./dependencies/ConstDependency");
|
10 | const UnsupportedFeatureWarning = require("./UnsupportedFeatureWarning");
|
11 |
|
12 | const ParserHelpers = exports;
|
13 |
|
14 | ParserHelpers.addParsedVariableToModule = (parser, name, expression) => {
|
15 | if (!parser.state.current.addVariable) return false;
|
16 | var deps = [];
|
17 | parser.parse(expression, {
|
18 | current: {
|
19 | addDependency: dep => {
|
20 | dep.userRequest = name;
|
21 | deps.push(dep);
|
22 | }
|
23 | },
|
24 | module: parser.state.module
|
25 | });
|
26 | parser.state.current.addVariable(name, expression, deps);
|
27 | return true;
|
28 | };
|
29 |
|
30 | ParserHelpers.requireFileAsExpression = (context, pathToModule) => {
|
31 | var moduleJsPath = path.relative(context, pathToModule);
|
32 | if (!/^[A-Z]:/i.test(moduleJsPath)) {
|
33 | moduleJsPath = "./" + moduleJsPath.replace(/\\/g, "/");
|
34 | }
|
35 | return "require(" + JSON.stringify(moduleJsPath) + ")";
|
36 | };
|
37 |
|
38 | ParserHelpers.toConstantDependency = (parser, value) => {
|
39 | return function constDependency(expr) {
|
40 | var dep = new ConstDependency(value, expr.range, false);
|
41 | dep.loc = expr.loc;
|
42 | parser.state.current.addDependency(dep);
|
43 | return true;
|
44 | };
|
45 | };
|
46 |
|
47 | ParserHelpers.toConstantDependencyWithWebpackRequire = (parser, value) => {
|
48 | return function constDependencyWithWebpackRequire(expr) {
|
49 | var dep = new ConstDependency(value, expr.range, true);
|
50 | dep.loc = expr.loc;
|
51 | parser.state.current.addDependency(dep);
|
52 | return true;
|
53 | };
|
54 | };
|
55 |
|
56 | ParserHelpers.evaluateToString = value => {
|
57 | return function stringExpression(expr) {
|
58 | return new BasicEvaluatedExpression().setString(value).setRange(expr.range);
|
59 | };
|
60 | };
|
61 |
|
62 | ParserHelpers.evaluateToBoolean = value => {
|
63 | return function booleanExpression(expr) {
|
64 | return new BasicEvaluatedExpression()
|
65 | .setBoolean(value)
|
66 | .setRange(expr.range);
|
67 | };
|
68 | };
|
69 |
|
70 | ParserHelpers.evaluateToIdentifier = (identifier, truthy) => {
|
71 | return function identifierExpression(expr) {
|
72 | let evex = new BasicEvaluatedExpression()
|
73 | .setIdentifier(identifier)
|
74 | .setRange(expr.range);
|
75 | if (truthy === true) {
|
76 | evex = evex.setTruthy();
|
77 | } else if (truthy === false) {
|
78 | evex = evex.setFalsy();
|
79 | }
|
80 | return evex;
|
81 | };
|
82 | };
|
83 |
|
84 | ParserHelpers.expressionIsUnsupported = (parser, message) => {
|
85 | return function unsupportedExpression(expr) {
|
86 | var dep = new ConstDependency("(void 0)", expr.range, false);
|
87 | dep.loc = expr.loc;
|
88 | parser.state.current.addDependency(dep);
|
89 | if (!parser.state.module) return;
|
90 | parser.state.module.warnings.push(
|
91 | new UnsupportedFeatureWarning(parser.state.module, message, expr.loc)
|
92 | );
|
93 | return true;
|
94 | };
|
95 | };
|
96 |
|
97 | ParserHelpers.skipTraversal = function skipTraversal() {
|
98 | return true;
|
99 | };
|
100 |
|
101 | ParserHelpers.approve = function approve() {
|
102 | return true;
|
103 | };
|