框架工具控制Cocos Creator 自动打开预制绑定脚本

This commit is contained in:
dgflash
2026-04-04 22:37:24 +08:00
parent d2c68fbab5
commit da020de1ff
12 changed files with 10 additions and 7 deletions

2
dist/Config.js vendored
View File

@@ -1 +1 @@
"use strict";var _=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var c=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var p=(t,o)=>{for(var s in o)_(t,s,{get:o[s],enumerable:!0})},n=(t,o,s,E)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of c(o))!T.call(t,e)&&e!==s&&_(t,e,{get:()=>o[e],enumerable:!(E=r(o,e))||E.enumerable});return t};var S=t=>n(_({},"__esModule",{value:!0}),t);var b={};p(b,{API_OPEN_ASSET:()=>U,API_STATE:()=>D,ASSETS_DIR:()=>y,ASSET_PROTOCOL:()=>M,CHANNEL_ASSET_DB:()=>u,DEFAULT_PORT:()=>x,HASH_INITIAL:()=>C,HEADER_PROJECT_ID:()=>a,LOCAL_DIR:()=>I,METHOD_OPEN_ASSET:()=>d,METHOD_QUERY_ASSET_INFO:()=>L,METHOD_QUERY_ASSET_META:()=>N,METHOD_QUERY_URL_BY_UUID:()=>P,METHOD_QUERY_UUID_BY_URL:()=>H,PACKAGE_NAME:()=>O,PROJECT_ID_PREFIX:()=>Y,SERVER_HOST:()=>A,SETTINGS_FILE:()=>R});module.exports=S(b);var A="127.0.0.1",x=8456,O="oops",R="vscode-creator-bridge.json",I="local",D="/state",U="/open-asset",a="x-cocos-project-id",u="asset-db",H="query-uuid-by-url",P="query-url-by-uuid",L="query-asset-info",N="query-asset-meta",d="open-asset",M="db://",y="assets",C=2166136261,Y="p_";0&&(module.exports={API_OPEN_ASSET,API_STATE,ASSETS_DIR,ASSET_PROTOCOL,CHANNEL_ASSET_DB,DEFAULT_PORT,HASH_INITIAL,HEADER_PROJECT_ID,LOCAL_DIR,METHOD_OPEN_ASSET,METHOD_QUERY_ASSET_INFO,METHOD_QUERY_ASSET_META,METHOD_QUERY_URL_BY_UUID,METHOD_QUERY_UUID_BY_URL,PACKAGE_NAME,PROJECT_ID_PREFIX,SERVER_HOST,SETTINGS_FILE});
"use strict";var _=Object.defineProperty;var r=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var T=Object.prototype.hasOwnProperty;var n=(t,o)=>{for(var s in o)_(t,s,{get:o[s],enumerable:!0})},S=(t,o,s,E)=>{if(o&&typeof o=="object"||typeof o=="function")for(let e of p(o))!T.call(t,e)&&e!==s&&_(t,e,{get:()=>o[e],enumerable:!(E=r(o,e))||E.enumerable});return t};var c=t=>S(_({},"__esModule",{value:!0}),t);var C={};n(C,{ASSETS_DIR:()=>P,ASSET_PROTOCOL:()=>N,CHANNEL_ASSET_DB:()=>U,DEFAULT_PORT:()=>A,HASH_INITIAL:()=>d,HEADER_PROJECT_ID:()=>I,LOCAL_DIR:()=>D,METHOD_OPEN_ASSET:()=>M,METHOD_QUERY_ASSET_INFO:()=>L,METHOD_QUERY_ASSET_META:()=>a,METHOD_QUERY_URL_BY_UUID:()=>H,METHOD_QUERY_UUID_BY_URL:()=>u,PACKAGE_NAME:()=>O,PROJECT_ID_PREFIX:()=>y,SERVER_HOST:()=>x,SETTINGS_FILE:()=>R});module.exports=c(C);var x="127.0.0.1",A=56688,O="\u3010Oops Framework\u3011",R="bridge.json",D=".oops",I="oops-framework-project-id",U="asset-db",u="query-uuid-by-url",H="query-url-by-uuid",L="query-asset-info",a="query-asset-meta",M="open-asset",N="db://",P="assets",d=2166136261,y="p_";0&&(module.exports={ASSETS_DIR,ASSET_PROTOCOL,CHANNEL_ASSET_DB,DEFAULT_PORT,HASH_INITIAL,HEADER_PROJECT_ID,LOCAL_DIR,METHOD_OPEN_ASSET,METHOD_QUERY_ASSET_INFO,METHOD_QUERY_ASSET_META,METHOD_QUERY_URL_BY_UUID,METHOD_QUERY_UUID_BY_URL,PACKAGE_NAME,PROJECT_ID_PREFIX,SERVER_HOST,SETTINGS_FILE});

