1 |
- {"ast":null,"code":"import { Tools } from \"@babylonjs/core/Misc/tools.js\";\nfunction validateAsync(data, rootUrl, fileName, getExternalResource) {\n const options = {\n externalResourceFunction: getExternalResource\n };\n if (fileName) {\n options.uri = rootUrl === \"file:\" ? fileName : rootUrl + fileName;\n }\n return ArrayBuffer.isView(data) ? GLTFValidator.validateBytes(data, options) : GLTFValidator.validateString(data, options);\n}\n/**\n * The worker function that gets converted to a blob url to pass into a worker.\n */\nfunction workerFunc() {\n const pendingExternalResources = [];\n onmessage = message => {\n const data = message.data;\n switch (data.id) {\n case \"init\":\n {\n importScripts(data.url);\n break;\n }\n case \"validate\":\n {\n validateAsync(data.data, data.rootUrl, data.fileName, uri => new Promise((resolve, reject) => {\n const index = pendingExternalResources.length;\n pendingExternalResources.push({\n resolve,\n reject\n });\n postMessage({\n id: \"getExternalResource\",\n index: index,\n uri: uri\n });\n })).then(value => {\n postMessage({\n id: \"validate.resolve\",\n value: value\n });\n }, reason => {\n postMessage({\n id: \"validate.reject\",\n reason: reason\n });\n });\n break;\n }\n case \"getExternalResource.resolve\":\n {\n pendingExternalResources[data.index].resolve(data.value);\n break;\n }\n case \"getExternalResource.reject\":\n {\n pendingExternalResources[data.index].reject(data.reason);\n break;\n }\n }\n };\n}\n/**\n * glTF validation\n */\nexport class GLTFValidation {\n /**\n * Validate a glTF asset using the glTF-Validator.\n * @param data The JSON of a glTF or the array buffer of a binary glTF\n * @param rootUrl The root url for the glTF\n * @param fileName The file name for the glTF\n * @param getExternalResource The callback to get external resources for the glTF validator\n * @returns A promise that resolves with the glTF validation results once complete\n */\n static ValidateAsync(data, rootUrl, fileName, getExternalResource) {\n if (typeof Worker === \"function\") {\n return new Promise((resolve, reject) => {\n const workerContent = `${validateAsync}(${workerFunc})()`;\n const workerBlobUrl = URL.createObjectURL(new Blob([workerContent], {\n type: \"application/javascript\"\n }));\n const worker = new Worker(workerBlobUrl);\n const onError = error => {\n worker.removeEventListener(\"error\", onError);\n worker.removeEventListener(\"message\", onMessage);\n reject(error);\n };\n const onMessage = message => {\n const data = message.data;\n switch (data.id) {\n case \"getExternalResource\":\n {\n getExternalResource(data.uri).then(value => {\n worker.postMessage({\n id: \"getExternalResource.resolve\",\n index: data.index,\n value: value\n }, [value.buffer]);\n }, reason => {\n worker.postMessage({\n id: \"getExternalResource.reject\",\n index: data.index,\n reason: reason\n });\n });\n break;\n }\n case \"validate.resolve\":\n {\n worker.removeEventListener(\"error\", onError);\n worker.removeEventListener(\"message\", onMessage);\n resolve(data.value);\n worker.terminate();\n break;\n }\n case \"validate.reject\":\n {\n worker.removeEventListener(\"error\", onError);\n worker.removeEventListener(\"message\", onMessage);\n reject(data.reason);\n worker.terminate();\n }\n }\n };\n worker.addEventListener(\"error\", onError);\n worker.addEventListener(\"message\", onMessage);\n worker.postMessage({\n id: \"init\",\n url: Tools.GetBabylonScriptURL(this.Configuration.url)\n });\n if (ArrayBuffer.isView(data)) {\n // Slice the data to avoid copying the whole array buffer.\n const slicedData = data.slice();\n worker.postMessage({\n id: \"validate\",\n data: slicedData,\n rootUrl: rootUrl,\n fileName: fileName\n }, [slicedData.buffer]);\n } else {\n worker.postMessage({\n id: \"validate\",\n data: data,\n rootUrl: rootUrl,\n fileName: fileName\n });\n }\n });\n } else {\n if (!this._LoadScriptPromise) {\n this._LoadScriptPromise = Tools.LoadBabylonScriptAsync(this.Configuration.url);\n }\n return this._LoadScriptPromise.then(() => {\n return validateAsync(data, rootUrl, fileName, getExternalResource);\n });\n }\n }\n}\n/**\n * The configuration. Defaults to `{ url: \"https://cdn.babylonjs.com/gltf_validator.js\" }`.\n */\nGLTFValidation.Configuration = {\n url: `${Tools._DefaultCdnUrl}/gltf_validator.js`\n};","map":{"version":3,"names":["Tools","validateAsync","data","rootUrl","fileName","getExternalResource","options","externalResourceFunction","uri","ArrayBuffer","isView","GLTFValidator","validateBytes","validateString","workerFunc","pendingExternalResources","onmessage","message","id","importScripts","url","Promise","resolve","reject","index","length","push","postMessage","then","value","reason","GLTFValidation","ValidateAsync","Worker","workerContent","workerBlobUrl","URL","createObjectURL","Blob","type","worker","onError","error","removeEventListener","onMessage","buffer","terminate","addEventListener","GetBabylonScriptURL","Configuration","slicedData","slice","_LoadScriptPromise","LoadBabylonScriptAsync","_DefaultCdnUrl"],"sources":["F:/workspace/202226701027/huinongbao-app/node_modules/@babylonjs/loaders/glTF/glTFValidation.js"],"sourcesContent":["import { Tools } from \"@babylonjs/core/Misc/tools.js\";\nfunction validateAsync(data, rootUrl, fileName, getExternalResource) {\n const options = {\n externalResourceFunction: getExternalResource,\n };\n if (fileName) {\n options.uri = rootUrl === \"file:\" ? fileName : rootUrl + fileName;\n }\n return ArrayBuffer.isView(data) ? GLTFValidator.validateBytes(data, options) : GLTFValidator.validateString(data, options);\n}\n/**\n * The worker function that gets converted to a blob url to pass into a worker.\n */\nfunction workerFunc() {\n const pendingExternalResources = [];\n onmessage = (message) => {\n const data = message.data;\n switch (data.id) {\n case \"init\": {\n importScripts(data.url);\n break;\n }\n case \"validate\": {\n validateAsync(data.data, data.rootUrl, data.fileName, (uri) => new Promise((resolve, reject) => {\n const index = pendingExternalResources.length;\n pendingExternalResources.push({ resolve, reject });\n postMessage({ id: \"getExternalResource\", index: index, uri: uri });\n })).then((value) => {\n postMessage({ id: \"validate.resolve\", value: value });\n }, (reason) => {\n postMessage({ id: \"validate.reject\", reason: reason });\n });\n break;\n }\n case \"getExternalResource.resolve\": {\n pendingExternalResources[data.index].resolve(data.value);\n break;\n }\n case \"getExternalResource.reject\": {\n pendingExternalResources[data.index].reject(data.reason);\n break;\n }\n }\n };\n}\n/**\n * glTF validation\n */\nexport class GLTFValidation {\n /**\n * Validate a glTF asset using the glTF-Validator.\n * @param data The JSON of a glTF or the array buffer of a binary glTF\n * @param rootUrl The root url for the glTF\n * @param fileName The file name for the glTF\n * @param getExternalResource The callback to get external resources for the glTF validator\n * @returns A promise that resolves with the glTF validation results once complete\n */\n static ValidateAsync(data, rootUrl, fileName, getExternalResource) {\n if (typeof Worker === \"function\") {\n return new Promise((resolve, reject) => {\n const workerContent = `${validateAsync}(${workerFunc})()`;\n const workerBlobUrl = URL.createObjectURL(new Blob([workerContent], { type: \"application/javascript\" }));\n const worker = new Worker(workerBlobUrl);\n const onError = (error) => {\n worker.removeEventListener(\"error\", onError);\n worker.removeEventListener(\"message\", onMessage);\n reject(error);\n };\n const onMessage = (message) => {\n const data = message.data;\n switch (data.id) {\n case \"getExternalResource\": {\n getExternalResource(data.uri).then((value) => {\n worker.postMessage({ id: \"getExternalResource.resolve\", index: data.index, value: value }, [value.buffer]);\n }, (reason) => {\n worker.postMessage({ id: \"getExternalResource.reject\", index: data.index, reason: reason });\n });\n break;\n }\n case \"validate.resolve\": {\n worker.removeEventListener(\"error\", onError);\n worker.removeEventListener(\"message\", onMessage);\n resolve(data.value);\n worker.terminate();\n break;\n }\n case \"validate.reject\": {\n worker.removeEventListener(\"error\", onError);\n worker.removeEventListener(\"message\", onMessage);\n reject(data.reason);\n worker.terminate();\n }\n }\n };\n worker.addEventListener(\"error\", onError);\n worker.addEventListener(\"message\", onMessage);\n worker.postMessage({ id: \"init\", url: Tools.GetBabylonScriptURL(this.Configuration.url) });\n if (ArrayBuffer.isView(data)) {\n // Slice the data to avoid copying the whole array buffer.\n const slicedData = data.slice();\n worker.postMessage({ id: \"validate\", data: slicedData, rootUrl: rootUrl, fileName: fileName }, [slicedData.buffer]);\n }\n else {\n worker.postMessage({ id: \"validate\", data: data, rootUrl: rootUrl, fileName: fileName });\n }\n });\n }\n else {\n if (!this._LoadScriptPromise) {\n this._LoadScriptPromise = Tools.LoadBabylonScriptAsync(this.Configuration.url);\n }\n return this._LoadScriptPromise.then(() => {\n return validateAsync(data, rootUrl, fileName, getExternalResource);\n });\n }\n }\n}\n/**\n * The configuration. Defaults to `{ url: \"https://cdn.babylonjs.com/gltf_validator.js\" }`.\n */\nGLTFValidation.Configuration = {\n url: `${Tools._DefaultCdnUrl}/gltf_validator.js`,\n};\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,+BAA+B;AACrD,SAASC,aAAaA,CAACC,IAAI,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,mBAAmB,EAAE;EACjE,MAAMC,OAAO,GAAG;IACZC,wBAAwB,EAAEF;EAC9B,CAAC;EACD,IAAID,QAAQ,EAAE;IACVE,OAAO,CAACE,GAAG,GAAGL,OAAO,KAAK,OAAO,GAAGC,QAAQ,GAAGD,OAAO,GAAGC,QAAQ;EACrE;EACA,OAAOK,WAAW,CAACC,MAAM,CAACR,IAAI,CAAC,GAAGS,aAAa,CAACC,aAAa,CAACV,IAAI,EAAEI,OAAO,CAAC,GAAGK,aAAa,CAACE,cAAc,CAACX,IAAI,EAAEI,OAAO,CAAC;AAC9H;AACA;AACA;AACA;AACA,SAASQ,UAAUA,CAAA,EAAG;EAClB,MAAMC,wBAAwB,GAAG,EAAE;EACnCC,SAAS,GAAIC,OAAO,IAAK;IACrB,MAAMf,IAAI,GAAGe,OAAO,CAACf,IAAI;IACzB,QAAQA,IAAI,CAACgB,EAAE;MACX,KAAK,MAAM;QAAE;UACTC,aAAa,CAACjB,IAAI,CAACkB,GAAG,CAAC;UACvB;QACJ;MACA,KAAK,UAAU;QAAE;UACbnB,aAAa,CAACC,IAAI,CAACA,IAAI,EAAEA,IAAI,CAACC,OAAO,EAAED,IAAI,CAACE,QAAQ,EAAGI,GAAG,IAAK,IAAIa,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;YAC5F,MAAMC,KAAK,GAAGT,wBAAwB,CAACU,MAAM;YAC7CV,wBAAwB,CAACW,IAAI,CAAC;cAAEJ,OAAO;cAAEC;YAAO,CAAC,CAAC;YAClDI,WAAW,CAAC;cAAET,EAAE,EAAE,qBAAqB;cAAEM,KAAK,EAAEA,KAAK;cAAEhB,GAAG,EAAEA;YAAI,CAAC,CAAC;UACtE,CAAC,CAAC,CAAC,CAACoB,IAAI,CAAEC,KAAK,IAAK;YAChBF,WAAW,CAAC;cAAET,EAAE,EAAE,kBAAkB;cAAEW,KAAK,EAAEA;YAAM,CAAC,CAAC;UACzD,CAAC,EAAGC,MAAM,IAAK;YACXH,WAAW,CAAC;cAAET,EAAE,EAAE,iBAAiB;cAAEY,MAAM,EAAEA;YAAO,CAAC,CAAC;UAC1D,CAAC,CAAC;UACF;QACJ;MACA,KAAK,6BAA6B;QAAE;UAChCf,wBAAwB,CAACb,IAAI,CAACsB,KAAK,CAAC,CAACF,OAAO,CAACpB,IAAI,CAAC2B,KAAK,CAAC;UACxD;QACJ;MACA,KAAK,4BAA4B;QAAE;UAC/Bd,wBAAwB,CAACb,IAAI,CAACsB,KAAK,CAAC,CAACD,MAAM,CAACrB,IAAI,CAAC4B,MAAM,CAAC;UACxD;QACJ;IACJ;EACJ,CAAC;AACL;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,CAAC;EACxB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;EACI,OAAOC,aAAaA,CAAC9B,IAAI,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,mBAAmB,EAAE;IAC/D,IAAI,OAAO4B,MAAM,KAAK,UAAU,EAAE;MAC9B,OAAO,IAAIZ,OAAO,CAAC,CAACC,OAAO,EAAEC,MAAM,KAAK;QACpC,MAAMW,aAAa,GAAG,GAAGjC,aAAa,IAAIa,UAAU,KAAK;QACzD,MAAMqB,aAAa,GAAGC,GAAG,CAACC,eAAe,CAAC,IAAIC,IAAI,CAAC,CAACJ,aAAa,CAAC,EAAE;UAAEK,IAAI,EAAE;QAAyB,CAAC,CAAC,CAAC;QACxG,MAAMC,MAAM,GAAG,IAAIP,MAAM,CAACE,aAAa,CAAC;QACxC,MAAMM,OAAO,GAAIC,KAAK,IAAK;UACvBF,MAAM,CAACG,mBAAmB,CAAC,OAAO,EAAEF,OAAO,CAAC;UAC5CD,MAAM,CAACG,mBAAmB,CAAC,SAAS,EAAEC,SAAS,CAAC;UAChDrB,MAAM,CAACmB,KAAK,CAAC;QACjB,CAAC;QACD,MAAME,SAAS,GAAI3B,OAAO,IAAK;UAC3B,MAAMf,IAAI,GAAGe,OAAO,CAACf,IAAI;UACzB,QAAQA,IAAI,CAACgB,EAAE;YACX,KAAK,qBAAqB;cAAE;gBACxBb,mBAAmB,CAACH,IAAI,CAACM,GAAG,CAAC,CAACoB,IAAI,CAAEC,KAAK,IAAK;kBAC1CW,MAAM,CAACb,WAAW,CAAC;oBAAET,EAAE,EAAE,6BAA6B;oBAAEM,KAAK,EAAEtB,IAAI,CAACsB,KAAK;oBAAEK,KAAK,EAAEA;kBAAM,CAAC,EAAE,CAACA,KAAK,CAACgB,MAAM,CAAC,CAAC;gBAC9G,CAAC,EAAGf,MAAM,IAAK;kBACXU,MAAM,CAACb,WAAW,CAAC;oBAAET,EAAE,EAAE,4BAA4B;oBAAEM,KAAK,EAAEtB,IAAI,CAACsB,KAAK;oBAAEM,MAAM,EAAEA;kBAAO,CAAC,CAAC;gBAC/F,CAAC,CAAC;gBACF;cACJ;YACA,KAAK,kBAAkB;cAAE;gBACrBU,MAAM,CAACG,mBAAmB,CAAC,OAAO,EAAEF,OAAO,CAAC;gBAC5CD,MAAM,CAACG,mBAAmB,CAAC,SAAS,EAAEC,SAAS,CAAC;gBAChDtB,OAAO,CAACpB,IAAI,CAAC2B,KAAK,CAAC;gBACnBW,MAAM,CAACM,SAAS,CAAC,CAAC;gBAClB;cACJ;YACA,KAAK,iBAAiB;cAAE;gBACpBN,MAAM,CAACG,mBAAmB,CAAC,OAAO,EAAEF,OAAO,CAAC;gBAC5CD,MAAM,CAACG,mBAAmB,CAAC,SAAS,EAAEC,SAAS,CAAC;gBAChDrB,MAAM,CAACrB,IAAI,CAAC4B,MAAM,CAAC;gBACnBU,MAAM,CAACM,SAAS,CAAC,CAAC;cACtB;UACJ;QACJ,CAAC;QACDN,MAAM,CAACO,gBAAgB,CAAC,OAAO,EAAEN,OAAO,CAAC;QACzCD,MAAM,CAACO,gBAAgB,CAAC,SAAS,EAAEH,SAAS,CAAC;QAC7CJ,MAAM,CAACb,WAAW,CAAC;UAAET,EAAE,EAAE,MAAM;UAAEE,GAAG,EAAEpB,KAAK,CAACgD,mBAAmB,CAAC,IAAI,CAACC,aAAa,CAAC7B,GAAG;QAAE,CAAC,CAAC;QAC1F,IAAIX,WAAW,CAACC,MAAM,CAACR,IAAI,CAAC,EAAE;UAC1B;UACA,MAAMgD,UAAU,GAAGhD,IAAI,CAACiD,KAAK,CAAC,CAAC;UAC/BX,MAAM,CAACb,WAAW,CAAC;YAAET,EAAE,EAAE,UAAU;YAAEhB,IAAI,EAAEgD,UAAU;YAAE/C,OAAO,EAAEA,OAAO;YAAEC,QAAQ,EAAEA;UAAS,CAAC,EAAE,CAAC8C,UAAU,CAACL,MAAM,CAAC,CAAC;QACvH,CAAC,MACI;UACDL,MAAM,CAACb,WAAW,CAAC;YAAET,EAAE,EAAE,UAAU;YAAEhB,IAAI,EAAEA,IAAI;YAAEC,OAAO,EAAEA,OAAO;YAAEC,QAAQ,EAAEA;UAAS,CAAC,CAAC;QAC5F;MACJ,CAAC,CAAC;IACN,CAAC,MACI;MACD,IAAI,CAAC,IAAI,CAACgD,kBAAkB,EAAE;QAC1B,IAAI,CAACA,kBAAkB,GAAGpD,KAAK,CAACqD,sBAAsB,CAAC,IAAI,CAACJ,aAAa,CAAC7B,GAAG,CAAC;MAClF;MACA,OAAO,IAAI,CAACgC,kBAAkB,CAACxB,IAAI,CAAC,MAAM;QACtC,OAAO3B,aAAa,CAACC,IAAI,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,mBAAmB,CAAC;MACtE,CAAC,CAAC;IACN;EACJ;AACJ;AACA;AACA;AACA;AACA0B,cAAc,CAACkB,aAAa,GAAG;EAC3B7B,GAAG,EAAE,GAAGpB,KAAK,CAACsD,cAAc;AAChC,CAAC","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}
|