build: Fix reflection and minification conflict (#399)

The minification change the class name so constructor.name not give back the correct class name.
Introduced getName() method in KeyAction and MacroAction Abstract class
This commit is contained in:
Róbert Kiss
2017-08-27 02:38:55 +02:00
committed by László Monda
parent be3e116130
commit ee93466a08
16 changed files with 70 additions and 6 deletions

View File

@@ -5,7 +5,7 @@
"scripts": { "scripts": {
"ng": "ng", "ng": "ng",
"start": "ng serve", "start": "ng serve",
"build": "ng build --prod --aot", "build": "ng build --prod --aot --base-href=\"\"",
"test": "ng test", "test": "ng test",
"lint": "ng lint", "lint": "ng lint",
"e2e": "ng e2e", "e2e": "ng e2e",

View File

@@ -32,7 +32,7 @@ export let keyActionType = {
export abstract class KeyAction { export abstract class KeyAction {
assertKeyActionType(jsObject: any): void { assertKeyActionType(jsObject: any): void {
const keyActionClassname: string = this.constructor.name; const keyActionClassname: string = this.getName();
const keyActionTypeString: string = keyActionType[keyActionClassname]; const keyActionTypeString: string = keyActionType[keyActionClassname];
if (jsObject.keyActionType !== keyActionTypeString) { if (jsObject.keyActionType !== keyActionTypeString) {
throw `Invalid ${keyActionClassname}.keyActionType: ${jsObject.keyActionType}`; throw `Invalid ${keyActionClassname}.keyActionType: ${jsObject.keyActionType}`;
@@ -40,7 +40,7 @@ export abstract class KeyAction {
} }
readAndAssertKeyActionId(buffer: UhkBuffer): KeyActionId { readAndAssertKeyActionId(buffer: UhkBuffer): KeyActionId {
const classname: string = this.constructor.name; const classname: string = this.getName();
const readKeyActionId: number = buffer.readUInt8(); const readKeyActionId: number = buffer.readUInt8();
const keyActionId: number = KeyActionId[classname]; const keyActionId: number = KeyActionId[classname];
if (keyActionId === KeyActionId.KeystrokeAction) { if (keyActionId === KeyActionId.KeystrokeAction) {
@@ -54,8 +54,11 @@ export abstract class KeyAction {
} }
abstract toJsonObject(macros?: Macro[]): any; abstract toJsonObject(macros?: Macro[]): any;
abstract toBinary(buffer: UhkBuffer, userConfiguration?: UserConfiguration): void; abstract toBinary(buffer: UhkBuffer, userConfiguration?: UserConfiguration): void;
abstract getName(): string;
renameKeymap(oldAbbr: string, newAbbr: string): KeyAction { renameKeymap(oldAbbr: string, newAbbr: string): KeyAction {
return this; return this;
} }

View File

@@ -208,4 +208,8 @@ export class KeystrokeAction extends KeyAction {
} }
return modifierList; return modifierList;
} }
public getName(): string {
return 'KeystrokeAction';
}
} }

View File

@@ -58,4 +58,8 @@ export class MouseAction extends KeyAction {
toString(): string { toString(): string {
return `<MouseAction mouseAction="${this.mouseAction}">`; return `<MouseAction mouseAction="${this.mouseAction}">`;
} }
public getName(): string {
return 'MouseAction';
}
} }

View File

@@ -32,4 +32,8 @@ export class NoneAction extends KeyAction {
toString(): string { toString(): string {
return '<NoneAction>'; return '<NoneAction>';
} }
public getName(): string {
return 'NoneAction';
}
} }

View File

@@ -49,4 +49,8 @@ export class PlayMacroAction extends KeyAction {
toString(): string { toString(): string {
return `<PlayMacroAction macroId="${this.macroId}">`; return `<PlayMacroAction macroId="${this.macroId}">`;
} }
public getName(): string {
return 'PlayMacroAction';
}
} }

View File

@@ -51,6 +51,10 @@ export class SwitchKeymapAction extends KeyAction {
} }
return new SwitchKeymapAction(newAbbr); return new SwitchKeymapAction(newAbbr);
} }
public getName(): string {
return 'SwitchKeymapAction';
}
} }
export class UnresolvedSwitchKeymapAction extends KeyAction { export class UnresolvedSwitchKeymapAction extends KeyAction {
@@ -81,4 +85,8 @@ export class UnresolvedSwitchKeymapAction extends KeyAction {
resolve(keymaps: Keymap[]): SwitchKeymapAction { resolve(keymaps: Keymap[]): SwitchKeymapAction {
return new SwitchKeymapAction(keymaps[this.keymapIndex]); return new SwitchKeymapAction(keymaps[this.keymapIndex]);
} }
public getName(): string {
return 'UnresolvedSwitchKeymapAction';
}
} }

View File

@@ -56,4 +56,7 @@ export class SwitchLayerAction extends KeyAction {
return `<SwitchLayerAction layer="${this.layer}" toggle="${this.isLayerToggleable}">`; return `<SwitchLayerAction layer="${this.layer}" toggle="${this.isLayerToggleable}">`;
} }
public getName(): string {
return 'SwitchLayerAction';
}
} }