1
dist/api/index.js vendored
View File

@@ -1 +0,0 @@
"use strict";var D=Object.create;var f=Object.defineProperty;var M=Object.getOwnPropertyDescriptor;var B=Object.getOwnPropertyNames;var L=Object.getPrototypeOf,$=Object.prototype.hasOwnProperty;var N=(o,r)=>{for(var t in r)f(o,t,{get:r[t],enumerable:!0})},E=(o,r,t,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of B(r))!$.call(o,s)&&s!==t&&f(o,s,{get:()=>r[s],enumerable:!(e=M(r,s))||e.enumerable});return o};var W=(o,r,t)=>(t=o!=null?D(L(o)):{},E(r||!o||!o.__esModule?f(t,"default",{value:o,enumerable:!0}):t,o)),Y=o=>E(f({},"__esModule",{value:!0}),o);var J={};N(J,{OpenAssetAPI:()=>h,StateAPI:()=>g,getOpenAssetAPI:()=>k,getStateAPI:()=>T,resetOpenAssetAPI:()=>q,resetStateAPI:()=>C});module.exports=Y(J);function I(o){return new Promise((r,t)=>{let e="",s=!1;o.on("data",n=>{s||(e+=n.toString())}),o.on("end",()=>{s||r(e)}),o.on("error",n=>{s||(s=!0,t(n))})})}function p(o,r,t){o.statusCode=r,o.setHeader("Content-Type","application/json; charset=utf-8"),o.end(JSON.stringify(t))}var y="x-cocos-project-id",u="asset-db",_="query-uuid-by-url",O="query-url-by-uuid",U="query-asset-info",x="query-asset-meta",A="open-asset",m="db://",v="assets";var c=class{constructor(){this.projectId="";this.projectPath=""}setProjectPath(r){this.projectPath=r}getProjectPath(){return this.projectPath}setProjectId(r){this.projectId=r}getProjectId(){return this.projectId}validateProjectId(r){return r===this.projectId}getRequestMethod(r){return r.method||"GET"}checkRequest(r,t){let e=this.getMethodName(r),s=this.getApiPath();return e==="GET"&&s===r.url?(this.handleRequest(r,t),!0):!1}getMethodName(r){return(r.method||"GET").toUpperCase()}};var g=class extends c{constructor(){super(...arguments);this.port=8456;this.running=!1}setPort(t){this.port=t}getPort(){return this.port}setRunning(t){this.running=t}isRunning(){return this.running}getState(){return{projectId:this.projectId,projectPath:this.projectPath,port:this.port,running:this.running}}async handleRequest(t,e){let s={ok:!0,state:this.getState()};p(e,200,s)}getApiPath(){return"/api/state"}},P=null;function T(){return P||(P=new g),P}function C(){P=null}var R=W(require("path"));var h=class extends c{constructor(){super(...arguments);this.logCallback=null;this.focusWindowCallback=null;this.editorRequestCallback=null}setLogCallback(t){this.logCallback=t}setFocusWindowCallback(t){this.focusWindowCallback=t}setEditorRequestCallback(t){this.editorRequestCallback=t}log(t){this.logCallback&&this.logCallback(t)}focusWindow(){return this.focusWindowCallback?this.focusWindowCallback():!1}async requestEditor(t,e,...s){if(this.editorRequestCallback)return await this.editorRequestCallback(t,e,...s)}normalizeAssetUrl(t){if(!t)return null;let e=t.replace(/\\/g,"/").trim();if(!e)return null;if(e.startsWith(m))return e;if(e.startsWith(`${v}/`))return`${m}${e}`;let s=R.isAbsolute(e)?e.replace(/\\/g,"/"):R.join(this.projectPath,e).replace(/\\/g,"/"),n=`${this.projectPath.replace(/\\/g,"/")}/${v}/`,i=s.toLowerCase(),a=n.toLowerCase();return i.startsWith(a)?`${m}${v}/${s.slice(n.length)}`:null}async getAssetUrlByUuid(t){let e=await this.requestEditor(u,O,t);return typeof e=="string"?e:e&&typeof e.url=="string"?e.url:""}async resolveUuid(t,e){if(t.uuid)return t.uuid;if(!e)return null;let s=await this.requestEditor(u,_,e);if(typeof s=="string"&&s)return s;if(s&&typeof s.uuid=="string")return s.uuid;let n=await this.requestEditor(u,U,e);if(n&&typeof n.uuid=="string")return n.uuid;let i=await this.requestEditor(u,x,e);return i&&typeof i.uuid=="string"?i.uuid:null}async tryOpenByRequest(t,...e){try{return await this.requestEditor(u,t,...e),!0}catch(s){return!1}}async openAsset(t,e,s){let n=t?await this.getAssetUrlByUuid(t):e||"",i=!1,a="";return t&&await this.tryOpenByRequest(A,t)&&(i=!0,a="opened by uuid"),!i&&n&&await this.tryOpenByRequest(A,n)&&(i=!0,a="opened by asset url"),i||(a=`failed to open asset. uuid=${t||"<none>"} assetUrl=${n||"<none>"}`),this.log(`openAsset uuid=${t||"<none>"} focused=${s} opened=${i} url=${n||"<empty>"}`),{ok:i,focused:s,opened:i,assetUrl:n,message:a}}async handleRequest(t,e){try{let s=await I(t),n=s?JSON.parse(s):{},i=String(t.headers[y]||"").trim(),a=String(n.projectId||i).trim();if(!a){p(e,400,{ok:!1,message:"missing projectId"});return}if(!this.validateProjectId(a)){let w={ok:!1,message:"projectId mismatch",projectId:this.projectId};p(e,409,w);return}let d=this.normalizeAssetUrl(n.assetPath),b=await this.resolveUuid(n,d||null);if(!b&&!d){p(e,400,{ok:!1,message:"invalid assetPath/uuid"});return}let H=this.focusWindow(),l=await this.openAsset(b,d||null,H),j={ok:l.ok,uuid:b,focused:l.focused,opened:l.opened,assetUrl:l.assetUrl,message:l.message};p(e,l.ok?200:500,j)}catch(s){p(e,500,{ok:!1,message:(s==null?void 0:s.message)||"open failed"})}}getApiPath(){return"/api/open-asset"}},S=null;function k(){return S||(S=new h),S}function q(){S=null}0&&(module.exports={OpenAssetAPI,StateAPI,getOpenAssetAPI,getStateAPI,resetOpenAssetAPI,resetStateAPI});

