1 | "use strict";
|
2 |
|
3 | Object.defineProperty(exports, "__esModule", {
|
4 | value: true
|
5 | });
|
6 | exports.default = _default;
|
7 |
|
8 | function helpers() {
|
9 | const data = require("@babel/helpers");
|
10 |
|
11 | helpers = function () {
|
12 | return data;
|
13 | };
|
14 |
|
15 | return data;
|
16 | }
|
17 |
|
18 | function _generator() {
|
19 | const data = require("@babel/generator");
|
20 |
|
21 | _generator = function () {
|
22 | return data;
|
23 | };
|
24 |
|
25 | return data;
|
26 | }
|
27 |
|
28 | function _template() {
|
29 | const data = require("@babel/template");
|
30 |
|
31 | _template = function () {
|
32 | return data;
|
33 | };
|
34 |
|
35 | return data;
|
36 | }
|
37 |
|
38 | function _t() {
|
39 | const data = require("@babel/types");
|
40 |
|
41 | _t = function () {
|
42 | return data;
|
43 | };
|
44 |
|
45 | return data;
|
46 | }
|
47 |
|
48 | var _file = require("../transformation/file/file");
|
49 |
|
50 | const {
|
51 | arrayExpression,
|
52 | assignmentExpression,
|
53 | binaryExpression,
|
54 | blockStatement,
|
55 | callExpression,
|
56 | cloneNode,
|
57 | conditionalExpression,
|
58 | exportNamedDeclaration,
|
59 | exportSpecifier,
|
60 | expressionStatement,
|
61 | functionExpression,
|
62 | identifier,
|
63 | memberExpression,
|
64 | objectExpression,
|
65 | program,
|
66 | stringLiteral,
|
67 | unaryExpression,
|
68 | variableDeclaration,
|
69 | variableDeclarator
|
70 | } = _t();
|
71 |
|
72 | const buildUmdWrapper = replacements => _template().default.statement`
|
73 | (function (root, factory) {
|
74 | if (typeof define === "function" && define.amd) {
|
75 | define(AMD_ARGUMENTS, factory);
|
76 | } else if (typeof exports === "object") {
|
77 | factory(COMMON_ARGUMENTS);
|
78 | } else {
|
79 | factory(BROWSER_ARGUMENTS);
|
80 | }
|
81 | })(UMD_ROOT, function (FACTORY_PARAMETERS) {
|
82 | FACTORY_BODY
|
83 | });
|
84 | `(replacements);
|
85 |
|
86 | function buildGlobal(allowlist) {
|
87 | const namespace = identifier("babelHelpers");
|
88 | const body = [];
|
89 | const container = functionExpression(null, [identifier("global")], blockStatement(body));
|
90 | const tree = program([expressionStatement(callExpression(container, [conditionalExpression(binaryExpression("===", unaryExpression("typeof", identifier("global")), stringLiteral("undefined")), identifier("self"), identifier("global"))]))]);
|
91 | body.push(variableDeclaration("var", [variableDeclarator(namespace, assignmentExpression("=", memberExpression(identifier("global"), namespace), objectExpression([])))]));
|
92 | buildHelpers(body, namespace, allowlist);
|
93 | return tree;
|
94 | }
|
95 |
|
96 | function buildModule(allowlist) {
|
97 | const body = [];
|
98 | const refs = buildHelpers(body, null, allowlist);
|
99 | body.unshift(exportNamedDeclaration(null, Object.keys(refs).map(name => {
|
100 | return exportSpecifier(cloneNode(refs[name]), identifier(name));
|
101 | })));
|
102 | return program(body, [], "module");
|
103 | }
|
104 |
|
105 | function buildUmd(allowlist) {
|
106 | const namespace = identifier("babelHelpers");
|
107 | const body = [];
|
108 | body.push(variableDeclaration("var", [variableDeclarator(namespace, identifier("global"))]));
|
109 | buildHelpers(body, namespace, allowlist);
|
110 | return program([buildUmdWrapper({
|
111 | FACTORY_PARAMETERS: identifier("global"),
|
112 | BROWSER_ARGUMENTS: assignmentExpression("=", memberExpression(identifier("root"), namespace), objectExpression([])),
|
113 | COMMON_ARGUMENTS: identifier("exports"),
|
114 | AMD_ARGUMENTS: arrayExpression([stringLiteral("exports")]),
|
115 | FACTORY_BODY: body,
|
116 | UMD_ROOT: identifier("this")
|
117 | })]);
|
118 | }
|
119 |
|
120 | function buildVar(allowlist) {
|
121 | const namespace = identifier("babelHelpers");
|
122 | const body = [];
|
123 | body.push(variableDeclaration("var", [variableDeclarator(namespace, objectExpression([]))]));
|
124 | const tree = program(body);
|
125 | buildHelpers(body, namespace, allowlist);
|
126 | body.push(expressionStatement(namespace));
|
127 | return tree;
|
128 | }
|
129 |
|
130 | function buildHelpers(body, namespace, allowlist) {
|
131 | const getHelperReference = name => {
|
132 | return namespace ? memberExpression(namespace, identifier(name)) : identifier(`_${name}`);
|
133 | };
|
134 |
|
135 | const refs = {};
|
136 | helpers().list.forEach(function (name) {
|
137 | if (allowlist && allowlist.indexOf(name) < 0) return;
|
138 | const ref = refs[name] = getHelperReference(name);
|
139 | helpers().ensure(name, _file.default);
|
140 | const {
|
141 | nodes
|
142 | } = helpers().get(name, getHelperReference, ref);
|
143 | body.push(...nodes);
|
144 | });
|
145 | return refs;
|
146 | }
|
147 |
|
148 | function _default(allowlist, outputType = "global") {
|
149 | let tree;
|
150 | const build = {
|
151 | global: buildGlobal,
|
152 | module: buildModule,
|
153 | umd: buildUmd,
|
154 | var: buildVar
|
155 | }[outputType];
|
156 |
|
157 | if (build) {
|
158 | tree = build(allowlist);
|
159 | } else {
|
160 | throw new Error(`Unsupported output type ${outputType}`);
|
161 | }
|
162 |
|
163 | return (0, _generator().default)(tree).code;
|
164 | }
|
165 |
|
166 | 0 && 0; |
\ | No newline at end of file |