Skip to content

Commit 0ebc9f7

Browse files
Re-enable ADVANCED_OPTIMIZATIONS tests (#31)
* Re-enable ADVANCED_OPTIMIZATIONS and fix export pattern bugs resulting * Rev to 0.5.1
1 parent d9eb048 commit 0ebc9f7

34 files changed

+116
-54
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@ampproject/rollup-plugin-closure-compiler",
3-
"version": "0.5.0",
3+
"version": "0.5.1",
44
"description": "Rollup + Google Closure Compiler",
55
"main": "dist/index.js",
66
"jsnext:main": "dist/index.mjs",

src/transformers/exports.ts

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,7 +195,7 @@ export default class ExportTransform extends Transform implements TransformInter
195195
originalExportIdentifiers.includes(ancestor.expression.left.property.name)
196196
) {
197197
const exportName = ancestor.expression.left.property.name;
198-
switch (originalExports[exportName]) {
198+
switch (originalExports[exportName].type) {
199199
case ExportClosureMapping.DEFAULT_FUNCTION:
200200
case ExportClosureMapping.NAMED_DEFAULT_FUNCTION:
201201
case ExportClosureMapping.DEFAULT:
@@ -264,7 +264,15 @@ export default class ExportTransform extends Transform implements TransformInter
264264
);
265265
}
266266

267-
collectedExportsToAppend.push(ancestor.expression.left.property.name);
267+
if (originalExports[exportName].alias !== null) {
268+
collectedExportsToAppend.push(
269+
`${ancestor.expression.left.property.name} as ${
270+
originalExports[exportName].alias
271+
}`,
272+
);
273+
} else {
274+
collectedExportsToAppend.push(ancestor.expression.left.property.name);
275+
}
268276
break;
269277
case ExportClosureMapping.DEFAULT_VALUE:
270278
case ExportClosureMapping.DEFAULT_OBJECT:
@@ -297,7 +305,7 @@ export default class ExportTransform extends Transform implements TransformInter
297305
});
298306

299307
if (collectedExportsToAppend.length > 0) {
300-
source.append(`export {${collectedExportsToAppend.join(',')}};`);
308+
source.append(`export{${collectedExportsToAppend.join(',')}};`);
301309
}
302310