View File

@@ -1 +0,0 @@
"use strict";var x=Object.create;var d=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var H=Object.getOwnPropertyNames;var k=Object.getPrototypeOf,j=Object.prototype.hasOwnProperty;var w=(o,r)=>{for(var t in r)d(o,t,{get:r[t],enumerable:!0})},b=(o,r,t,e)=>{if(r&&typeof r=="object"||typeof r=="function")for(let s of H(r))!j.call(o,s)&&s!==t&&d(o,s,{get:()=>r[s],enumerable:!(e=q(r,s))||e.enumerable});return o};var D=(o,r,t)=>(t=o!=null?x(k(o)):{},b(r||!o||!o.__esModule?d(t,"default",{value:o,enumerable:!0}):t,o)),M=o=>b(d({},"__esModule",{value:!0}),o);var L={};w(L,{OpenAssetAPI:()=>v,getOpenAssetAPI:()=>$,resetOpenAssetAPI:()=>B});module.exports=M(L);var E=D(require("path"));function P(o){return new Promise((r,t)=>{let e="",s=!1;o.on("data",n=>{s||(e+=n.toString())}),o.on("end",()=>{s||r(e)}),o.on("error",n=>{s||(s=!0,t(n))})})}function l(o,r,t){o.statusCode=r,o.setHeader("Content-Type","application/json; charset=utf-8"),o.end(JSON.stringify(t))}var y="x-cocos-project-id",u="asset-db",A="query-uuid-by-url",I="query-url-by-uuid",_="query-asset-info",U="query-asset-meta",S="open-asset",h="db://",g="assets";var f=class{constructor(){this.projectId="";this.projectPath=""}setProjectPath(r){this.projectPath=r}getProjectPath(){return this.projectPath}setProjectId(r){this.projectId=r}getProjectId(){return this.projectId}validateProjectId(r){return r===this.projectId}getRequestMethod(r){return r.method||"GET"}checkRequest(r,t){let e=this.getMethodName(r),s=this.getApiPath();return e==="GET"&&s===r.url?(this.handleRequest(r,t),!0):!1}getMethodName(r){return(r.method||"GET").toUpperCase()}};var v=class extends f{constructor(){super(...arguments);this.logCallback=null;this.focusWindowCallback=null;this.editorRequestCallback=null}setLogCallback(t){this.logCallback=t}setFocusWindowCallback(t){this.focusWindowCallback=t}setEditorRequestCallback(t){this.editorRequestCallback=t}log(t){this.logCallback&&this.logCallback(t)}focusWindow(){return this.focusWindowCallback?this.focusWindowCallback():!1}async requestEditor(t,e,...s){if(this.editorRequestCallback)return await this.editorRequestCallback(t,e,...s)}normalizeAssetUrl(t){if(!t)return null;let e=t.replace(/\\/g,"/").trim();if(!e)return null;if(e.startsWith(h))return e;if(e.startsWith(`${g}/`))return`${h}${e}`;let s=E.isAbsolute(e)?e.replace(/\\/g,"/"):E.join(this.projectPath,e).replace(/\\/g,"/"),n=`${this.projectPath.replace(/\\/g,"/")}/${g}/`,i=s.toLowerCase(),a=n.toLowerCase();return i.startsWith(a)?`${h}${g}/${s.slice(n.length)}`:null}async getAssetUrlByUuid(t){let e=await this.requestEditor(u,I,t);return typeof e=="string"?e:e&&typeof e.url=="string"?e.url:""}async resolveUuid(t,e){if(t.uuid)return t.uuid;if(!e)return null;let s=await this.requestEditor(u,A,e);if(typeof s=="string"&&s)return s;if(s&&typeof s.uuid=="string")return s.uuid;let n=await this.requestEditor(u,_,e);if(n&&typeof n.uuid=="string")return n.uuid;let i=await this.requestEditor(u,U,e);return i&&typeof i.uuid=="string"?i.uuid:null}async tryOpenByRequest(t,...e){try{return await this.requestEditor(u,t,...e),!0}catch(s){return!1}}async openAsset(t,e,s){let n=t?await this.getAssetUrlByUuid(t):e||"",i=!1,a="";return t&&await this.tryOpenByRequest(S,t)&&(i=!0,a="opened by uuid"),!i&&n&&await this.tryOpenByRequest(S,n)&&(i=!0,a="opened by asset url"),i||(a=`failed to open asset. uuid=${t||"<none>"} assetUrl=${n||"<none>"}`),this.log(`openAsset uuid=${t||"<none>"} focused=${s} opened=${i} url=${n||"<empty>"}`),{ok:i,focused:s,opened:i,assetUrl:n,message:a}}async handleRequest(t,e){try{let s=await P(t),n=s?JSON.parse(s):{},i=String(t.headers[y]||"").trim(),a=String(n.projectId||i).trim();if(!a){l(e,400,{ok:!1,message:"missing projectId"});return}if(!this.validateProjectId(a)){let C={ok:!1,message:"projectId mismatch",projectId:this.projectId};l(e,409,C);return}let c=this.normalizeAssetUrl(n.assetPath),R=await this.resolveUuid(n,c||null);if(!R&&!c){l(e,400,{ok:!1,message:"invalid assetPath/uuid"});return}let O=this.focusWindow(),p=await this.openAsset(R,c||null,O),T={ok:p.ok,uuid:R,focused:p.focused,opened:p.opened,assetUrl:p.assetUrl,message:p.message};l(e,p.ok?200:500,T)}catch(s){l(e,500,{ok:!1,message:(s==null?void 0:s.message)||"open failed"})}}getApiPath(){return"/api/open-asset"}},m=null;function $(){return m||(m=new v),m}function B(){m=null}0&&(module.exports={OpenAssetAPI,getOpenAssetAPI,resetOpenAssetAPI});

