From 1363ecaa3cfa85021afb746ab05fd5f19c6a5cc3 Mon Sep 17 00:00:00 2001 From: "fenge\\flying" Date: Fri, 21 Aug 2026 14:37:44 +0800 Subject: [PATCH 1/6] fix(ci): require generated DTS snapshot updates --- .github/workflows/check-dts.yml | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/.github/workflows/check-dts.yml b/.github/workflows/check-dts.yml index 65eed1dbd..bb92b3ec7 100644 --- a/.github/workflows/check-dts.yml +++ b/.github/workflows/check-dts.yml @@ -30,11 +30,29 @@ jobs: shell: pwsh run: npm run generate:dts:ci + - name: Verify generated DTS snapshot matches HEAD + shell: bash + run: | + SNAP_FILE="packages/cocos-cli-types/__tests__/__snapshots__/dts-snapshot.test.ts.snap" + + # Regenerate the snapshot from the DTS files produced for this PR. + # A clean checkout alone is not sufficient: it may contain a snapshot + # committed before the latest API change. + npx jest --roots packages/cocos-cli-types --testPathPattern dts-snapshot --no-cache -u + + if git diff --quiet HEAD -- "$SNAP_FILE"; then + echo "Generated DTS snapshot matches HEAD." + exit 0 + fi + + echo "::error file=$SNAP_FILE::Generated DTS snapshot differs from the latest committed snapshot. Run npm run generate:dts and commit the snapshot update." + git diff -- "$SNAP_FILE" + exit 1 + - name: Run DTS tests shell: bash run: | cp packages/engine/bin/.declarations/cc.d.ts packages/cocos-cli-types/cc.d.ts - npx jest --roots packages/cocos-cli-types --testPathPattern dts-snapshot --no-cache npx eslint --fix "./packages/cocos-cli-types/*.d.ts" npx jest packages/cocos-cli-types --roots="/packages/cocos-cli-types" --testPathIgnorePatterns dts-snapshot From 2a5cc4052732263acc2f73308088393c556573f0 Mon Sep 17 00:00:00 2001 From: "fenge\\flying" Date: Fri, 21 Aug 2026 14:48:07 +0800 Subject: [PATCH 2/6] test --- src/core/scene/common/node.ts | 4 ++-- src/core/scene/scene-process/service/node.ts | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/core/scene/common/node.ts b/src/core/scene/common/node.ts index 4c2ba663f..87a0e7a26 100644 --- a/src/core/scene/common/node.ts +++ b/src/core/scene/common/node.ts @@ -107,7 +107,7 @@ export interface ICreateNodePreflightResult { * Opaque token for the matching create request. Passing it back prevents a * stale preflight result from silently skipping required Canvas handling. */ - preflightToken: string; + preflightToken1: string; } // generateNodeDump / encode / open 共用的选项 @@ -242,7 +242,7 @@ interface IBaseCreateNodeParams { canvasRequired?: boolean; prefabCanvasHandling?: PrefabCanvasHandling; /** Opaque token returned by preflightCreate for this creation request. */ - preflightToken?: string; + preflightToken1?: string; unlinkPrefab?: boolean; } diff --git a/src/core/scene/scene-process/service/node.ts b/src/core/scene/scene-process/service/node.ts index 2eb64fcf4..467773a00 100644 --- a/src/core/scene/scene-process/service/node.ts +++ b/src/core/scene/scene-process/service/node.ts @@ -165,7 +165,7 @@ export class NodeService extends BaseService implements INodeServic const result = this._resolveCreatePreflight(params, canvasRequired, currentScene); return { ...result, - preflightToken: this._createPreflightToken(params, result), + preflightToken1: this._createPreflightToken(params, result), }; } catch (error) { console.error(error); @@ -251,7 +251,7 @@ export class NodeService extends BaseService implements INodeServic params: ICreateByNodeTypeParams | ICreateByAssetParams, canvasRequired: boolean, currentScene: Node, - ): Omit { + ): Omit { const pathPlan = this._getCreatePathPreflight(params.path, currentScene); if (pathPlan.materializesUITransform) { return { @@ -279,7 +279,7 @@ export class NodeService extends BaseService implements INodeServic private _createPreflightToken( params: ICreateByNodeTypeParams | ICreateByAssetParams, - result: Omit, + result: Omit, ): string { const token = `node-create-${Date.now().toString(36)}-${(++this._preflightTokenSequence).toString(36)}`; if (this._preflightTokens.size >= 128) { @@ -297,12 +297,12 @@ export class NodeService extends BaseService implements INodeServic } private _validatePreflightToken(params: ICreateByNodeTypeParams | ICreateByAssetParams): void { - if (!params.preflightToken) { + if (!params.preflightToken1) { return; } - const record = this._preflightTokens.get(params.preflightToken); - this._preflightTokens.delete(params.preflightToken); + const record = this._preflightTokens.get(params.preflightToken1); + this._preflightTokens.delete(params.preflightToken1); if (!record || record.requestKey !== this._getPreflightRequestKey(params)) { throw new Error('The node creation preflight token is invalid or does not match the request. Run preflightCreate again.'); } From 8ac3f8d33415df07c11baeaaa7dfc7e7b9e29c8d Mon Sep 17 00:00:00 2001 From: "fenge\\flying" Date: Fri, 21 Aug 2026 15:18:40 +0800 Subject: [PATCH 3/6] Revert "test" This reverts commit 2a5cc4052732263acc2f73308088393c556573f0. --- src/core/scene/common/node.ts | 4 ++-- src/core/scene/scene-process/service/node.ts | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/core/scene/common/node.ts b/src/core/scene/common/node.ts index 87a0e7a26..4c2ba663f 100644 --- a/src/core/scene/common/node.ts +++ b/src/core/scene/common/node.ts @@ -107,7 +107,7 @@ export interface ICreateNodePreflightResult { * Opaque token for the matching create request. Passing it back prevents a * stale preflight result from silently skipping required Canvas handling. */ - preflightToken1: string; + preflightToken: string; } // generateNodeDump / encode / open 共用的选项 @@ -242,7 +242,7 @@ interface IBaseCreateNodeParams { canvasRequired?: boolean; prefabCanvasHandling?: PrefabCanvasHandling; /** Opaque token returned by preflightCreate for this creation request. */ - preflightToken1?: string; + preflightToken?: string; unlinkPrefab?: boolean; } diff --git a/src/core/scene/scene-process/service/node.ts b/src/core/scene/scene-process/service/node.ts index 467773a00..2eb64fcf4 100644 --- a/src/core/scene/scene-process/service/node.ts +++ b/src/core/scene/scene-process/service/node.ts @@ -165,7 +165,7 @@ export class NodeService extends BaseService implements INodeServic const result = this._resolveCreatePreflight(params, canvasRequired, currentScene); return { ...result, - preflightToken1: this._createPreflightToken(params, result), + preflightToken: this._createPreflightToken(params, result), }; } catch (error) { console.error(error); @@ -251,7 +251,7 @@ export class NodeService extends BaseService implements INodeServic params: ICreateByNodeTypeParams | ICreateByAssetParams, canvasRequired: boolean, currentScene: Node, - ): Omit { + ): Omit { const pathPlan = this._getCreatePathPreflight(params.path, currentScene); if (pathPlan.materializesUITransform) { return { @@ -279,7 +279,7 @@ export class NodeService extends BaseService implements INodeServic private _createPreflightToken( params: ICreateByNodeTypeParams | ICreateByAssetParams, - result: Omit, + result: Omit, ): string { const token = `node-create-${Date.now().toString(36)}-${(++this._preflightTokenSequence).toString(36)}`; if (this._preflightTokens.size >= 128) { @@ -297,12 +297,12 @@ export class NodeService extends BaseService implements INodeServic } private _validatePreflightToken(params: ICreateByNodeTypeParams | ICreateByAssetParams): void { - if (!params.preflightToken1) { + if (!params.preflightToken) { return; } - const record = this._preflightTokens.get(params.preflightToken1); - this._preflightTokens.delete(params.preflightToken1); + const record = this._preflightTokens.get(params.preflightToken); + this._preflightTokens.delete(params.preflightToken); if (!record || record.requestKey !== this._getPreflightRequestKey(params)) { throw new Error('The node creation preflight token is invalid or does not match the request. Run preflightCreate again.'); } From 8c4f7ccde3e0684daae752abd5175bad8d8c7d80 Mon Sep 17 00:00:00 2001 From: "fenge\\flying" Date: Fri, 21 Aug 2026 15:19:51 +0800 Subject: [PATCH 4/6] test add --- src/core/scene/common/node.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/scene/common/node.ts b/src/core/scene/common/node.ts index 4c2ba663f..cfbabd2f9 100644 --- a/src/core/scene/common/node.ts +++ b/src/core/scene/common/node.ts @@ -252,6 +252,7 @@ export interface ICreateByNodeTypeParams extends IBaseCreateNodeParams { export interface ICreateByAssetParams extends IBaseCreateNodeParams { dbURL: string; + test: string; } // TODO 目前先从 3x 迁移,后续在进行优化 From cb12675f1a747e8936c488517d109cd4c2975fdd Mon Sep 17 00:00:00 2001 From: "fenge\\flying" Date: Fri, 21 Aug 2026 15:30:33 +0800 Subject: [PATCH 5/6] ddd --- src/core/scene/common/node.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/scene/common/node.ts b/src/core/scene/common/node.ts index cfbabd2f9..dcb5c849c 100644 --- a/src/core/scene/common/node.ts +++ b/src/core/scene/common/node.ts @@ -252,7 +252,7 @@ export interface ICreateByNodeTypeParams extends IBaseCreateNodeParams { export interface ICreateByAssetParams extends IBaseCreateNodeParams { dbURL: string; - test: string; + test?: string; } // TODO 目前先从 3x 迁移,后续在进行优化 From 006922d53b98af34b3ee386fb702920f7319af57 Mon Sep 17 00:00:00 2001 From: "fenge\\flying" Date: Fri, 21 Aug 2026 15:45:22 +0800 Subject: [PATCH 6/6] revert --- src/core/scene/common/node.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/src/core/scene/common/node.ts b/src/core/scene/common/node.ts index dcb5c849c..4c2ba663f 100644 --- a/src/core/scene/common/node.ts +++ b/src/core/scene/common/node.ts @@ -252,7 +252,6 @@ export interface ICreateByNodeTypeParams extends IBaseCreateNodeParams { export interface ICreateByAssetParams extends IBaseCreateNodeParams { dbURL: string; - test?: string; } // TODO 目前先从 3x 迁移,后续在进行优化