303311
return {

src/transformers/parsing-utilities.ts

Lines changed: 70 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -97,19 +97,28 @@ export function NamedDeclaration(
9797

9898
if (functionName !== null) {
9999
return {
100-
[functionName]: ExportClosureMapping.NAMED_FUNCTION,
100+
[functionName]: {
101+
alias: null,
102+
type: ExportClosureMapping.NAMED_FUNCTION,
103+
},
101104
};
102105
} else if (className !== null) {
103106
return {
104-
[className]: ExportClosureMapping.NAMED_CLASS,
107+
[className]: {
108+
alias: null,
109+
type: ExportClosureMapping.NAMED_CLASS,
110+
},
105111
};
106112
} else if (declaration.declaration && declaration.declaration.type === 'VariableDeclaration') {
107113
const variableDeclarations = declaration.declaration.declarations;
108114
const exportMap: ExportNameToClosureMapping = {};
109115

110116
variableDeclarations.forEach(variableDeclarator => {
111117
if (variableDeclarator.id.type === 'Identifier') {
112-
exportMap[variableDeclarator.id.name] = ExportClosureMapping.NAMED_CONSTANT;
118+
exportMap[variableDeclarator.id.name] = {
119+
alias: null,
120+
type: ExportClosureMapping.NAMED_CONSTANT,
121+
};
113122
}
114123
});
115124
return exportMap;
@@ -119,9 +128,18 @@ export function NamedDeclaration(
119128
if (exportSpecifier.exported.name === 'default') {
120129
// This is a default export in a specifier list.
121130
// e.g. export { foo as default };
122-
exportMap[exportSpecifier.local.name] = ExportClosureMapping.DEFAULT;
131+
exportMap[exportSpecifier.local.name] = {
132+
alias: null,
133+
type: ExportClosureMapping.DEFAULT,
134+
};
123135
} else {
124-
exportMap[exportSpecifier.exported.name] = ExportClosureMapping.NAMED_CONSTANT;
136+
exportMap[exportSpecifier.local.name] = {
137+
alias:
138+
exportSpecifier.local.name !== exportSpecifier.exported.name
139+
? exportSpecifier.exported.name
140+
: null,
141+
type: ExportClosureMapping.NAMED_CONSTANT,
142+
};
125143
}
126144
});
127145
return exportMap;
@@ -142,41 +160,80 @@ export function DefaultDeclaration(
142160
const functionName = functionDeclarationName(context, id, declaration);
143161
if (functionName !== null) {
144162
return {
145-
[functionName]: ExportClosureMapping.NAMED_DEFAULT_FUNCTION,
163+
[functionName]: {
164+
alias: null,
165+
type: ExportClosureMapping.NAMED_DEFAULT_FUNCTION,
166+
},
146167
};
147168
} else {
148169
return {
149-
[defaultExportName]: ExportClosureMapping.DEFAULT_FUNCTION,
170+
[defaultExportName]: {
171+
alias: null,
172+
type: ExportClosureMapping.DEFAULT_FUNCTION,
173+
},
150174
};
151175
}
152176
case 'ClassDeclaration':
153177
const className = classDeclarationName(context, id, declaration);
154178
if (className !== null) {
155179
return {
156-
[className]: ExportClosureMapping.NAMED_DEFAULT_CLASS,
180+
[className]: {
181+
alias: null,
182+
type: ExportClosureMapping.NAMED_DEFAULT_CLASS,
183+
},
157184
};
158185
}
159186
return {
160-
[defaultExportName]: ExportClosureMapping.DEFAULT_CLASS,
187+
[defaultExportName]: {
188+
alias: null,
189+
type: ExportClosureMapping.DEFAULT_CLASS,
190+
},
161191
};
162192
case 'Identifier':
163193
if (declaration.declaration.name) {
164194
return {
165-
[declaration.declaration.name]: ExportClosureMapping.NAMED_DEFAULT_FUNCTION,
195+
[declaration.declaration.name]: {
196+
alias: null,
197+
type: ExportClosureMapping.NAMED_DEFAULT_FUNCTION,
198+
},
199+
};
200+
}
201+
return {
202+
[defaultExportName]: {
203+
alias: null,
204+
type: ExportClosureMapping.DEFAULT_CLASS,
205+
},
206+
};
207+
case 'Identifier':
208+
if (declaration.declaration.name) {
209+
return {
210+
[declaration.declaration.name]: {
211+
alias: null,
212+
type: ExportClosureMapping.NAMED_DEFAULT_FUNCTION,
213+
},
166214
};
167215
}
168216
break;
169217
case 'Literal':
170218
return {
171-
[defaultExportName]: ExportClosureMapping.DEFAULT_VALUE,
219+
[defaultExportName]: {
220+
alias: null,
221+
type: ExportClosureMapping.DEFAULT_VALUE,
222+
},
172223
};
173224
case 'ObjectExpression':
174225
return {
175-
[defaultExportName]: ExportClosureMapping.DEFAULT_OBJECT,
226+
[defaultExportName]: {
227+
alias: null,
228+
type: ExportClosureMapping.DEFAULT_OBJECT,
229+
},
176230
};
177231
case 'ArrayExpression':
178232
return {
179-
[defaultExportName]: ExportClosureMapping.DEFAULT_VALUE,
233+
[defaultExportName]: {
234+
alias: null,
235+
type: ExportClosureMapping.DEFAULT_VALUE,
236+
},
180237
};
181238
}
182239
}
@@ -197,9 +254,3 @@ export function literalName(context: PluginContext, id: string, literal: Literal
197254
const literalValue = (literal as SimpleLiteral).value;
198255
return typeof literalValue === 'string' ? literalValue : '';
199256
}
200-
201-
// export function ImportDeclaration(
202-
// context: PluginContext,
203-
// id: string,
204-
// declaration: ImportDeclaration,
205-
// ):

src/types.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,10 @@ export enum ExportClosureMapping {
5454
DEFAULT_OBJECT = 9,
5555
}
5656
export interface ExportNameToClosureMapping {
57-
[key: string]: ExportClosureMapping;
57+
[key: string]: {
58+
alias: string | null;
59+
type: ExportClosureMapping;
60+
};
5861
}
5962

6063
export type TransformMethod = (
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
export default class{constructor(b){this.name_=b}console(){console.log(this.name_)}}
1+
export default class{constructor(b){this.a=b}console(){console.log(this.a)}}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
var bar=bar;export {bar};
1+
var a=1;export{a as bar};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
var bar=bar;export {bar};
1+
var a=1;export{a as bar};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
const a = 1;
2-
export {a as bar};
2+
export{a as bar};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
const foo = 1;
2-
export {foo as default};
2+
export{foo as default};
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
var foo=1;export {foo};
1+
var foo=1;export{foo};

0 commit comments

Comments
 (0)