1
dist/api/state.js vendored
View File

@@ -1 +0,0 @@
"use strict";var p=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var g=Object.prototype.hasOwnProperty;var c=(e,t)=>{for(var r in t)p(e,r,{get:t[r],enumerable:!0})},l=(e,t,r,o)=>{if(t&&typeof t=="object"||typeof t=="function")for(let s of d(t))!g.call(e,s)&&s!==r&&p(e,s,{get:()=>t[s],enumerable:!(o=u(t,s))||o.enumerable});return e};var v=e=>l(p({},"__esModule",{value:!0}),e);var E={};c(E,{StateAPI:()=>a,getStateAPI:()=>m,resetStateAPI:()=>P});module.exports=v(E);function h(e,t,r){e.statusCode=t,e.setHeader("Content-Type","application/json; charset=utf-8"),e.end(JSON.stringify(r))}var n=class{constructor(){this.projectId="";this.projectPath=""}setProjectPath(t){this.projectPath=t}getProjectPath(){return this.projectPath}setProjectId(t){this.projectId=t}getProjectId(){return this.projectId}validateProjectId(t){return t===this.projectId}getRequestMethod(t){return t.method||"GET"}checkRequest(t,r){let o=this.getMethodName(t),s=this.getApiPath();return o==="GET"&&s===t.url?(this.handleRequest(t,r),!0):!1}getMethodName(t){return(t.method||"GET").toUpperCase()}};var a=class extends n{constructor(){super(...arguments);this.port=8456;this.running=!1}setPort(r){this.port=r}getPort(){return this.port}setRunning(r){this.running=r}isRunning(){return this.running}getState(){return{projectId:this.projectId,projectPath:this.projectPath,port:this.port,running:this.running}}async handleRequest(r,o){let s={ok:!0,state:this.getState()};h(o,200,s)}getApiPath(){return"/api/state"}},i=null;function m(){return i||(i=new a),i}function P(){i=null}0&&(module.exports={StateAPI,getStateAPI,resetStateAPI});

