From 688ba4f954e8ceb4174e087713177d869c41058d Mon Sep 17 00:00:00 2001 From: James Chen Date: Sat, 15 Feb 2025 22:39:33 +0800 Subject: [PATCH 1/4] Fix export ts plugin order. --- modules/build-engine/src/engine-js/index.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/build-engine/src/engine-js/index.ts b/modules/build-engine/src/engine-js/index.ts index f9cedf7..d30a592 100644 --- a/modules/build-engine/src/engine-js/index.ts +++ b/modules/build-engine/src/engine-js/index.ts @@ -352,8 +352,6 @@ export async function buildJsEngine(options: Required): Pro tsTransformers.push(warningPrinterTransformer(program, config)); } - tsTransformers.push(exportControllerTransformer(program, { context, statsQuery })); - if (inlineEnum) { const enumData = getEnumData(); if (enumData) { @@ -363,6 +361,8 @@ export async function buildJsEngine(options: Required): Pro } } + tsTransformers.push(exportControllerTransformer(program, { context, statsQuery })); + if (mangleProperties) { const config: Partial = {}; if (typeof mangleProperties === 'object') { From 6351f9fcbe43c4ea6f3c560f6b2a6e3e62a80049 Mon Sep 17 00:00:00 2001 From: James Chen Date: Sat, 15 Feb 2025 22:40:12 +0800 Subject: [PATCH 2/4] Fix define property in constructor parameter. --- .../ts-plugins/properties-minifier/index.ts | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/modules/build-engine/src/engine-js/ts-plugins/properties-minifier/index.ts b/modules/build-engine/src/engine-js/ts-plugins/properties-minifier/index.ts index cd5ec27..dea8d6b 100644 --- a/modules/build-engine/src/engine-js/ts-plugins/properties-minifier/index.ts +++ b/modules/build-engine/src/engine-js/ts-plugins/properties-minifier/index.ts @@ -277,7 +277,17 @@ export class PropertiesMinifier { } } - const parentName = (node.parent as any).name?.escapedText; + let parentName: ts.__String | undefined; + if (ts.isParameter(node) + && node.parent + && node.parent.kind === ts.SyntaxKind.Constructor + && node.parent.parent + && ts.isClassDeclaration(node.parent.parent) + ) { + parentName = node.parent.parent.name?.escapedText; + } else { + parentName = (node.parent as any).name?.escapedText; + } if (!parentName) return isPrivate; const name = node.name.getText(); @@ -396,6 +406,14 @@ export class PropertiesMinifier { if (!ret && this._options.mangleGetterSetter) { ret = ts.isGetAccessor(node) || ts.isSetAccessor(node); } + if (!ret) { + if (ts.isParameter(node) && node.parent.kind === ts.SyntaxKind.Constructor && node.getChildCount() > 0) { + const modifiers = ts.getModifiers(node); + if (modifiers && modifiers.length > 0) { + ret = modifiers.some((mod: ts.Modifier) => mod.kind === ts.SyntaxKind.PublicKeyword || mod.kind === ts.SyntaxKind.ProtectedKeyword || mod.kind === ts.SyntaxKind.PrivateKeyword); + } + } + } return ret; } From ea59f66f88c241fd314946a75709ce8c504b0087 Mon Sep 17 00:00:00 2001 From: James Chen Date: Sat, 15 Feb 2025 22:44:57 +0800 Subject: [PATCH 3/4] Update snapshot. --- .../__snapshots__/engine-js.test.ts.snap | 30 +++++++++++++++- .../__snapshots__/dts-bundler.test.ts.snap | 19 ++++++++++ .../cocos/mangle-private-properties-test.ts | 36 ++++++++++++++++++- 3 files changed, 83 insertions(+), 2 deletions(-) diff --git a/test/build-engine/__snapshots__/engine-js.test.ts.snap b/test/build-engine/__snapshots__/engine-js.test.ts.snap index d37ba0f..5de912b 100644 --- a/test/build-engine/__snapshots__/engine-js.test.ts.snap +++ b/test/build-engine/__snapshots__/engine-js.test.ts.snap @@ -1030,8 +1030,36 @@ function testMangleQuestionProperties() { console.log((_a$_ccprivate$questio5 = a["_ccprivate$questionTestA"]) == null ? void 0 : _a$_ccprivate$questio5["_ccprivate$questionTestC"]["_ccprivate$myQuestionTest"]); } testMangleQuestionProperties(); +class DefinePropertiesInConstructorParameters { + constructor(_ccprivate$depthTest = true, _ccprivate$depthWrite = true, _ccprivate$stencilReadMaskFront = 0xffff, _ccprivate$stencilWriteMaskFront = 0xffff) { + this._ccprivate$depthTest = _ccprivate$depthTest; + this._ccprivate$depthWrite = _ccprivate$depthWrite; + this._ccprivate$stencilReadMaskFront = _ccprivate$stencilReadMaskFront; + this._ccprivate$stencilWriteMaskFront = _ccprivate$stencilWriteMaskFront; + } + _ccprivate$test() { + this._ccprivate$depthTest = false; + this._ccprivate$depthWrite = false; + this._ccprivate$stencilReadMaskFront = 0; + this._ccprivate$stencilWriteMaskFront = 0; + } +} +class DefinePropertiesInConstructorParameters2 { + constructor(depthTest = true, _ccprivate$depthWrite = true, stencilReadMaskFront = 0xffff, stencilWriteMaskFront = 0xffff) { + this.depthTest = depthTest; + this._ccprivate$depthWrite = _ccprivate$depthWrite; + this.stencilReadMaskFront = stencilReadMaskFront; + this.stencilWriteMaskFront = stencilWriteMaskFront; + } + test() { + this.depthTest = false; + this._ccprivate$depthWrite = false; + this.stencilReadMaskFront = 0; + this.stencilWriteMaskFront = 0; + } +} -export { ManglePrivatePropertiesTest, ManglePropertyBase, ManglePropertyGrand, MangleTestConstEnum, MangleTestMangleWholeClassIncludingStatic, MangleTestMyBaseEnum, MangleTestMyEnum, MangleTestMyStringEnum, MangleWholeClass, MangleWholeClassBase, MyClassExtendsMangleWholeClass, testMangleQuestionProperties }; +export { DefinePropertiesInConstructorParameters, DefinePropertiesInConstructorParameters2, ManglePrivatePropertiesTest, ManglePropertyBase, ManglePropertyGrand, MangleTestConstEnum, MangleTestMangleWholeClassIncludingStatic, MangleTestMyBaseEnum, MangleTestMyEnum, MangleTestMyStringEnum, MangleWholeClass, MangleWholeClassBase, MyClassExtendsMangleWholeClass, testMangleQuestionProperties }; " `; diff --git a/test/dts-bundler/__snapshots__/dts-bundler.test.ts.snap b/test/dts-bundler/__snapshots__/dts-bundler.test.ts.snap index c648092..362bfc5 100644 --- a/test/dts-bundler/__snapshots__/dts-bundler.test.ts.snap +++ b/test/dts-bundler/__snapshots__/dts-bundler.test.ts.snap @@ -372,6 +372,25 @@ exports[`bundle dts: cc.d.ts content 1`] = ` export interface IMangleQuestionTestB { questionTestA: IMangleQuestionTestA | null; } + /** @mangle */ + export class DefinePropertiesInConstructorParameters { + depthTest: boolean; + depthWrite: boolean; + stencilReadMaskFront: number; + stencilWriteMaskFront: number; + constructor(depthTest?: boolean, depthWrite?: boolean, stencilReadMaskFront?: number, stencilWriteMaskFront?: number); + test(): void; + } + export class DefinePropertiesInConstructorParameters2 { + depthTest: boolean; + /** @mangle */ + depthWrite: boolean; + stencilReadMaskFront: number; + stencilWriteMaskFront: number; + constructor(depthTest?: boolean, /** @mangle */ + depthWrite?: boolean, stencilReadMaskFront?: number, stencilWriteMaskFront?: number); + test(): void; + } export interface IMangleGrand { helloGrandDontMangle1(): void; /** @mangle */ diff --git a/test/test-engine-source/cocos/mangle-private-properties-test.ts b/test/test-engine-source/cocos/mangle-private-properties-test.ts index 85d127b..f439e0c 100644 --- a/test/test-engine-source/cocos/mangle-private-properties-test.ts +++ b/test/test-engine-source/cocos/mangle-private-properties-test.ts @@ -967,4 +967,38 @@ export function testMangleQuestionProperties(): void { console.log(a['questionTestA']?.['questionTestC']['myQuestionTest']); } -testMangleQuestionProperties(); \ No newline at end of file +testMangleQuestionProperties(); + +/** @mangle */ +export class DefinePropertiesInConstructorParameters { + constructor( + public depthTest: boolean = true, + public depthWrite: boolean = true, + public stencilReadMaskFront: number = 0xffff, + public stencilWriteMaskFront: number = 0xffff, + ) {} + + test (): void { + this.depthTest = false; + this.depthWrite = false; + this.stencilReadMaskFront = 0; + this.stencilWriteMaskFront = 0; + } +} + +export class DefinePropertiesInConstructorParameters2 { + constructor( + public depthTest: boolean = true, + /** @mangle */ + public depthWrite: boolean = true, + public stencilReadMaskFront: number = 0xffff, + public stencilWriteMaskFront: number = 0xffff, + ) {} + + test (): void { + this.depthTest = false; + this.depthWrite = false; + this.stencilReadMaskFront = 0; + this.stencilWriteMaskFront = 0; + } +} From 554bead945bf9c8263f35de6b558fb91834c83ae Mon Sep 17 00:00:00 2001 From: James Chen Date: Sat, 15 Feb 2025 22:45:53 +0800 Subject: [PATCH 4/4] Update version to 2.3.14 --- package-lock.json | 4 ++-- package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index e24e331..c689304 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "@cocos/ccbuild", - "version": "2.3.13", + "version": "2.3.14", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@cocos/ccbuild", - "version": "2.3.13", + "version": "2.3.14", "hasInstallScript": true, "license": "MIT", "workspaces": [ diff --git a/package.json b/package.json index d943474..15eaae6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@cocos/ccbuild", - "version": "2.3.13", + "version": "2.3.14", "description": "The next generation of build tool for Cocos engine.", "main": "./lib/index.js", "types": "./lib/index.d.ts",