@fps-games/editor-deployment 0.2.3-beta.6 → 0.2.3-beta.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/fps-editor-prepare.mjs +3 -3
- package/bin/fps-editor-project.mjs +9 -9
- package/licenses/THIRD_PARTY_NOTICES.txt +2 -2
- package/manifest.json +216 -216
- package/npm-shrinkwrap.json +2 -2
- package/package.json +5 -5
- package/public/assets/animation-BJ8XM1EP.js.gz +0 -0
- package/public/assets/animationGroup-nIU37qTl.js.gz +0 -0
- package/public/assets/arcRotateCamera-Bpb6_-jM.js.gz +0 -0
- package/public/assets/babylon-core-B6Ot-GOK.js.gz +0 -0
- package/public/assets/babylon-core-DBdQTkWG.js.gz +0 -0
- package/public/assets/basisTextureLoader-xaH1TU2T.js.gz +0 -0
- package/public/assets/bumpVertex-CydMViY3.js.gz +0 -0
- package/public/assets/bumpVertex-bM0VcD-v.js.gz +0 -0
- package/public/assets/chromaticAberration.fragment-2LQpSY6n.js.gz +0 -0
- package/public/assets/chromaticAberration.fragment-CPC2jGBk.js.gz +0 -0
- package/public/assets/circleOfConfusion.fragment-DWehhKOk.js.gz +0 -0
- package/public/assets/circleOfConfusion.fragment-WIeIzKLd.js.gz +0 -0
- package/public/assets/clipPlaneFragment-BQiHvjzo.js.gz +0 -0
- package/public/assets/clipPlaneVertex-D5EB-X5S.js.gz +0 -0
- package/public/assets/color.fragment-0xZe_dSa.js.gz +0 -0
- package/public/assets/color.fragment-BQNpLnxa.js.gz +0 -0
- package/public/assets/color.vertex-0geH1BI8.js.gz +0 -0
- package/public/assets/color.vertex-qtb2-mc5.js.gz +0 -0
- package/public/assets/dds-IzbrFkh8.js.gz +0 -0
- package/public/assets/ddsTextureLoader-D3ROWbwv.js.gz +0 -0
- package/public/assets/default.fragment-BAHNlmD5.js.gz +0 -0
- package/public/assets/default.fragment-D3MA9CRV.js.gz +0 -0
- package/public/assets/default.vertex-B1KwtIUb.js.gz +0 -0
- package/public/assets/default.vertex-Mne8Sq_G.js.gz +0 -0
- package/public/assets/defaultUboDeclaration-00t3po2f.js.gz +0 -0
- package/public/assets/defaultUboDeclaration-DAuovVEA.js.gz +0 -0
- package/public/assets/depth.fragment-Da86gbwP.js.gz +0 -0
- package/public/assets/depth.vertex-DPT_V_9f.js.gz +0 -0
- package/public/assets/depthBoxBlur.fragment-tYNfbhdh.js.gz +0 -0
- package/public/assets/depthBoxBlur.fragment-zrJ9DLe5.js.gz +0 -0
- package/public/assets/depthOfFieldMerge.fragment-Car-ami-.js.gz +0 -0
- package/public/assets/depthOfFieldMerge.fragment-eO7Ot6AR.js.gz +0 -0
- package/public/assets/easing-BdugUZqW.js.gz +0 -0
- package/public/assets/editor-core-plugin-host-c2002442.js.gz +0 -0
- package/public/assets/exrTextureLoader-DYq9r93V.js.gz +0 -0
- package/public/assets/flowGraphArrayIndexBlock-C3zDMjuo.js.gz +0 -0
- package/public/assets/flowGraphBezierCurveEasingBlock-DDoK8_8l.js.gz +0 -0
- package/public/assets/flowGraphBinaryOperationBlock-BKlR9DS-.js.gz +0 -0
- package/public/assets/flowGraphBranchBlock-Bup839Qd.js.gz +0 -0
- package/public/assets/flowGraphCachedOperationBlock-DnmbMTY7.js.gz +0 -0
- package/public/assets/flowGraphCancelDelayBlock-B9MfNdwj.js.gz +0 -0
- package/public/assets/flowGraphCodeExecutionBlock-auEOflkO.js.gz +0 -0
- package/public/assets/flowGraphConditionalDataBlock-BAia9WED.js.gz +0 -0
- package/public/assets/flowGraphConsoleLogBlock--6MvrOCG.js.gz +0 -0
- package/public/assets/flowGraphConstantBlock-FOfDeLIf.js.gz +0 -0
- package/public/assets/flowGraphContextBlock-BP5dmyKZ.js.gz +0 -0
- package/public/assets/flowGraphCounterBlock-DjKMvUGB.js.gz +0 -0
- package/public/assets/flowGraphDataSwitchBlock-gSJm410f.js.gz +0 -0
- package/public/assets/flowGraphDebounceBlock-CO5ptvWG.js.gz +0 -0
- package/public/assets/flowGraphDoNBlock-Bf26kum1.js.gz +0 -0
- package/public/assets/flowGraphEasingBlock-DtnL-aP_.js.gz +0 -0
- package/public/assets/flowGraphFlipFlopBlock-Bh_IN41P.js.gz +0 -0
- package/public/assets/flowGraphForLoopBlock-C3CLz9Iv.js.gz +0 -0
- package/public/assets/flowGraphFunctionReferenceBlock-Bz40tn10.js.gz +0 -0
- package/public/assets/flowGraphGetAssetBlock-DYP1H9Hj.js.gz +0 -0
- package/public/assets/flowGraphGetPropertyBlock-B6XVNxDR.js.gz +0 -0
- package/public/assets/flowGraphGetVariableBlock-BvaNDTu7.js.gz +0 -0
- package/public/assets/flowGraphIndexOfBlock-qm1Ab3oN.js.gz +0 -0
- package/public/assets/flowGraphInterpolationBlock-CmG25tSZ.js.gz +0 -0
- package/public/assets/flowGraphJsonPointerParserBlock-C8rfhc4j.js.gz +0 -0
- package/public/assets/flowGraphMathBlocks-BdiMH3MQ.js.gz +0 -0
- package/public/assets/flowGraphMathCombineExtractBlocks-CXvPWL3b.js.gz +0 -0
- package/public/assets/flowGraphMatrixMathBlocks-Cal7WQ7i.js.gz +0 -0
- package/public/assets/flowGraphMeshPickEventBlock-B8EU7KmL.js.gz +0 -0
- package/public/assets/flowGraphMultiGateBlock-GMcU5jv7.js.gz +0 -0
- package/public/assets/flowGraphPauseAnimationBlock-BKUeGFEQ.js.gz +0 -0
- package/public/assets/flowGraphPlayAnimationBlock-vvCkTY_Z.js.gz +0 -0
- package/public/assets/flowGraphPointerOutEventBlock-EEJ78HAF.js.gz +0 -0
- package/public/assets/flowGraphPointerOverEventBlock-QMzEzISN.js.gz +0 -0
- package/public/assets/flowGraphReceiveCustomEventBlock-B5jEx7xE.js.gz +0 -0
- package/public/assets/flowGraphSceneReadyEventBlock-MjViOZsL.js.gz +0 -0
- package/public/assets/flowGraphSceneTickEventBlock-lyjGPNYo.js.gz +0 -0
- package/public/assets/flowGraphSendCustomEventBlock-M0LLhV7D.js.gz +0 -0
- package/public/assets/flowGraphSequenceBlock-DocFLI4M.js.gz +0 -0
- package/public/assets/flowGraphSetDelayBlock-BDoJj0I_.js.gz +0 -0
- package/public/assets/flowGraphSetPropertyBlock-9jao3AHa.js.gz +0 -0
- package/public/assets/flowGraphSetVariableBlock-buwJMv9v.js.gz +0 -0
- package/public/assets/flowGraphStopAnimationBlock-CDWhmsC8.js.gz +0 -0
- package/public/assets/flowGraphSwitchBlock-DG5ReWET.js.gz +0 -0
- package/public/assets/flowGraphThrottleBlock-Bgyx9UOo.js.gz +0 -0
- package/public/assets/flowGraphTransformCoordinatesSystemBlock-CUUmRj2j.js.gz +0 -0
- package/public/assets/flowGraphTypeToTypeBlocks-D7N8ZT_V.js.gz +0 -0
- package/public/assets/flowGraphUnaryOperationBlock-Bu73VxMC.js.gz +0 -0
- package/public/assets/flowGraphVectorMathBlocks-CqVzbdAw.js.gz +0 -0
- package/public/assets/flowGraphWaitAllBlock-xmBmiluG.js.gz +0 -0
- package/public/assets/flowGraphWhileLoopBlock-Ct2rHXgO.js.gz +0 -0
- package/public/assets/fogFragmentDeclaration-C-9jZMBi.js.gz +0 -0
- package/public/assets/fogFragmentDeclaration-CpAbKvc3.js.gz +0 -0
- package/public/assets/glowBlurPostProcess.fragment-C77x1kl1.js.gz +0 -0
- package/public/assets/glowBlurPostProcess.fragment-C7miknry.js.gz +0 -0
- package/public/assets/glowMapGeneration.fragment-BAqrUGS4.js.gz +0 -0
- package/public/assets/glowMapGeneration.fragment-CMvy-ILZ.js.gz +0 -0
- package/public/assets/glowMapGeneration.vertex-BThT8Jce.js.gz +0 -0
- package/public/assets/glowMapGeneration.vertex-mq9WR5EZ.js.gz +0 -0
- package/public/assets/glowMapMerge.fragment-BtMIQDli.js.gz +0 -0
- package/public/assets/glowMapMerge.fragment-CYj1SIfc.js.gz +0 -0
- package/public/assets/glowMapMerge.vertex-BilMgMCX.js.gz +0 -0
- package/public/assets/glowMapMerge.vertex-ChJNqQPz.js.gz +0 -0
- package/public/assets/grain.fragment-D6WdAOpZ.js.gz +0 -0
- package/public/assets/grain.fragment-DCpxKIZw.js.gz +0 -0
- package/public/assets/harmonicsFunctions-B5nauyTb.js.gz +0 -0
- package/public/assets/harmonicsFunctions-DVIRrUZs.js.gz +0 -0
- package/public/assets/hdrTextureLoader-Dfs_Fv5B.js.gz +0 -0
- package/public/assets/hemisphericLight-BkYyeXbK.js.gz +0 -0
- package/public/assets/iesTextureLoader-I2E-BXCc.js.gz +0 -0
- package/public/assets/index-CzHwtW4R.js.gz +0 -0
- package/public/assets/index-Dk6-vu7X.js +1 -0
- package/public/assets/index-Dk6-vu7X.js.br +0 -0
- package/public/assets/index-Dk6-vu7X.js.gz +0 -0
- package/public/assets/instancesDeclaration-DcwHJpHY.js.gz +0 -0
- package/public/assets/ktxTextureLoader-zpgT--10.js.gz +0 -0
- package/public/assets/lazy-CI-V5lCV.js.gz +0 -0
- package/public/assets/lod.fragment-B28SQFUx.js.gz +0 -0
- package/public/assets/lod.fragment-DOjU_E37.js.gz +0 -0
- package/public/assets/lodCube.fragment-B_ALsGmh.js.gz +0 -0
- package/public/assets/lodCube.fragment-CzeVIOa3.js.gz +0 -0
- package/public/assets/logDepthFragment-BaJ2YjZ0.js.gz +0 -0
- package/public/assets/logDepthVertex-B8jNoEwN.js.gz +0 -0
- package/public/assets/logDepthVertex-xgQTn7wg.js.gz +0 -0
- package/public/assets/mesh.vertexData.functions-BXkNVxNr.js.gz +0 -0
- package/public/assets/meshUboDeclaration-C5p-TivH.js.gz +0 -0
- package/public/assets/meshUboDeclaration-DKldQKni.js.gz +0 -0
- package/public/assets/morphTargetsVertex-BDbfSote.js.gz +0 -0
- package/public/assets/oitFinalSimpleBlend.fragment-DtE63qrD.js.gz +0 -0
- package/public/assets/oitFinalSimpleBlend.fragment-ZwpH3v_v.js.gz +0 -0
- package/public/assets/oitFragment-B8hFhX-8.js.gz +0 -0
- package/public/assets/oitFragment-B_HlWcYZ.js.gz +0 -0
- package/public/assets/openpbrMaterial-t_lYoXh4.js.gz +0 -0
- package/public/assets/outline.fragment-DEsg98mo.js.gz +0 -0
- package/public/assets/outline.fragment-WqsugjI-.js.gz +0 -0
- package/public/assets/outline.vertex-CVL3AfNh.js.gz +0 -0
- package/public/assets/outline.vertex-CtQ-HC3X.js.gz +0 -0
- package/public/assets/passCube.fragment-CHI4OPgd.js.gz +0 -0
- package/public/assets/passCube.fragment-DLbzh6pI.js.gz +0 -0
- package/public/assets/pbr.fragment-DHPEcGrm.js.gz +0 -0
- package/public/assets/pbr.fragment-KiX_RvyZ.js.gz +0 -0
- package/public/assets/pbr.vertex-CVSRg4tx.js.gz +0 -0
- package/public/assets/pbr.vertex-Dp30Rtkl.js.gz +0 -0
- package/public/assets/playable-sdk-Cz5ms1M8.js +8 -0
- package/public/assets/playable-sdk-Cz5ms1M8.js.br +0 -0
- package/public/assets/playable-sdk-Cz5ms1M8.js.gz +0 -0
- package/public/assets/playable-standard-project-CgBNJ6kY.js +5070 -0
- package/public/assets/playable-standard-project-CgBNJ6kY.js.br +0 -0
- package/public/assets/playable-standard-project-CgBNJ6kY.js.gz +0 -0
- package/public/assets/rgbdDecode.fragment-CU4ChTYE.js.gz +0 -0
- package/public/assets/rgbdDecode.fragment-DhrCd3U4.js.gz +0 -0
- package/public/assets/rgbdEncode.fragment-Bt1zaovT.js.gz +0 -0
- package/public/assets/rgbdEncode.fragment-CfKDkRU3.js.gz +0 -0
- package/public/assets/sceneLoader-DS5g2vTC.js.gz +0 -0
- package/public/assets/screenSpaceCurvature.fragment-Od67z-rQ.js.gz +0 -0
- package/public/assets/selection.fragment-CRMhdE35.js.gz +0 -0
- package/public/assets/selection.fragment-cSqXB6nx.js.gz +0 -0
- package/public/assets/selection.vertex-B5sPJWi2.js.gz +0 -0
- package/public/assets/selection.vertex-Dp4qd1GF.js.gz +0 -0
- package/public/assets/selectionOutline.fragment-CaYdhbIY.js.gz +0 -0
- package/public/assets/selectionOutline.fragment-RBpUe89m.js.gz +0 -0
- package/public/assets/shadowMap.fragment-BecpzSny.js.gz +0 -0
- package/public/assets/shadowMap.fragment-BhrOFpmK.js.gz +0 -0
- package/public/assets/shadowMap.vertex-DV4Ec23Y.js.gz +0 -0
- package/public/assets/shadowMap.vertex-Dpx2-6XS.js.gz +0 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-BHumE7-J.js.gz +0 -0
- package/public/assets/shadowMapFragmentSoftTransparentShadow-CrPC6Hns.js.gz +0 -0
- package/public/assets/sharpen.fragment-CPdQPlDe.js.gz +0 -0
- package/public/assets/textureMerger.fragment-BNxx2w1v.js.gz +0 -0
- package/public/assets/textureMerger.fragment-CPq4n9w5.js.gz +0 -0
- package/public/assets/tgaTextureLoader-B7dlONGx.js.gz +0 -0
- package/public/assets/vertexColorMixing-BUQkJeP0.js.gz +0 -0
- package/public/assets/vertexColorMixing-Co5x3WYA.js.gz +0 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-D01l1w1u.js.gz +0 -0
- package/public/assets/volumetricLightingBlendVolume.fragment-Dq5kceRW.js.gz +0 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-BCxtzv0C.js.gz +0 -0
- package/public/assets/volumetricLightingRenderVolume.fragment-DwEKCs2S.js.gz +0 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-CNPaSIo7.js.gz +0 -0
- package/public/assets/volumetricLightingRenderVolume.vertex-EiQlWi_X.js.gz +0 -0
- package/public/assets/webAudioBus-DYpSKoOA.js.gz +0 -0
- package/public/assets/webAudioMainBus-CP3f56US.js.gz +0 -0
- package/public/assets/workerPool-H9Ji3mCo.js.gz +0 -0
- package/public/index.html +3 -3
- package/public/index.html.br +0 -0
- package/public/index.html.gz +0 -0
- package/runtime/editor-control-plane.mjs +3 -3
- package/worker/editor-service-worker.mjs +23 -23
- package/public/assets/index-nxfO_jYU.js +0 -1
- package/public/assets/index-nxfO_jYU.js.br +0 -0
- package/public/assets/index-nxfO_jYU.js.gz +0 -0
- package/public/assets/playable-sdk-D6RL-8B7.js +0 -135
- package/public/assets/playable-sdk-D6RL-8B7.js.br +0 -0
- package/public/assets/playable-sdk-D6RL-8B7.js.gz +0 -0
- package/public/assets/playable-standard-project-CkKWpnr-.js +0 -4943
- package/public/assets/playable-standard-project-CkKWpnr-.js.br +0 -0
- package/public/assets/playable-standard-project-CkKWpnr-.js.gz +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{createHash as
|
|
3
|
-
`,{encoding:"utf8",mode:384}),await
|
|
4
|
-
`),await
|
|
2
|
+
import{createHash as w,randomBytes as z}from"node:crypto";import{chmod as K,copyFile as x,mkdir as u,mkdtemp as G,readFile as m,readdir as Q,rename as N,rm as l,stat as g,writeFile as A}from"node:fs/promises";import{fileURLToPath as X,pathToFileURL as Y}from"node:url";import r from"node:path";import T from"node:path";function R(t){let e=[],o;for(let i=0;i<t.length;i+=1){let s=t[i];if(s!=="--project-root"&&!s.startsWith("--project-root=")){e.push(s);continue}if(o!==void 0)throw new Error("--project-root may only be provided once.");let a=s==="--project-root"?t[++i]:s.slice(15);if(a===void 0||!a.trim()||a.startsWith("--"))throw new Error("--project-root requires a non-empty path.");o=a}return{argv:e,projectRoot:T.resolve(process.cwd(),o??"."),explicit:o!==void 0}}import{existsSync as J,statSync as M}from"node:fs";import{registerHooks as V}from"node:module";import D from"node:path";import{fileURLToPath as W,pathToFileURL as C}from"node:url";var k=[".ts",".mts",".js",".mjs",".cjs"];async function F(t){let e=V({resolve:B});try{return await import(t)}finally{e.deregister()}}function B(t,e,o){try{return o(t,e)}catch(i){if(i?.code!=="ERR_MODULE_NOT_FOUND"||!e.parentURL?.startsWith("file:")||!t.startsWith("./")&&!t.startsWith("../"))throw i;let s=new URL(t,e.parentURL);if(s.protocol!=="file:"||D.extname(s.pathname))throw i;let a=W(s);for(let h of q(a))if(_(h))return o(C(h).href,e);throw i}}function q(t){return[...k.map(e=>`${t}${e}`),...k.map(e=>D.join(t,`index${e}`))]}function _(t){try{return J(t)&&M(t).isFile()}catch{return!1}}var Z=r.dirname(X(import.meta.url)),j=r.resolve(Z,".."),v=R(process.argv.slice(2)),tt=v.argv.includes("--reset-test-state"),H=v.argv.filter(t=>t!=="--reset-test-state");if(H.length>0)throw new Error(`Unexpected argument: ${H[0]}`);var p=v.projectRoot,b=r.join(p,".fps-editor"),f=r.join(b,"deployments"),E=r.join(b,"state"),U=r.join(b,"current.json"),y=r.join(E,"runtime-bridge-token"),et=r.join(E,"playwright-working-document-journal.json");wt();tt&&await l(et,{force:!0});await u(f,{recursive:!0});await u(E,{recursive:!0,mode:448});await dt();var c=await at(),d=JSON.parse(await m(r.join(j,"manifest.json"),"utf8"));it(d);var P=await lt(),I=ft(P);await nt(j,d.files);var O=ht(d.files);c&&c.editorDistHash===d.build.distHash&&c.projectSourceHash===I&&c.deployment?.packageHash===O&&await st(c)&&(console.log("[fps-editor-server] existing deployment and static Project definition are current."),process.exit(0));var n=await rt(j,d,O),ot=["a","b"].map(t=>({release:t,artifactId:`${n.id}-${t}`,rootPath:r.relative(p,r.join(n.rootPath,"public")),build:{...n.manifest.build,buildId:`${n.manifest.build.buildId}.release-${t}`}})),L={schemaVersion:3,preparedAt:new Date().toISOString(),editorDistHash:d.build.distHash,projectSourceHash:I,projectDefinition:P,deployment:{id:n.id,rootPath:r.relative(p,n.rootPath),packageHash:n.packageHash,manifest:n.manifest},workerEntry:r.relative(p,r.join(n.rootPath,n.manifest.entrypoints.worker)),serverEntry:r.relative(p,r.join(n.rootPath,n.manifest.entrypoints.server)),builds:ot,staged:c?.deployment?.id&&c.deployment.id!==n.id?{deploymentId:c.deployment.id}:null};await ut(U,L);await ct(L);console.log([`[fps-editor-server] prepared deployment ${n.id}`,`for static Project ${P.projectId}.`].join(" "));async function rt(t,e,o){let i=await G(r.join(f,".install-"));try{for(let S of e.files){let $=r.join(i,S.path);await u(r.dirname($),{recursive:!0}),await x(r.join(t,S.path),$)}await x(r.join(t,"manifest.json"),r.join(i,"manifest.json"));let s=`${e.version}-${o.slice(0,16)}`,a=r.join(f,s);return(await g(a).catch(()=>null))?.isDirectory()?await l(i,{recursive:!0,force:!0}):await N(i,a),{id:s,rootPath:a,manifest:e,packageHash:o}}finally{await l(i,{recursive:!0,force:!0}).catch(()=>{})}}function it(t){if(t?.schemaVersion!==2||t.artifactKind!=="fps-editor-deployment-package"||t.packageName!=="@fps-games/editor-deployment")throw new Error("Editor deployment manifest is invalid.");if(t.node?.range!==">=24 <27"||t.node?.bundled!==!1)throw new Error("Editor deployment Node.js contract is invalid.");if(typeof t.build?.version!="string"||typeof t.build?.distHash!="string"||typeof t.commitSha!="string")throw new Error("Editor deployment build identity is incomplete.");for(let e of["server","worker","browser"])if(typeof t.entrypoints?.[e]!="string")throw new Error(`Editor deployment ${e} entrypoint is missing.`);for(let e of["prepare","server","project","agent"])if(typeof t.binaries?.[e]!="string")throw new Error(`Editor deployment ${e} binary is missing.`);if(t.projectContentBundled!==!1)throw new Error("Editor deployment must not contain project content.")}async function nt(t,e){if(!Array.isArray(e)||e.length===0)throw new Error("Editor deployment file manifest is empty.");for(let o of e){if(!mt(o.path))throw new Error(`Unsafe deployment file path: ${String(o.path)}.`);let i=await m(r.join(t,o.path));if(i.byteLength!==o.size||yt(i)!==o.sha256)throw new Error(`Editor deployment file integrity mismatch: ${o.path}.`)}}async function st(t){try{let e=[t.serverEntry,t.workerEntry,r.join(t.deployment.rootPath,t.deployment.manifest.entrypoints.browser)];return(await Promise.all(e.map(o=>g(r.join(p,o))))).every(o=>o.isFile())}catch{return!1}}async function at(){try{let t=JSON.parse(await m(U,"utf8"));return t?.schemaVersion===3?t:null}catch{return null}}async function ct(t){let e=new Set([t.deployment.id,t.staged?.deploymentId].filter(Boolean));await pt(f,e)}async function pt(t,e){for(let o of await Q(t,{withFileTypes:!0}))!o.isDirectory()||o.name.startsWith(".")||e.has(o.name)||await l(r.join(t,o.name),{recursive:!0,force:!0})}async function dt(){(await m(y,"utf8").catch(()=>"")).trim()||(await A(y,`${z(32).toString("base64url")}
|
|
3
|
+
`,{encoding:"utf8",mode:384}),await K(y,384))}async function lt(){let t=r.join(p,"fps.config.ts");if(!(await g(t).catch(()=>null))?.isFile())throw new Error("fps.config.ts is required.");let o=await F(`${Y(t).href}?fps-editor-prepare=${Date.now()}`),i=o.default??o.fpsConfig;if(!i||typeof i!="object"||Array.isArray(i)||i.schemaVersion!==1||typeof i.projectId!="string"||!i.authoring||!Array.isArray(i.plugins))throw new Error("fps.config.ts must default-export a valid defineFpsProject() definition.");return i}function ft(t){return w("sha256").update(JSON.stringify(t)).digest("hex")}async function ut(t,e){await u(r.dirname(t),{recursive:!0});let o=`${t}.${process.pid}.tmp`;await A(o,`${JSON.stringify(e,null,2)}
|
|
4
|
+
`),await N(o,t)}function mt(t){return typeof t=="string"&&t.length>0&&!t.includes("\\")&&!r.isAbsolute(t)&&!t.split("/").includes("..")}function ht(t){return w("sha256").update(JSON.stringify(t)).digest("hex")}function yt(t){return w("sha256").update(t).digest("hex")}function wt(){let t=Number.parseInt(process.versions.node.split(".")[0]??"",10);if(!Number.isSafeInteger(t)||t<24||t>=27)throw new Error(`prepare:server requires Node.js >=24 <27; current version is ${process.versions.node}.`)}
|