1
dist/bridge/HttpServer.js vendored Normal file
View File

@@ -0,0 +1 @@
"use strict";var p=Object.create;var o=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var v=Object.getOwnPropertyNames;var l=Object.getPrototypeOf,g=Object.prototype.hasOwnProperty;var m=(r,t)=>{for(var e in t)o(r,e,{get:t[e],enumerable:!0})},h=(r,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of v(t))!g.call(r,n)&&n!==e&&o(r,n,{get:()=>t[n],enumerable:!(s=d(t,n))||s.enumerable});return r};var c=(r,t,e)=>(e=r!=null?p(l(r)):{},h(t||!r||!r.__esModule?o(e,"default",{value:r,enumerable:!0}):e,r)),f=r=>h(o({},"__esModule",{value:!0}),r);var R={};m(R,{HttpServer:()=>a,getRequestMethod:()=>H,parseUrlPath:()=>b,readRequestBody:()=>S,sendJsonResponse:()=>P});module.exports=f(R);var u=c(require("http")),a=class{constructor(t){this.server=null;this.host=t.host,this.defaultPort=t.defaultPort,this.port=this.defaultPort,this.requestHandler=t.requestHandler,this.logger=t.logger||console.log,this.onPortInUse=t.onPortInUse,this.onStart=t.onStart,this.onError=t.onError}getState(){return{running:this.isRunning(),port:this.port,host:this.host}}getPort(){return this.port}isRunning(){return!!this.server}start(t){this.stop();let e=t||this.defaultPort;this.createServer(e)}stop(){this.server&&(this.server.close(),this.server=null)}createServer(t){this.server=u.createServer((e,s)=>{this.handleRequest(e,s)}),this.server.once("error",e=>{if((e==null?void 0:e.code)==="EADDRINUSE"&&t<65535){this.onPortInUse&&this.onPortInUse(t,t+1),this.createServer(t+1);return}this.onError&&this.onError(e)}),this.server.listen(t,this.host,()=>{var s;let e=(s=this.server)==null?void 0:s.address();e&&typeof e=="object"?this.port=Number(e.port||t):this.port=t,this.onStart&&this.onStart(this.port)})}handleRequest(t,e){Promise.resolve(this.requestHandler(t,e)).catch(s=>{e.headersSent||(e.statusCode=500,e.setHeader("Content-Type","application/json; charset=utf-8"),e.end(JSON.stringify({ok:!1,message:(s==null?void 0:s.message)||"internal error"})))})}};function S(r){return new Promise((t,e)=>{let s="",n=!1;r.on("data",i=>{n||(s+=i.toString())}),r.on("end",()=>{n||t(s)}),r.on("error",i=>{n||(n=!0,e(i))})})}function P(r,t,e){r.statusCode=t,r.setHeader("Content-Type","application/json; charset=utf-8"),r.end(JSON.stringify(e))}function b(r){return(r||"").split("?")[0]}function H(r){return(r.method||"").toUpperCase()}0&&(module.exports={HttpServer,getRequestMethod,parseUrlPath,readRequestBody,sendJsonResponse});

1
dist/bridge/api/OpenAssetAPI.js vendored Normal file
View File