View File

@@ -42,4 +42,8 @@ export class DelayMacroAction extends MacroAction {
toString(): string { toString(): string {
return `<DelayMacroAction delay="${this.delay}">`; return `<DelayMacroAction delay="${this.delay}">`;
} }
public getName(): string {
return 'DelayMacroAction';
}
} }

View File

@@ -132,4 +132,8 @@ export class KeyMacroAction extends MacroAction {
isReleaseAction(): boolean { isReleaseAction(): boolean {
return this.action === MacroSubAction.release; return this.action === MacroSubAction.release;
} }
public getName(): string {
return 'KeyMacroAction';
}
} }

View File

@@ -40,7 +40,7 @@ export let macroActionType = {
export abstract class MacroAction { export abstract class MacroAction {
assertMacroActionType(jsObject: any) { assertMacroActionType(jsObject: any) {
const macroActionClassname = this.constructor.name; const macroActionClassname = this.getName();
const macroActionTypeString = macroActionType[macroActionClassname]; const macroActionTypeString = macroActionType[macroActionClassname];
if (jsObject.macroActionType !== macroActionTypeString) { if (jsObject.macroActionType !== macroActionTypeString) {
throw `Invalid ${macroActionClassname}.macroActionType: ${jsObject.macroActionType}`; throw `Invalid ${macroActionClassname}.macroActionType: ${jsObject.macroActionType}`;
@@ -48,7 +48,7 @@ export abstract class MacroAction {
} }
readAndAssertMacroActionId(buffer: UhkBuffer): MacroActionId { readAndAssertMacroActionId(buffer: UhkBuffer): MacroActionId {
const classname: string = this.constructor.name; const classname: string = this.getName();
const readMacroActionId: MacroActionId = buffer.readUInt8(); const readMacroActionId: MacroActionId = buffer.readUInt8();
const macroActionId: MacroActionId = MacroActionId[classname]; const macroActionId: MacroActionId = MacroActionId[classname];
if (macroActionId === MacroActionId.KeyMacroAction) { if (macroActionId === MacroActionId.KeyMacroAction) {
@@ -67,5 +67,8 @@ export abstract class MacroAction {
} }
abstract toJsonObject(): any; abstract toJsonObject(): any;
abstract toBinary(buffer: UhkBuffer): void; abstract toBinary(buffer: UhkBuffer): void;
abstract getName(): string;
} }

View File

@@ -92,4 +92,8 @@ export class MouseButtonMacroAction extends MacroAction {
isOnlyReleaseAction(): boolean { isOnlyReleaseAction(): boolean {
return this.action === MacroSubAction.release; return this.action === MacroSubAction.release;
} }
public getName(): string {
return 'MouseButtonMacroAction';
}
} }

View File

@@ -50,4 +50,8 @@ export class MoveMouseMacroAction extends MacroAction {
toString(): string { toString(): string {
return `<MoveMouseMacroAction pos="(${this.x},${this.y})">`; return `<MoveMouseMacroAction pos="(${this.x},${this.y})">`;
} }
public getName(): string {
return 'MoveMouseMacroAction';
}
} }

View File

@@ -50,4 +50,8 @@ export class ScrollMouseMacroAction extends MacroAction {
toString(): string { toString(): string {
return `<ScrollMouseMacroAction pos="(${this.x},${this.y})">`; return `<ScrollMouseMacroAction pos="(${this.x},${this.y})">`;
} }
public getName(): string {
return 'ScrollMouseMacroAction';
}
} }

View File

@@ -40,4 +40,8 @@ export class TextMacroAction extends MacroAction {
toString(): string { toString(): string {
return `<TextMacroAction text="${this.text}">`; return `<TextMacroAction text="${this.text}">`;
} }
public getName(): string {
return 'TextMacroAction';
}
} }

View File

@@ -384,7 +384,14 @@ module.exports = {
"inject": true, "inject": true,
"compile": true, "compile": true,
"favicon": false, "favicon": false,
"minify": false, "minify": !AOT_BUILD ? false : {
removeAttributeQuotes: true,
collapseWhitespace: true,
html5: true,
minifyCSS: true,
removeComments: true,
removeEmptyAttributes: true,
},
"cache": true, "cache": true,
"showErrors": true, "showErrors": true,
"chunks": "all", "chunks": "all",