@@ -0,0 +1 @@
"use strict";var k=Object.create;var d=Object.defineProperty;var q=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var H=Object.getPrototypeOf,j=Object.prototype.hasOwnProperty;var w=(o,s)=>{for(var t in s)d(o,t,{get:s[t],enumerable:!0})},P=(o,s,t,e)=>{if(s&&typeof s=="object"||typeof s=="function")for(let r of x(s))!j.call(o,r)&&r!==t&&d(o,r,{get:()=>s[r],enumerable:!(e=q(s,r))||e.enumerable});return o};var D=(o,s,t)=>(t=o!=null?k(H(o)):{},P(s||!o||!o.__esModule?d(t,"default",{value:o,enumerable:!0}):t,o)),M=o=>P(d({},"__esModule",{value:!0}),o);var N={};w(N,{OpenAssetAPI:()=>v,getOpenAssetAPI:()=>L,resetOpenAssetAPI:()=>B});module.exports=M(N);var E=D(require("path"));function S(o){return new Promise((s,t)=>{let e="",r=!1;o.on("data",n=>{r||(e+=n.toString())}),o.on("end",()=>{r||s(e)}),o.on("error",n=>{r||(r=!0,t(n))})})}function u(o,s,t){o.statusCode=s,o.setHeader("Content-Type","application/json; charset=utf-8"),o.end(JSON.stringify(t))}var y="oops-framework-project-id",l="asset-db",A="query-uuid-by-url",I="query-url-by-uuid",U="query-asset-info",_="query-asset-meta",b="open-asset",h="db://",g="assets";var f=class{constructor(){this.projectId="";this.projectPath=""}setProjectPath(s){this.projectPath=s}getProjectPath(){return this.projectPath}setProjectId(s){this.projectId=s}getProjectId(){return this.projectId}validateProjectId(s){return s===this.projectId}getRequestMethod(s){return s.method||"GET"}checkRequest(s,t){let e=this.getMethodName(s),r=this.getApiPath();return e==="GET"&&r===s.url?(this.handleRequest(s,t),!0):!1}getMethodName(s){return(s.method||"GET").toUpperCase()}};var v=class extends f{constructor(){super(...arguments);this.logCallback=null;this.focusWindowCallback=null;this.editorRequestCallback=null}setLogCallback(t){this.logCallback=t}setFocusWindowCallback(t){this.focusWindowCallback=t}setEditorRequestCallback(t){this.editorRequestCallback=t}log(t){this.logCallback&&this.logCallback(t)}focusWindow(){return this.focusWindowCallback?this.focusWindowCallback():!1}async requestEditor(t,e,...r){if(this.editorRequestCallback)return await this.editorRequestCallback(t,e,...r)}normalizeAssetUrl(t){if(!t)return null;let e=t.replace(/\\/g,"/").trim();if(!e)return null;if(e.startsWith(h))return e;if(e.startsWith(`${g}/`))return`${h}${e}`;let r=E.isAbsolute(e)?e.replace(/\\/g,"/"):E.join(this.projectPath,e).replace(/\\/g,"/"),n=`${this.projectPath.replace(/\\/g,"/")}/${g}/`,i=r.toLowerCase(),a=n.toLowerCase();return i.startsWith(a)?`${h}${g}/${r.slice(n.length)}`:null}async getAssetUrlByUuid(t){let e=await this.requestEditor(l,I,t);return typeof e=="string"?e:e&&typeof e.url=="string"?e.url:""}async resolveUuid(t,e){if(t.uuid)return t.uuid;if(!e)return null;let r=await this.requestEditor(l,A,e);if(typeof r=="string"&&r)return r;if(r&&typeof r.uuid=="string")return r.uuid;let n=await this.requestEditor(l,U,e);if(n&&typeof n.uuid=="string")return n.uuid;let i=await this.requestEditor(l,_,e);return i&&typeof i.uuid=="string"?i.uuid:null}async tryOpenByRequest(t,...e){try{return await this.requestEditor(l,t,...e),!0}catch(r){return!1}}async openAsset(t,e,r){let n=t?await this.getAssetUrlByUuid(t):e||"",i=!1,a="";return t&&await this.tryOpenByRequest(b,t)&&(i=!0,a="\u901A\u8FC7 UUID \u6253\u5F00"),!i&&n&&await this.tryOpenByRequest(b,n)&&(i=!0,a="\u901A\u8FC7\u8D44\u6E90 URL \u6253\u5F00"),i||(a=`\u6253\u5F00\u8D44\u6E90\u5931\u8D25 uuid=${t||"<\u65E0>"} assetUrl=${n||"<\u65E0>"}`),{ok:i,focused:r,opened:i,assetUrl:n,message:a}}async handleRequest(t,e){try{let r=await S(t),n=r?JSON.parse(r):{},i=String(t.headers[y]||"").trim(),a=String(n.projectId||i).trim();if(!a){u(e,400,{ok:!1,message:"\u7F3A\u5C11\u9879\u76EE\u7F16\u53F7"});return}if(!this.validateProjectId(a)){let T={ok:!1,message:"\u9879\u76EE\u7F16\u53F7\u4E0D\u5339\u914D",projectId:this.projectId};u(e,409,T);return}let c=this.normalizeAssetUrl(n.assetPath),R=await this.resolveUuid(n,c||null);if(!R&&!c){u(e,400,{ok:!1,message:"\u65E0\u6548\u7684\u8D44\u6E90\u8DEF\u5F84\u6216 UUID"});return}let O=this.focusWindow(),p=await this.openAsset(R,c||null,O),C={ok:p.ok,uuid:R,focused:p.focused,opened:p.opened,assetUrl:p.assetUrl,message:p.message};u(e,p.ok?200:500,C)}catch(r){u(e,500,{ok:!1,message:(r==null?void 0:r.message)||"\u6253\u5F00\u5931\u8D25"})}}getApiPath(){return"/api/OpenAsset"}getMethod(){return"POST"}},m=null;function L(){return m||(m=new v),m}function B(){m=null}0&&(module.exports={OpenAssetAPI,getOpenAssetAPI,resetOpenAssetAPI});

1
dist/bridge/api/StateAPI.js vendored Normal file
View File

@@ -0,0 +1 @@
"use strict";var p=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var d=Object.getOwnPropertyNames;var c=Object.prototype.hasOwnProperty;var g=(e,t)=>{for(var r in t)p(e,r,{get:t[r],enumerable:!0})},l=(e,t,r,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of d(t))!c.call(e,o)&&o!==r&&p(e,o,{get:()=>t[o],enumerable:!(s=u(t,o))||s.enumerable});return e};var m=e=>l(p({},"__esModule",{value:!0}),e);var f={};g(f,{StateAPI:()=>a,getStateAPI:()=>S,resetStateAPI:()=>P});module.exports=m(f);function h(e,t,r){e.statusCode=t,e.setHeader("Content-Type","application/json; charset=utf-8"),e.end(JSON.stringify(r))}var n=class{constructor(){this.projectId="";this.projectPath=""}setProjectPath(t){this.projectPath=t}getProjectPath(){return this.projectPath}setProjectId(t){this.projectId=t}getProjectId(){return this.projectId}validateProjectId(t){return t===this.projectId}getRequestMethod(t){return t.method||"GET"}checkRequest(t,r){let s=this.getMethodName(t),o=this.getApiPath();return s==="GET"&&o===t.url?(this.handleRequest(t,r),!0):!1}getMethodName(t){return(t.method||"GET").toUpperCase()}};var a=class extends n{constructor(){super(...arguments);this.port=56688;this.running=!1}setPort(r){this.port=r}getPort(){return this.port}setRunning(r){this.running=r}isRunning(){return this.running}getState(){return{projectId:this.projectId,projectPath:this.projectPath,port:this.port,running:this.running}}async handleRequest(r,s){let o={ok:!0,state:this.getState()};h(s,200,o)}getApiPath(){return"/api/State"}getMethod(){return"GET"}},i=null;function S(){return i||(i=new a),i}function P(){i=null}0&&(module.exports={StateAPI,getStateAPI,resetStateAPI});

View File

@@ -1 +0,0 @@
"use strict";var u=Object.create;var o=Object.defineProperty;var d=Object.getOwnPropertyDescriptor;var g=Object.getOwnPropertyNames;var v=Object.getPrototypeOf,l=Object.prototype.hasOwnProperty;var m=(r,t)=>{for(var e in t)o(r,e,{get:t[e],enumerable:!0})},h=(r,t,e,s)=>{if(t&&typeof t=="object"||typeof t=="function")for(let n of g(t))!l.call(r,n)&&n!==e&&o(r,n,{get:()=>t[n],enumerable:!(s=d(t,n))||s.enumerable});return r};var S=(r,t,e)=>(e=r!=null?u(v(r)):{},h(t||!r||!r.__esModule?o(e,"default",{value:r,enumerable:!0}):e,r)),c=r=>h(o({},"__esModule",{value:!0}),r);var R={};m(R,{HttpServer:()=>a,getRequestMethod:()=>b,parseUrlPath:()=>P,readRequestBody:()=>f,sendJsonResponse:()=>H});module.exports=c(R);var p=S(require("http")),a=class{constructor(t){this.server=null;this.host=t.host||"127.0.0.1",this.defaultPort=t.defaultPort||8456,this.port=this.defaultPort,this.requestHandler=t.requestHandler,this.logger=t.logger||console.log,this.onPortInUse=t.onPortInUse,this.onStart=t.onStart,this.onError=t.onError}getState(){return{running:this.isRunning(),port:this.port,host:this.host}}getPort(){return this.port}isRunning(){return!!this.server}start(t){this.stop();let e=t||this.defaultPort;this.createServer(e)}stop(){this.server&&(this.server.close(),this.server=null,this.logger("[HttpServer] \u670D\u52A1\u5668\u5DF2\u505C\u6B62"))}createServer(t){this.server=p.createServer((e,s)=>{this.handleRequest(e,s)}),this.server.once("error",e=>{if((e==null?void 0:e.code)==="EADDRINUSE"&&t<65535){this.logger(`[HttpServer] \u7AEF\u53E3 ${t} \u88AB\u5360\u7528\uFF0C\u5C1D\u8BD5 ${t+1}`),this.onPortInUse&&this.onPortInUse(t,t+1),this.createServer(t+1);return}this.logger(`[HttpServer] \u542F\u52A8\u5931\u8D25: ${(e==null?void 0:e.message)||e}`),this.onError&&this.onError(e)}),this.server.listen(t,this.host,()=>{var s;let e=(s=this.server)==null?void 0:s.address();e&&typeof e=="object"?this.port=Number(e.port||t):this.port=t,this.logger(`[HttpServer] \u76D1\u542C ${this.host}:${this.port}`),this.onStart&&this.onStart(this.port)})}handleRequest(t,e){Promise.resolve(this.requestHandler(t,e)).catch(s=>{this.logger(`[HttpServer] \u8BF7\u6C42\u5904\u7406\u9519\u8BEF: ${(s==null?void 0:s.message)||s}`),e.headersSent||(e.statusCode=500,e.setHeader("Content-Type","application/json; charset=utf-8"),e.end(JSON.stringify({ok:!1,message:(s==null?void 0:s.message)||"internal error"})))})}};function f(r){return new Promise((t,e)=>{let s="",n=!1;r.on("data",i=>{n||(s+=i.toString())}),r.on("end",()=>{n||t(s)}),r.on("error",i=>{n||(n=!0,e(i))})})}function H(r,t,e){r.statusCode=t,r.setHeader("Content-Type","application/json; charset=utf-8"),r.end(JSON.stringify(e))}function P(r){return(r||"").split("?")[0]}function b(r){return(r.method||"").toUpperCase()}0&&(module.exports={HttpServer,getRequestMethod,parseUrlPath,readRequestBody,sendJsonResponse});

1
dist/common/Scene.js vendored Normal file
View File

@@ -0,0 +1 @@
"use strict";var i=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var p=Object.getOwnPropertyNames;var w=Object.prototype.hasOwnProperty;var q=(t,e)=>{for(var a in e)i(t,a,{get:e[a],enumerable:!0})},C=(t,e,a,r)=>{if(e&&typeof e=="object"||typeof e=="function")for(let s of p(e))!w.call(t,s)&&s!==a&&i(t,s,{get:()=>e[s],enumerable:!(r=b(e,s))||r.enumerable});return t};var I=t=>C(i({},"__esModule",{value:!0}),t);var D={};q(D,{load:()=>k,methods:()=>x,unload:()=>E});module.exports=I(D);function k(){}function E(){}var l=t=>new Promise(e=>setTimeout(e,t));async function M(t){var r;let e=global.Editor;if(!((r=e==null?void 0:e.Message)!=null&&r.request))return{ok:!1,message:"Editor.Message \u4E0D\u53EF\u7528"};let a=!1;for(let s=0;s<40;s++){try{if(await e.Message.request("asset-db","query-asset-info",t)){a=!0;break}}catch(n){}try{await e.Message.request("asset-db","refresh-asset",t)}catch(n){}await l(250)}return a?{ok:!0}:{ok:!1,message:`\u811A\u672C\u8D44\u6E90\u672A\u5BFC\u5165: ${t}`}}async function $(t){let{js:e}=require("cc");for(let a=0;a<120;a++){let r=e.getClassByName(t);if(r)return r;await l(250)}return null}var x={async createPrefab(t,e,a,r){let s=null;try{let n=global.Editor,{Node:g,Layers:m,UITransform:d}=require("cc"),c=await M(r);if(!c.ok)return{success:!1,message:c.message||"\u811A\u672C\u8D44\u6E90\u5BFC\u5165\u5931\u8D25"};let u=await $(e);if(!u)return{success:!1,message:`\u7C7B ${e} \u52A0\u8F7D\u8D85\u65F6\uFF0C\u8BF7\u786E\u4FDD\u811A\u672C\u5DF2\u4FDD\u5B58\u3001\u6210\u529F\u5BFC\u5165\u5E76\u5B8C\u6210\u7F16\u8BD1\u3002\u811A\u672C\u8DEF\u5F84: ${r}`};let y=t.replace(".prefab","");s=new g(y),s.layer=m.Enum.UI_2D,s.addComponent(d);let o=s.addComponent(u);if(!o)return{success:!1,message:`\u7EC4\u4EF6 ${e} \u6302\u8F7D\u5931\u8D25`};typeof o.resetInEditor=="function"&&o.resetInEditor();let f=global.cce.Prefab.generatePrefabDataFromNode(s);return await n.Message.request("asset-db","create-asset",a,f.prefabData||f),{success:!0,url:a,message:"\u521B\u5EFA\u6210\u529F"}}catch(n){return{success:!1,message:n.message||"\u521B\u5EFA\u5931\u8D25"}}finally{s!=null&&s.isValid&&s.destroy()}}};0&&(module.exports={load,methods,unload});

2
dist/main.js vendored

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -28,6 +28,9 @@
"readonly": false
}
},
"scene": {
"script": "./dist/common/Scene.js"
},
"menu": [
{