@loaders.gl/gltf 3.4.0-alpha.3 → 3.4.0-alpha.5

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.
Files changed (52) hide show
  1. package/dist/dist.min.js +15 -0
  2. package/dist/es5/index.js +7 -0
  3. package/dist/es5/index.js.map +1 -1
  4. package/dist/es5/lib/api/gltf-scenegraph.js.map +1 -1
  5. package/dist/es5/lib/api/normalize-gltf-v1.js.map +1 -1
  6. package/dist/es5/lib/api/post-process-gltf.js.map +1 -1
  7. package/dist/es5/lib/extensions/EXT_meshopt_compression.js.map +1 -1
  8. package/dist/es5/lib/extensions/EXT_texture_webp.js.map +1 -1
  9. package/dist/es5/lib/extensions/KHR_binary_gltf.js.map +1 -1
  10. package/dist/es5/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  11. package/dist/es5/lib/extensions/KHR_texture_basisu.js.map +1 -1
  12. package/dist/es5/lib/extensions/KHR_texture_transform.js.map +1 -1
  13. package/dist/es5/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
  14. package/dist/es5/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
  15. package/dist/es5/lib/gltf-utils/gltf-utils.js +23 -0
  16. package/dist/es5/lib/gltf-utils/gltf-utils.js.map +1 -1
  17. package/dist/es5/lib/gltf-utils/resolve-url.js.map +1 -1
  18. package/dist/es5/lib/parsers/parse-glb.js.map +1 -1
  19. package/dist/es5/lib/parsers/parse-gltf.js.map +1 -1
  20. package/dist/es5/lib/utils/version.js +1 -1
  21. package/dist/es5/meshopt/meshopt-decoder.js.map +1 -1
  22. package/dist/es5/webp/webp.js.map +1 -1
  23. package/dist/esm/index.js +1 -0
  24. package/dist/esm/index.js.map +1 -1
  25. package/dist/esm/lib/api/gltf-scenegraph.js.map +1 -1
  26. package/dist/esm/lib/api/normalize-gltf-v1.js.map +1 -1
  27. package/dist/esm/lib/api/post-process-gltf.js.map +1 -1
  28. package/dist/esm/lib/extensions/EXT_meshopt_compression.js.map +1 -1
  29. package/dist/esm/lib/extensions/EXT_texture_webp.js.map +1 -1
  30. package/dist/esm/lib/extensions/KHR_binary_gltf.js.map +1 -1
  31. package/dist/esm/lib/extensions/KHR_draco_mesh_compression.js.map +1 -1
  32. package/dist/esm/lib/extensions/KHR_texture_basisu.js.map +1 -1
  33. package/dist/esm/lib/extensions/KHR_texture_transform.js.map +1 -1
  34. package/dist/esm/lib/extensions/deprecated/EXT_feature_metadata.js.map +1 -1
  35. package/dist/esm/lib/extensions/deprecated/KHR_techniques_webgl.js.map +1 -1
  36. package/dist/esm/lib/gltf-utils/gltf-utils.js +19 -0
  37. package/dist/esm/lib/gltf-utils/gltf-utils.js.map +1 -1
  38. package/dist/esm/lib/gltf-utils/resolve-url.js.map +1 -1
  39. package/dist/esm/lib/parsers/parse-glb.js.map +1 -1
  40. package/dist/esm/lib/parsers/parse-gltf.js.map +1 -1
  41. package/dist/esm/lib/utils/version.js +1 -1
  42. package/dist/esm/meshopt/meshopt-decoder.js.map +1 -1
  43. package/dist/esm/webp/webp.js.map +1 -1
  44. package/dist/index.d.ts +1 -0
  45. package/dist/index.d.ts.map +1 -1
  46. package/dist/index.js +3 -1
  47. package/dist/lib/gltf-utils/gltf-utils.d.ts +7 -0
  48. package/dist/lib/gltf-utils/gltf-utils.d.ts.map +1 -1
  49. package/dist/lib/gltf-utils/gltf-utils.js +23 -1
  50. package/package.json +6 -6
  51. package/src/index.ts +1 -0
  52. package/src/lib/gltf-utils/gltf-utils.ts +25 -0
@@ -1 +1 @@
1
- {"version":3,"file":"parse-glb.js","names":["_loaderUtils","require","MAGIC_glTF","GLB_FILE_HEADER_SIZE","GLB_CHUNK_HEADER_SIZE","GLB_CHUNK_TYPE_JSON","GLB_CHUNK_TYPE_BIN","GLB_CHUNK_TYPE_JSON_XVIZ_DEPRECATED","GLB_CHUNK_TYPE_BIX_XVIZ_DEPRECATED","GLB_V1_CONTENT_FORMAT_JSON","LE","getMagicString","dataView","byteOffset","arguments","length","undefined","concat","String","fromCharCode","getUint8","isGLB","arrayBuffer","options","DataView","_options$magic","magic","magic1","getUint32","parseGLBSync","glb","type","version","byteLength","Object","assign","header","hasBinChunk","json","binChunks","parseGLBV1","parseGLBV2","Error","assert","contentLength","contentFormat","parseJSONChunk","parseBINChunk","parseGLBChunksSync","chunkLength","chunkFormat","strict","padToNBytes","jsonChunk","Uint8Array","buffer","textDecoder","TextDecoder","jsonText","decode","JSON","parse","push"],"sources":["../../../../src/lib/parsers/parse-glb.ts"],"sourcesContent":["/* eslint-disable camelcase, max-statements */\n// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#glb-file-format-specification\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/1.0/Khronos/KHR_binary_glTF\nimport type {GLB} from '../types/glb-types';\nimport {padToNBytes, assert} from '@loaders.gl/loader-utils';\n\nexport type GLBParseOptions = {\n magic?: number;\n strict?: boolean;\n};\n\nconst MAGIC_glTF = 0x676c5446; // glTF in Big-Endian ASCII\n\nconst GLB_FILE_HEADER_SIZE = 12;\nconst GLB_CHUNK_HEADER_SIZE = 8;\n\nconst GLB_CHUNK_TYPE_JSON = 0x4e4f534a;\nconst GLB_CHUNK_TYPE_BIN = 0x004e4942;\nconst GLB_CHUNK_TYPE_JSON_XVIZ_DEPRECATED = 0; // DEPRECATED - Backward compatibility for old xviz files\nconst GLB_CHUNK_TYPE_BIX_XVIZ_DEPRECATED = 1; // DEPRECATED - Backward compatibility for old xviz files\n\nconst GLB_V1_CONTENT_FORMAT_JSON = 0x0;\n\nconst LE = true; // Binary GLTF is little endian.\n\nfunction getMagicString(dataView, byteOffset = 0) {\n return `\\\n${String.fromCharCode(dataView.getUint8(byteOffset + 0))}\\\n${String.fromCharCode(dataView.getUint8(byteOffset + 1))}\\\n${String.fromCharCode(dataView.getUint8(byteOffset + 2))}\\\n${String.fromCharCode(dataView.getUint8(byteOffset + 3))}`;\n}\n\n// Check if a data view is a GLB\nexport function isGLB(\n arrayBuffer: ArrayBuffer,\n byteOffset: number = 0,\n options: GLBParseOptions = {}\n): boolean {\n const dataView = new DataView(arrayBuffer);\n // Check that GLB Header starts with the magic number\n const {magic = MAGIC_glTF} = options;\n const magic1 = dataView.getUint32(byteOffset, false);\n return magic1 === magic || magic1 === MAGIC_glTF;\n}\n\nexport default function parseGLBSync(\n glb: GLB,\n arrayBuffer: ArrayBuffer,\n byteOffset: number = 0,\n options: GLBParseOptions = {}\n) {\n // Check that GLB Header starts with the magic number\n const dataView = new DataView(arrayBuffer);\n\n // Compare format with GLBLoader documentation\n const type = getMagicString(dataView, byteOffset + 0);\n const version = dataView.getUint32(byteOffset + 4, LE); // Version 2 of binary glTF container format\n const byteLength = dataView.getUint32(byteOffset + 8, LE); // Total byte length of binary file\n\n Object.assign(glb, {\n // Put less important stuff in a header, to avoid clutter\n header: {\n byteOffset, // Byte offset into the initial arrayBuffer\n byteLength,\n hasBinChunk: false\n },\n\n type,\n version,\n\n json: {},\n binChunks: []\n } as GLB);\n\n byteOffset += GLB_FILE_HEADER_SIZE;\n\n switch (glb.version) {\n case 1:\n // eslint-disable-next-line\n return parseGLBV1(glb, dataView, byteOffset);\n case 2:\n // eslint-disable-next-line\n return parseGLBV2(glb, dataView, byteOffset, (options = {}));\n default:\n throw new Error(`Invalid GLB version ${glb.version}. Only supports v1 and v2.`);\n }\n}\n\nfunction parseGLBV1(glb: GLB, dataView: DataView, byteOffset: number): number {\n // Sanity: ensure file is big enough to hold at least the headers\n assert(glb.header.byteLength > GLB_FILE_HEADER_SIZE + GLB_CHUNK_HEADER_SIZE);\n\n // Explanation of GLB structure:\n // https://cloud.githubusercontent.com/assets/3479527/22600725/36b87122-ea55-11e6-9d40-6fd42819fcab.png\n const contentLength = dataView.getUint32(byteOffset + 0, LE); // Byte length of chunk\n const contentFormat = dataView.getUint32(byteOffset + 4, LE); // Chunk format as uint32\n byteOffset += GLB_CHUNK_HEADER_SIZE;\n\n // GLB v1 only supports a single chunk type\n assert(contentFormat === GLB_V1_CONTENT_FORMAT_JSON);\n\n parseJSONChunk(glb, dataView, byteOffset, contentLength);\n // No need to call the function padToBytes() from parseJSONChunk()\n byteOffset += contentLength;\n byteOffset += parseBINChunk(glb, dataView, byteOffset, glb.header.byteLength);\n\n return byteOffset;\n}\n\nfunction parseGLBV2(\n glb: GLB,\n dataView: DataView,\n byteOffset: number,\n options: GLBParseOptions\n): number {\n // Sanity: ensure file is big enough to hold at least the first chunk header\n assert(glb.header.byteLength > GLB_FILE_HEADER_SIZE + GLB_CHUNK_HEADER_SIZE);\n\n parseGLBChunksSync(glb, dataView, byteOffset, options);\n\n return byteOffset + glb.header.byteLength;\n}\n\nfunction parseGLBChunksSync(\n glb: GLB,\n dataView: DataView,\n byteOffset: number,\n options: GLBParseOptions\n) {\n // Per spec we must iterate over chunks, ignoring all except JSON and BIN\n // Iterate as long as there is space left for another chunk header\n while (byteOffset + 8 <= glb.header.byteLength) {\n const chunkLength = dataView.getUint32(byteOffset + 0, LE); // Byte length of chunk\n const chunkFormat = dataView.getUint32(byteOffset + 4, LE); // Chunk format as uint32\n byteOffset += GLB_CHUNK_HEADER_SIZE;\n\n // Per spec we must iterate over chunks, ignoring all except JSON and BIN\n switch (chunkFormat) {\n case GLB_CHUNK_TYPE_JSON:\n parseJSONChunk(glb, dataView, byteOffset, chunkLength);\n break;\n case GLB_CHUNK_TYPE_BIN:\n parseBINChunk(glb, dataView, byteOffset, chunkLength);\n break;\n\n // Backward compatibility for very old xviz files\n case GLB_CHUNK_TYPE_JSON_XVIZ_DEPRECATED:\n if (!options.strict) {\n parseJSONChunk(glb, dataView, byteOffset, chunkLength);\n }\n break;\n case GLB_CHUNK_TYPE_BIX_XVIZ_DEPRECATED:\n if (!options.strict) {\n parseBINChunk(glb, dataView, byteOffset, chunkLength);\n }\n break;\n\n default:\n // Ignore, per spec\n // console.warn(`Unknown GLB chunk type`); // eslint-disable-line\n break;\n }\n\n byteOffset += padToNBytes(chunkLength, 4);\n }\n\n return byteOffset;\n}\n\n// Parse a GLB JSON chunk\nfunction parseJSONChunk(glb: GLB, dataView: DataView, byteOffset: number, chunkLength: number) {\n // 1. Create a \"view\" of the binary encoded JSON data inside the GLB\n const jsonChunk = new Uint8Array(dataView.buffer, byteOffset, chunkLength);\n\n // 2. Decode the JSON binary array into clear text\n const textDecoder = new TextDecoder('utf8');\n const jsonText = textDecoder.decode(jsonChunk);\n\n // 3. Parse the JSON text into a JavaScript data structure\n glb.json = JSON.parse(jsonText);\n\n return padToNBytes(chunkLength, 4);\n}\n\n// Parse a GLB BIN chunk\nfunction parseBINChunk(glb: GLB, dataView, byteOffset, chunkLength) {\n // Note: BIN chunk can be optional\n glb.header.hasBinChunk = true;\n glb.binChunks.push({\n byteOffset,\n byteLength: chunkLength,\n arrayBuffer: dataView.buffer\n // TODO - copy, or create typed array view?\n });\n\n return padToNBytes(chunkLength, 4);\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-glb.js","names":["_loaderUtils","require","MAGIC_glTF","GLB_FILE_HEADER_SIZE","GLB_CHUNK_HEADER_SIZE","GLB_CHUNK_TYPE_JSON","GLB_CHUNK_TYPE_BIN","GLB_CHUNK_TYPE_JSON_XVIZ_DEPRECATED","GLB_CHUNK_TYPE_BIX_XVIZ_DEPRECATED","GLB_V1_CONTENT_FORMAT_JSON","LE","getMagicString","dataView","byteOffset","arguments","length","undefined","concat","String","fromCharCode","getUint8","isGLB","arrayBuffer","options","DataView","_options$magic","magic","magic1","getUint32","parseGLBSync","glb","type","version","byteLength","Object","assign","header","hasBinChunk","json","binChunks","parseGLBV1","parseGLBV2","Error","assert","contentLength","contentFormat","parseJSONChunk","parseBINChunk","parseGLBChunksSync","chunkLength","chunkFormat","strict","padToNBytes","jsonChunk","Uint8Array","buffer","textDecoder","TextDecoder","jsonText","decode","JSON","parse","push"],"sources":["../../../../src/lib/parsers/parse-glb.ts"],"sourcesContent":["/* eslint-disable camelcase, max-statements */\n// https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#glb-file-format-specification\n// https://github.com/KhronosGroup/glTF/tree/master/extensions/1.0/Khronos/KHR_binary_glTF\nimport type {GLB} from '../types/glb-types';\nimport {padToNBytes, assert} from '@loaders.gl/loader-utils';\n\nexport type GLBParseOptions = {\n magic?: number;\n strict?: boolean;\n};\n\nconst MAGIC_glTF = 0x676c5446; // glTF in Big-Endian ASCII\n\nconst GLB_FILE_HEADER_SIZE = 12;\nconst GLB_CHUNK_HEADER_SIZE = 8;\n\nconst GLB_CHUNK_TYPE_JSON = 0x4e4f534a;\nconst GLB_CHUNK_TYPE_BIN = 0x004e4942;\nconst GLB_CHUNK_TYPE_JSON_XVIZ_DEPRECATED = 0; // DEPRECATED - Backward compatibility for old xviz files\nconst GLB_CHUNK_TYPE_BIX_XVIZ_DEPRECATED = 1; // DEPRECATED - Backward compatibility for old xviz files\n\nconst GLB_V1_CONTENT_FORMAT_JSON = 0x0;\n\nconst LE = true; // Binary GLTF is little endian.\n\nfunction getMagicString(dataView, byteOffset = 0) {\n return `\\\n${String.fromCharCode(dataView.getUint8(byteOffset + 0))}\\\n${String.fromCharCode(dataView.getUint8(byteOffset + 1))}\\\n${String.fromCharCode(dataView.getUint8(byteOffset + 2))}\\\n${String.fromCharCode(dataView.getUint8(byteOffset + 3))}`;\n}\n\n// Check if a data view is a GLB\nexport function isGLB(\n arrayBuffer: ArrayBuffer,\n byteOffset: number = 0,\n options: GLBParseOptions = {}\n): boolean {\n const dataView = new DataView(arrayBuffer);\n // Check that GLB Header starts with the magic number\n const {magic = MAGIC_glTF} = options;\n const magic1 = dataView.getUint32(byteOffset, false);\n return magic1 === magic || magic1 === MAGIC_glTF;\n}\n\nexport default function parseGLBSync(\n glb: GLB,\n arrayBuffer: ArrayBuffer,\n byteOffset: number = 0,\n options: GLBParseOptions = {}\n) {\n // Check that GLB Header starts with the magic number\n const dataView = new DataView(arrayBuffer);\n\n // Compare format with GLBLoader documentation\n const type = getMagicString(dataView, byteOffset + 0);\n const version = dataView.getUint32(byteOffset + 4, LE); // Version 2 of binary glTF container format\n const byteLength = dataView.getUint32(byteOffset + 8, LE); // Total byte length of binary file\n\n Object.assign(glb, {\n // Put less important stuff in a header, to avoid clutter\n header: {\n byteOffset, // Byte offset into the initial arrayBuffer\n byteLength,\n hasBinChunk: false\n },\n\n type,\n version,\n\n json: {},\n binChunks: []\n } as GLB);\n\n byteOffset += GLB_FILE_HEADER_SIZE;\n\n switch (glb.version) {\n case 1:\n // eslint-disable-next-line\n return parseGLBV1(glb, dataView, byteOffset);\n case 2:\n // eslint-disable-next-line\n return parseGLBV2(glb, dataView, byteOffset, (options = {}));\n default:\n throw new Error(`Invalid GLB version ${glb.version}. Only supports v1 and v2.`);\n }\n}\n\nfunction parseGLBV1(glb: GLB, dataView: DataView, byteOffset: number): number {\n // Sanity: ensure file is big enough to hold at least the headers\n assert(glb.header.byteLength > GLB_FILE_HEADER_SIZE + GLB_CHUNK_HEADER_SIZE);\n\n // Explanation of GLB structure:\n // https://cloud.githubusercontent.com/assets/3479527/22600725/36b87122-ea55-11e6-9d40-6fd42819fcab.png\n const contentLength = dataView.getUint32(byteOffset + 0, LE); // Byte length of chunk\n const contentFormat = dataView.getUint32(byteOffset + 4, LE); // Chunk format as uint32\n byteOffset += GLB_CHUNK_HEADER_SIZE;\n\n // GLB v1 only supports a single chunk type\n assert(contentFormat === GLB_V1_CONTENT_FORMAT_JSON);\n\n parseJSONChunk(glb, dataView, byteOffset, contentLength);\n // No need to call the function padToBytes() from parseJSONChunk()\n byteOffset += contentLength;\n byteOffset += parseBINChunk(glb, dataView, byteOffset, glb.header.byteLength);\n\n return byteOffset;\n}\n\nfunction parseGLBV2(\n glb: GLB,\n dataView: DataView,\n byteOffset: number,\n options: GLBParseOptions\n): number {\n // Sanity: ensure file is big enough to hold at least the first chunk header\n assert(glb.header.byteLength > GLB_FILE_HEADER_SIZE + GLB_CHUNK_HEADER_SIZE);\n\n parseGLBChunksSync(glb, dataView, byteOffset, options);\n\n return byteOffset + glb.header.byteLength;\n}\n\nfunction parseGLBChunksSync(\n glb: GLB,\n dataView: DataView,\n byteOffset: number,\n options: GLBParseOptions\n) {\n // Per spec we must iterate over chunks, ignoring all except JSON and BIN\n // Iterate as long as there is space left for another chunk header\n while (byteOffset + 8 <= glb.header.byteLength) {\n const chunkLength = dataView.getUint32(byteOffset + 0, LE); // Byte length of chunk\n const chunkFormat = dataView.getUint32(byteOffset + 4, LE); // Chunk format as uint32\n byteOffset += GLB_CHUNK_HEADER_SIZE;\n\n // Per spec we must iterate over chunks, ignoring all except JSON and BIN\n switch (chunkFormat) {\n case GLB_CHUNK_TYPE_JSON:\n parseJSONChunk(glb, dataView, byteOffset, chunkLength);\n break;\n case GLB_CHUNK_TYPE_BIN:\n parseBINChunk(glb, dataView, byteOffset, chunkLength);\n break;\n\n // Backward compatibility for very old xviz files\n case GLB_CHUNK_TYPE_JSON_XVIZ_DEPRECATED:\n if (!options.strict) {\n parseJSONChunk(glb, dataView, byteOffset, chunkLength);\n }\n break;\n case GLB_CHUNK_TYPE_BIX_XVIZ_DEPRECATED:\n if (!options.strict) {\n parseBINChunk(glb, dataView, byteOffset, chunkLength);\n }\n break;\n\n default:\n // Ignore, per spec\n // console.warn(`Unknown GLB chunk type`); // eslint-disable-line\n break;\n }\n\n byteOffset += padToNBytes(chunkLength, 4);\n }\n\n return byteOffset;\n}\n\n// Parse a GLB JSON chunk\nfunction parseJSONChunk(glb: GLB, dataView: DataView, byteOffset: number, chunkLength: number) {\n // 1. Create a \"view\" of the binary encoded JSON data inside the GLB\n const jsonChunk = new Uint8Array(dataView.buffer, byteOffset, chunkLength);\n\n // 2. Decode the JSON binary array into clear text\n const textDecoder = new TextDecoder('utf8');\n const jsonText = textDecoder.decode(jsonChunk);\n\n // 3. Parse the JSON text into a JavaScript data structure\n glb.json = JSON.parse(jsonText);\n\n return padToNBytes(chunkLength, 4);\n}\n\n// Parse a GLB BIN chunk\nfunction parseBINChunk(glb: GLB, dataView, byteOffset, chunkLength) {\n // Note: BIN chunk can be optional\n glb.header.hasBinChunk = true;\n glb.binChunks.push({\n byteOffset,\n byteLength: chunkLength,\n arrayBuffer: dataView.buffer\n // TODO - copy, or create typed array view?\n });\n\n return padToNBytes(chunkLength, 4);\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"parse-gltf.js","names":["_textures","require","_images","_loaderUtils","_assert","_resolveUrl","_getTypedArray","_gltfExtensions","_normalizeGltfV","_postProcessGltf","_parseGlb","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","return","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","isGLTF","arrayBuffer","options","byteOffset","isGLB","parseGLTF","_x","_x2","_parseGLTF","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","gltf","arrayBufferOrString","_options$gltf","_options$gltf2","_options$gltf3","_options$gltf4","context","promises","_promise","promise","_args","wrap","_callee$","_context","prev","undefined","parseGLTFContainerSync","normalizeGLTFV1","normalize","preprocessExtensions","loadBuffers","json","buffers","loadImages","push","decodeExtensions","Promise","all","abrupt","postProcess","postProcessGLTF","stop","data","uri","baseUri","ArrayBuffer","textDecoder","TextDecoder","decode","parseJSON","glb","parseGLBSync","assert","type","concat","_glb","fill","header","hasBinChunk","binChunks","byteLength","images","_x3","_x4","_x5","_loadBuffers","_callee2","buffer","_context$fetch","_response$arrayBuffer","fetch","response","_callee2$","_context2","resolveUrl","sent","_x6","_x7","_x8","_loadImages","_callee3","imageIndices","_iterator2","_step2","imageIndex","_callee3$","_context3","getReferencesImageIndices","loadImage","Set","textures","_iterator","_step","texture","source","add","sort","_x9","_x10","_x11","_x12","_x13","_loadImage","_callee4","image","index","parse","array","parsedImage","_callee4$","_context4","bufferView","Number","isFinite","getTypedArrayForBufferView","sliceArrayBuffer","ImageLoader","BasisLoader","mimeType","basis","format","selectSupportedBasisFormat","compressed","mipmaps","width","height"],"sources":["../../../../src/lib/parsers/parse-gltf.ts"],"sourcesContent":["/* eslint-disable camelcase, max-statements, no-restricted-globals */\nimport type {LoaderContext} from '@loaders.gl/loader-utils';\nimport {BasisLoader, selectSupportedBasisFormat} from '@loaders.gl/textures';\nimport type {GLTFLoaderOptions} from '../../gltf-loader';\nimport type {GLB} from '../types/glb-types';\nimport type {GLTFWithBuffers} from '../types/gltf-types';\n\nimport {ImageLoader} from '@loaders.gl/images';\nimport {parseJSON, sliceArrayBuffer} from '@loaders.gl/loader-utils';\nimport {assert} from '../utils/assert';\nimport {resolveUrl} from '../gltf-utils/resolve-url';\nimport {getTypedArrayForBufferView} from '../gltf-utils/get-typed-array';\nimport {preprocessExtensions, decodeExtensions} from '../api/gltf-extensions';\nimport {normalizeGLTFV1} from '../api/normalize-gltf-v1';\nimport {postProcessGLTF} from '../api/post-process-gltf';\nimport parseGLBSync, {isGLB} from './parse-glb';\n\nexport type GLTFParseOptions = {\n normalize?: boolean;\n loadImages?: boolean;\n loadBuffers?: boolean;\n decompressMeshes?: boolean;\n postProcess?: boolean;\n excludeExtensions?: string[];\n};\n\n// export type GLTFOptions = {\n// gltf?: GLTFParseOptions;\n// };\n\nexport function isGLTF(arrayBuffer, options?): boolean {\n const byteOffset = 0;\n return isGLB(arrayBuffer, byteOffset, options);\n}\n\nexport async function parseGLTF(\n gltf: GLTFWithBuffers,\n arrayBufferOrString,\n byteOffset = 0,\n options: GLTFLoaderOptions,\n context: LoaderContext\n) {\n parseGLTFContainerSync(gltf, arrayBufferOrString, byteOffset, options);\n\n normalizeGLTFV1(gltf, {normalize: options?.gltf?.normalize});\n\n preprocessExtensions(gltf, options, context);\n\n const promises: Promise<any>[] = [];\n\n // Load linked buffers asynchronously and decodes base64 buffers in parallel\n if (options?.gltf?.loadBuffers && gltf.json.buffers) {\n await loadBuffers(gltf, options, context);\n }\n\n if (options?.gltf?.loadImages) {\n const promise = loadImages(gltf, options, context);\n promises.push(promise);\n }\n\n const promise = decodeExtensions(gltf, options, context);\n promises.push(promise);\n\n // Parallelize image loading and buffer loading/extension decoding\n await Promise.all(promises);\n\n // Post processing resolves indices to objects, buffers\n return options?.gltf?.postProcess ? postProcessGLTF(gltf, options) : gltf;\n}\n\n// `data` - can be ArrayBuffer (GLB), ArrayBuffer (Binary JSON), String (JSON), or Object (parsed JSON)\nfunction parseGLTFContainerSync(gltf, data, byteOffset, options) {\n // Initialize gltf container\n if (options.uri) {\n gltf.baseUri = options.uri;\n }\n\n // If data is binary and starting with magic bytes, assume binary JSON text, convert to string\n if (data instanceof ArrayBuffer && !isGLB(data, byteOffset, options)) {\n const textDecoder = new TextDecoder();\n data = textDecoder.decode(data);\n }\n\n if (typeof data === 'string') {\n // If string, try to parse as JSON\n gltf.json = parseJSON(data);\n } else if (data instanceof ArrayBuffer) {\n // If still ArrayBuffer, parse as GLB container\n const glb: GLB = {} as GLB;\n byteOffset = parseGLBSync(glb, data, byteOffset, options.glb);\n\n assert(glb.type === 'glTF', `Invalid GLB magic string ${glb.type}`);\n\n gltf._glb = glb;\n gltf.json = glb.json;\n } else {\n assert(false, 'GLTF: must be ArrayBuffer or string');\n }\n\n // Populate buffers\n // Create an external buffers array to hold binary data\n const buffers = gltf.json.buffers || [];\n gltf.buffers = new Array(buffers.length).fill(null);\n\n // Populates JSON and some bin chunk info\n if (gltf._glb && gltf._glb.header.hasBinChunk) {\n const {binChunks} = gltf._glb;\n gltf.buffers[0] = {\n arrayBuffer: binChunks[0].arrayBuffer,\n byteOffset: binChunks[0].byteOffset,\n byteLength: binChunks[0].byteLength\n };\n\n // TODO - this modifies JSON and is a post processing thing\n // gltf.json.buffers[0].data = gltf.buffers[0].arrayBuffer;\n // gltf.json.buffers[0].byteOffset = gltf.buffers[0].byteOffset;\n }\n\n // Populate images\n const images = gltf.json.images || [];\n gltf.images = new Array(images.length).fill({});\n}\n\n/** Asynchronously fetch and parse buffers, store in buffers array outside of json\n * TODO - traverse gltf and determine which buffers are actually needed\n */\nasync function loadBuffers(gltf: GLTFWithBuffers, options, context: LoaderContext) {\n // TODO\n const buffers = gltf.json.buffers || [];\n for (let i = 0; i < buffers.length; ++i) {\n const buffer = buffers[i];\n if (buffer.uri) {\n const {fetch} = context;\n assert(fetch);\n\n const uri = resolveUrl(buffer.uri, options);\n const response = await context?.fetch?.(uri);\n const arrayBuffer = await response?.arrayBuffer?.();\n\n gltf.buffers[i] = {\n arrayBuffer,\n byteOffset: 0,\n byteLength: arrayBuffer.byteLength\n };\n\n delete buffer.uri;\n } else if (gltf.buffers[i] === null) {\n gltf.buffers[i] = {\n arrayBuffer: new ArrayBuffer(buffer.byteLength),\n byteOffset: 0,\n byteLength: buffer.byteLength\n };\n }\n }\n}\n\n/**\n * Loads all images\n * TODO - traverse gltf and determine which images are actually needed\n * @param gltf\n * @param options\n * @param context\n * @returns\n */\nasync function loadImages(gltf: GLTFWithBuffers, options, context: LoaderContext) {\n const imageIndices = getReferencesImageIndices(gltf);\n\n const images = gltf.json.images || [];\n\n const promises: Promise<any>[] = [];\n for (const imageIndex of imageIndices) {\n promises.push(loadImage(gltf, images[imageIndex], imageIndex, options, context));\n }\n\n return await Promise.all(promises);\n}\n\n/** Make sure we only load images that are actually referenced by textures */\nfunction getReferencesImageIndices(gltf: GLTFWithBuffers): number[] {\n const imageIndices = new Set<number>();\n\n const textures = gltf.json.textures || [];\n for (const texture of textures) {\n if (texture.source !== undefined) {\n imageIndices.add(texture.source);\n }\n }\n\n return Array.from(imageIndices).sort();\n}\n\n/** Asynchronously fetches and parses one image, store in images array outside of json */\nasync function loadImage(\n gltf: GLTFWithBuffers,\n image,\n index: number,\n options,\n context: LoaderContext\n) {\n const {fetch, parse} = context;\n\n let arrayBuffer;\n\n if (image.uri && !image.hasOwnProperty('bufferView')) {\n const uri = resolveUrl(image.uri, options);\n const response = await fetch(uri);\n arrayBuffer = await response.arrayBuffer();\n image.bufferView = {\n data: arrayBuffer\n };\n }\n\n if (Number.isFinite(image.bufferView)) {\n const array = getTypedArrayForBufferView(gltf.json, gltf.buffers, image.bufferView);\n arrayBuffer = sliceArrayBuffer(array.buffer, array.byteOffset, array.byteLength);\n }\n\n assert(arrayBuffer, 'glTF image has no data');\n\n // Call `parse`\n let parsedImage = await parse(\n arrayBuffer,\n [ImageLoader, BasisLoader],\n {mimeType: image.mimeType, basis: options.basis || {format: selectSupportedBasisFormat()}},\n context\n );\n\n if (parsedImage && parsedImage[0]) {\n parsedImage = {\n compressed: true,\n mipmaps: false,\n width: parsedImage[0].width,\n height: parsedImage[0].height,\n data: parsedImage[0]\n };\n }\n // TODO making sure ImageLoader is overridable by using array of loaders\n // const parsedImage = await parse(arrayBuffer, [ImageLoader]);\n\n // Store the loaded image\n gltf.images = gltf.images || [];\n gltf.images[index] = parsedImage;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"parse-gltf.js","names":["_textures","require","_images","_loaderUtils","_assert","_resolveUrl","_getTypedArray","_gltfExtensions","_normalizeGltfV","_postProcessGltf","_parseGlb","_interopRequireWildcard","_getRequireWildcardCache","nodeInterop","WeakMap","cacheBabelInterop","cacheNodeInterop","obj","__esModule","_typeof","default","cache","has","get","newObj","hasPropertyDescriptor","Object","defineProperty","getOwnPropertyDescriptor","key","prototype","hasOwnProperty","call","desc","set","_createForOfIteratorHelper","o","allowArrayLike","it","Symbol","iterator","Array","isArray","_unsupportedIterableToArray","length","i","F","s","n","done","value","e","_e","f","TypeError","normalCompletion","didErr","err","step","next","_e2","return","minLen","_arrayLikeToArray","toString","slice","constructor","name","from","test","arr","len","arr2","isGLTF","arrayBuffer","options","byteOffset","isGLB","parseGLTF","_x","_x2","_parseGLTF","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","gltf","arrayBufferOrString","_options$gltf","_options$gltf2","_options$gltf3","_options$gltf4","context","promises","_promise","promise","_args","wrap","_callee$","_context","prev","undefined","parseGLTFContainerSync","normalizeGLTFV1","normalize","preprocessExtensions","loadBuffers","json","buffers","loadImages","push","decodeExtensions","Promise","all","abrupt","postProcess","postProcessGLTF","stop","data","uri","baseUri","ArrayBuffer","textDecoder","TextDecoder","decode","parseJSON","glb","parseGLBSync","assert","type","concat","_glb","fill","header","hasBinChunk","binChunks","byteLength","images","_x3","_x4","_x5","_loadBuffers","_callee2","buffer","_context$fetch","_response$arrayBuffer","fetch","response","_callee2$","_context2","resolveUrl","sent","_x6","_x7","_x8","_loadImages","_callee3","imageIndices","_iterator2","_step2","imageIndex","_callee3$","_context3","getReferencesImageIndices","loadImage","Set","textures","_iterator","_step","texture","source","add","sort","_x9","_x10","_x11","_x12","_x13","_loadImage","_callee4","image","index","parse","array","parsedImage","_callee4$","_context4","bufferView","Number","isFinite","getTypedArrayForBufferView","sliceArrayBuffer","ImageLoader","BasisLoader","mimeType","basis","format","selectSupportedBasisFormat","compressed","mipmaps","width","height"],"sources":["../../../../src/lib/parsers/parse-gltf.ts"],"sourcesContent":["/* eslint-disable camelcase, max-statements, no-restricted-globals */\nimport type {LoaderContext} from '@loaders.gl/loader-utils';\nimport {BasisLoader, selectSupportedBasisFormat} from '@loaders.gl/textures';\nimport type {GLTFLoaderOptions} from '../../gltf-loader';\nimport type {GLB} from '../types/glb-types';\nimport type {GLTFWithBuffers} from '../types/gltf-types';\n\nimport {ImageLoader} from '@loaders.gl/images';\nimport {parseJSON, sliceArrayBuffer} from '@loaders.gl/loader-utils';\nimport {assert} from '../utils/assert';\nimport {resolveUrl} from '../gltf-utils/resolve-url';\nimport {getTypedArrayForBufferView} from '../gltf-utils/get-typed-array';\nimport {preprocessExtensions, decodeExtensions} from '../api/gltf-extensions';\nimport {normalizeGLTFV1} from '../api/normalize-gltf-v1';\nimport {postProcessGLTF} from '../api/post-process-gltf';\nimport parseGLBSync, {isGLB} from './parse-glb';\n\nexport type GLTFParseOptions = {\n normalize?: boolean;\n loadImages?: boolean;\n loadBuffers?: boolean;\n decompressMeshes?: boolean;\n postProcess?: boolean;\n excludeExtensions?: string[];\n};\n\n// export type GLTFOptions = {\n// gltf?: GLTFParseOptions;\n// };\n\nexport function isGLTF(arrayBuffer, options?): boolean {\n const byteOffset = 0;\n return isGLB(arrayBuffer, byteOffset, options);\n}\n\nexport async function parseGLTF(\n gltf: GLTFWithBuffers,\n arrayBufferOrString,\n byteOffset = 0,\n options: GLTFLoaderOptions,\n context: LoaderContext\n) {\n parseGLTFContainerSync(gltf, arrayBufferOrString, byteOffset, options);\n\n normalizeGLTFV1(gltf, {normalize: options?.gltf?.normalize});\n\n preprocessExtensions(gltf, options, context);\n\n const promises: Promise<any>[] = [];\n\n // Load linked buffers asynchronously and decodes base64 buffers in parallel\n if (options?.gltf?.loadBuffers && gltf.json.buffers) {\n await loadBuffers(gltf, options, context);\n }\n\n if (options?.gltf?.loadImages) {\n const promise = loadImages(gltf, options, context);\n promises.push(promise);\n }\n\n const promise = decodeExtensions(gltf, options, context);\n promises.push(promise);\n\n // Parallelize image loading and buffer loading/extension decoding\n await Promise.all(promises);\n\n // Post processing resolves indices to objects, buffers\n return options?.gltf?.postProcess ? postProcessGLTF(gltf, options) : gltf;\n}\n\n// `data` - can be ArrayBuffer (GLB), ArrayBuffer (Binary JSON), String (JSON), or Object (parsed JSON)\nfunction parseGLTFContainerSync(gltf, data, byteOffset, options) {\n // Initialize gltf container\n if (options.uri) {\n gltf.baseUri = options.uri;\n }\n\n // If data is binary and starting with magic bytes, assume binary JSON text, convert to string\n if (data instanceof ArrayBuffer && !isGLB(data, byteOffset, options)) {\n const textDecoder = new TextDecoder();\n data = textDecoder.decode(data);\n }\n\n if (typeof data === 'string') {\n // If string, try to parse as JSON\n gltf.json = parseJSON(data);\n } else if (data instanceof ArrayBuffer) {\n // If still ArrayBuffer, parse as GLB container\n const glb: GLB = {} as GLB;\n byteOffset = parseGLBSync(glb, data, byteOffset, options.glb);\n\n assert(glb.type === 'glTF', `Invalid GLB magic string ${glb.type}`);\n\n gltf._glb = glb;\n gltf.json = glb.json;\n } else {\n assert(false, 'GLTF: must be ArrayBuffer or string');\n }\n\n // Populate buffers\n // Create an external buffers array to hold binary data\n const buffers = gltf.json.buffers || [];\n gltf.buffers = new Array(buffers.length).fill(null);\n\n // Populates JSON and some bin chunk info\n if (gltf._glb && gltf._glb.header.hasBinChunk) {\n const {binChunks} = gltf._glb;\n gltf.buffers[0] = {\n arrayBuffer: binChunks[0].arrayBuffer,\n byteOffset: binChunks[0].byteOffset,\n byteLength: binChunks[0].byteLength\n };\n\n // TODO - this modifies JSON and is a post processing thing\n // gltf.json.buffers[0].data = gltf.buffers[0].arrayBuffer;\n // gltf.json.buffers[0].byteOffset = gltf.buffers[0].byteOffset;\n }\n\n // Populate images\n const images = gltf.json.images || [];\n gltf.images = new Array(images.length).fill({});\n}\n\n/** Asynchronously fetch and parse buffers, store in buffers array outside of json\n * TODO - traverse gltf and determine which buffers are actually needed\n */\nasync function loadBuffers(gltf: GLTFWithBuffers, options, context: LoaderContext) {\n // TODO\n const buffers = gltf.json.buffers || [];\n for (let i = 0; i < buffers.length; ++i) {\n const buffer = buffers[i];\n if (buffer.uri) {\n const {fetch} = context;\n assert(fetch);\n\n const uri = resolveUrl(buffer.uri, options);\n const response = await context?.fetch?.(uri);\n const arrayBuffer = await response?.arrayBuffer?.();\n\n gltf.buffers[i] = {\n arrayBuffer,\n byteOffset: 0,\n byteLength: arrayBuffer.byteLength\n };\n\n delete buffer.uri;\n } else if (gltf.buffers[i] === null) {\n gltf.buffers[i] = {\n arrayBuffer: new ArrayBuffer(buffer.byteLength),\n byteOffset: 0,\n byteLength: buffer.byteLength\n };\n }\n }\n}\n\n/**\n * Loads all images\n * TODO - traverse gltf and determine which images are actually needed\n * @param gltf\n * @param options\n * @param context\n * @returns\n */\nasync function loadImages(gltf: GLTFWithBuffers, options, context: LoaderContext) {\n const imageIndices = getReferencesImageIndices(gltf);\n\n const images = gltf.json.images || [];\n\n const promises: Promise<any>[] = [];\n for (const imageIndex of imageIndices) {\n promises.push(loadImage(gltf, images[imageIndex], imageIndex, options, context));\n }\n\n return await Promise.all(promises);\n}\n\n/** Make sure we only load images that are actually referenced by textures */\nfunction getReferencesImageIndices(gltf: GLTFWithBuffers): number[] {\n const imageIndices = new Set<number>();\n\n const textures = gltf.json.textures || [];\n for (const texture of textures) {\n if (texture.source !== undefined) {\n imageIndices.add(texture.source);\n }\n }\n\n return Array.from(imageIndices).sort();\n}\n\n/** Asynchronously fetches and parses one image, store in images array outside of json */\nasync function loadImage(\n gltf: GLTFWithBuffers,\n image,\n index: number,\n options,\n context: LoaderContext\n) {\n const {fetch, parse} = context;\n\n let arrayBuffer;\n\n if (image.uri && !image.hasOwnProperty('bufferView')) {\n const uri = resolveUrl(image.uri, options);\n const response = await fetch(uri);\n arrayBuffer = await response.arrayBuffer();\n image.bufferView = {\n data: arrayBuffer\n };\n }\n\n if (Number.isFinite(image.bufferView)) {\n const array = getTypedArrayForBufferView(gltf.json, gltf.buffers, image.bufferView);\n arrayBuffer = sliceArrayBuffer(array.buffer, array.byteOffset, array.byteLength);\n }\n\n assert(arrayBuffer, 'glTF image has no data');\n\n // Call `parse`\n let parsedImage = await parse(\n arrayBuffer,\n [ImageLoader, BasisLoader],\n {mimeType: image.mimeType, basis: options.basis || {format: selectSupportedBasisFormat()}},\n context\n );\n\n if (parsedImage && parsedImage[0]) {\n parsedImage = {\n compressed: true,\n mipmaps: false,\n width: parsedImage[0].width,\n height: parsedImage[0].height,\n data: parsedImage[0]\n };\n }\n // TODO making sure ImageLoader is overridable by using array of loaders\n // const parsedImage = await parse(arrayBuffer, [ImageLoader]);\n\n // Store the loaded image\n gltf.images = gltf.images || [];\n gltf.images[index] = parsedImage;\n}\n"],"mappings":"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"}
@@ -4,6 +4,6 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.VERSION = void 0;
7
- var VERSION = typeof "3.4.0-alpha.3" !== 'undefined' ? "3.4.0-alpha.3" : 'latest';
7
+ var VERSION = typeof "3.4.0-alpha.5" !== 'undefined' ? "3.4.0-alpha.5" : 'latest';
8
8
  exports.VERSION = VERSION;
9
9
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"meshopt-decoder.js","names":["isWebAssemblySupported","WebAssembly","_typeof2","default","wasm_base","wasm_simd","detector","Uint8Array","wasmpack","FILTERS","NONE","OCTAHEDRAL","QUATERNION","EXPONENTIAL","DECODERS","ATTRIBUTES","TRIANGLES","INDICES","isMeshoptSupported","meshoptDecodeVertexBuffer","_x","_x2","_x3","_x4","_meshoptDecodeVertexBuffer","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","target","count","size","source","filter","instance","_args","wrap","_callee$","_context","prev","next","length","undefined","loadWasmInstance","sent","decode","exports","meshopt_decodeVertexBuffer","stop","meshoptDecodeIndexBuffer","_x5","_x6","_x7","_x8","_meshoptDecodeIndexBuffer","_callee2","_callee2$","_context2","meshopt_decodeIndexBuffer","meshoptDecodeIndexSequence","_x9","_x10","_x11","_x12","_meshoptDecodeIndexSequence","_callee3","_callee3$","_context3","meshopt_decodeIndexSequence","meshoptDecodeGltfBuffer","_x13","_x14","_x15","_x16","_x17","_meshoptDecodeGltfBuffer","_callee4","mode","_args4","_callee4$","_context4","wasmPromise","_loadWasmInstance","_callee5","_callee5$","_context5","loadWasmModule","abrupt","_loadWasmModule","_callee6","wasm","result","_callee6$","_context6","validate","console","log","instantiate","unpack","__wasm_call_ctors","data","i","ch","charCodeAt","write","buffer","slice","fun","sbrk","count4","tp","sp","heap","memory","set","res","subarray","Error","concat"],"sources":["../../../src/meshopt/meshopt-decoder.ts"],"sourcesContent":["// This file is part of meshoptimizer library and is distributed under the terms of MIT License.\n// Copyright (C) 2016-2021, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)\n\n/* eslint-disable camelcase */\nconst isWebAssemblySupported = typeof WebAssembly !== 'object';\n\n// Built with clang version 11.0.0 (https://github.com/llvm/llvm-project.git 0160ad802e899c2922bc9b29564080c22eb0908c)\n// Built from meshoptimizer 0.16\nconst wasm_base =\n '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';\nconst wasm_simd =\n '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';\n\n// Uses bulk-memory and simd extensions\nconst detector = new Uint8Array([\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 3, 2, 0, 0, 5, 3, 1, 0, 1, 12, 1, 0, 10, 22, 2,\n 12, 0, 65, 0, 65, 0, 65, 0, 252, 10, 0, 0, 11, 7, 0, 65, 0, 253, 15, 26, 11\n]);\n\n// Used to unpack wasm\nconst wasmpack = new Uint8Array([\n 32, 0, 65, 253, 3, 1, 2, 34, 4, 106, 6, 5, 11, 8, 7, 20, 13, 33, 12, 16, 128, 9, 116, 64, 19, 113,\n 127, 15, 10, 21, 22, 14, 255, 66, 24, 54, 136, 107, 18, 23, 192, 26, 114, 118, 132, 17, 77, 101,\n 130, 144, 27, 87, 131, 44, 45, 74, 156, 154, 70, 167\n]);\n\nconst FILTERS = {\n // legacy index-based enums for glTF\n 0: '',\n 1: 'meshopt_decodeFilterOct',\n 2: 'meshopt_decodeFilterQuat',\n 3: 'meshopt_decodeFilterExp',\n // string-based enums for glTF\n NONE: '',\n OCTAHEDRAL: 'meshopt_decodeFilterOct',\n QUATERNION: 'meshopt_decodeFilterQuat',\n EXPONENTIAL: 'meshopt_decodeFilterExp'\n};\n\nconst DECODERS = {\n // legacy index-based enums for glTF\n 0: 'meshopt_decodeVertexBuffer',\n 1: 'meshopt_decodeIndexBuffer',\n 2: 'meshopt_decodeIndexSequence',\n // string-based enums for glTF\n ATTRIBUTES: 'meshopt_decodeVertexBuffer',\n TRIANGLES: 'meshopt_decodeIndexBuffer',\n INDICES: 'meshopt_decodeIndexSequence'\n};\n\nexport function isMeshoptSupported(): boolean {\n return isWebAssemblySupported;\n}\n\nexport async function meshoptDecodeVertexBuffer(\n target: Uint8Array,\n count: number,\n size: number,\n source: Uint8Array,\n filter: string | number = 'NONE'\n): Promise<void> {\n const instance = await loadWasmInstance();\n decode(\n instance,\n instance.exports.meshopt_decodeVertexBuffer,\n target,\n count,\n size,\n source,\n instance.exports[FILTERS[filter]]\n );\n}\n\nexport async function meshoptDecodeIndexBuffer(\n target: Uint8Array,\n count: number,\n size: number,\n source: Uint8Array\n): Promise<void> {\n const instance = await loadWasmInstance();\n decode(instance, instance.exports.meshopt_decodeIndexBuffer, target, count, size, source);\n}\n\nexport async function meshoptDecodeIndexSequence(\n target: Uint8Array,\n count: number,\n size: number,\n source: Uint8Array\n): Promise<void> {\n const instance = await loadWasmInstance();\n decode(instance, instance.exports.meshopt_decodeIndexSequence, target, count, size, source);\n}\n\n// eslint-disable-next-line max-params\nexport async function meshoptDecodeGltfBuffer(\n target: Uint8Array,\n count: number,\n size: number,\n source: Uint8Array,\n mode: string,\n filter: string | number = 'NONE'\n): Promise<void> {\n const instance = await loadWasmInstance();\n decode(\n instance,\n instance.exports[DECODERS[mode]],\n target,\n count,\n size,\n source,\n instance.exports[FILTERS[filter || 'NONE']]\n );\n}\n\nlet wasmPromise: Promise<WebAssembly.Instance>;\n\nasync function loadWasmInstance(): Promise<WebAssembly.Instance> {\n // eslint-disable-next-line\n if (!wasmPromise) {\n wasmPromise = loadWasmModule();\n }\n return wasmPromise;\n}\n\nasync function loadWasmModule(): Promise<WebAssembly.Instance> {\n let wasm = wasm_base;\n if (WebAssembly.validate(detector)) {\n wasm = wasm_simd;\n\n // eslint-disable-next-line no-console\n console.log('Warning: meshopt_decoder is using experimental SIMD support');\n }\n\n const result = await WebAssembly.instantiate(unpack(wasm), {});\n await (result.instance.exports as any).__wasm_call_ctors();\n return result.instance;\n}\n\nfunction unpack(data) {\n const result = new Uint8Array(data.length);\n for (let i = 0; i < data.length; ++i) {\n const ch = data.charCodeAt(i);\n result[i] = ch > 96 ? ch - 71 : ch > 64 ? ch - 65 : ch > 47 ? ch + 4 : ch > 46 ? 63 : 62;\n }\n let write = 0;\n for (let i = 0; i < data.length; ++i) {\n result[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];\n }\n return result.buffer.slice(0, write);\n}\n\n// eslint-disable-next-line max-params\nfunction decode(instance, fun, target, count, size, source, filter?) {\n const sbrk = instance.exports.sbrk;\n const count4 = (count + 3) & ~3; // pad for SIMD filter\n const tp = sbrk(count4 * size);\n const sp = sbrk(source.length);\n const heap = new Uint8Array(instance.exports.memory.buffer);\n heap.set(source, sp);\n const res = fun(tp, count, size, sp, source.length);\n if (res === 0 && filter) {\n filter(tp, count4, size);\n }\n target.set(heap.subarray(tp, tp + count * size));\n sbrk(tp - sbrk(0));\n if (res !== 0) {\n throw new Error(`Malformed buffer data: ${res}`);\n }\n}\n"],"mappings":";;;;;;;;;;;;;;AAIA,IAAMA,sBAAsB,GAAG,QAAOC,WAAW,qCAAAC,QAAA,CAAAC,OAAA,EAAXF,WAAW,OAAK,QAAQ;AAI9D,IAAMG,SAAS,GACb,+rOAA+rO;AACjsO,IAAMC,SAAS,GACb,o6UAAo6U;AAGt6U,IAAMC,QAAQ,GAAG,IAAIC,UAAU,CAAC,CAC9B,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EACjG,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAC5E,CAAC;AAGF,IAAMC,QAAQ,GAAG,IAAID,UAAU,CAAC,CAC9B,EAAE,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EACjG,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAC/F,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,CACrD,CAAC;AAEF,IAAME,OAAO,GAAG;EAEd,CAAC,EAAE,EAAE;EACL,CAAC,EAAE,yBAAyB;EAC5B,CAAC,EAAE,0BAA0B;EAC7B,CAAC,EAAE,yBAAyB;EAE5BC,IAAI,EAAE,EAAE;EACRC,UAAU,EAAE,yBAAyB;EACrCC,UAAU,EAAE,0BAA0B;EACtCC,WAAW,EAAE;AACf,CAAC;AAED,IAAMC,QAAQ,GAAG;EAEf,CAAC,EAAE,4BAA4B;EAC/B,CAAC,EAAE,2BAA2B;EAC9B,CAAC,EAAE,6BAA6B;EAEhCC,UAAU,EAAE,4BAA4B;EACxCC,SAAS,EAAE,2BAA2B;EACtCC,OAAO,EAAE;AACX,CAAC;AAEM,SAASC,kBAAkBA,CAAA,EAAY;EAC5C,OAAOlB,sBAAsB;AAC/B;AAAC,SAEqBmB,yBAAyBA,CAAAC,EAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,0BAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,2BAAA;EAAAA,0BAAA,OAAAG,kBAAA,CAAAxB,OAAA,EAAAyB,YAAA,CAAAzB,OAAA,CAAA0B,IAAA,CAAxC,SAAAC,QACLC,MAAkB,EAClBC,KAAa,EACbC,IAAY,EACZC,MAAkB;IAAA,IAAAC,MAAA;MAAAC,QAAA;MAAAC,KAAA,GAAAX,SAAA;IAAA,OAAAE,YAAA,CAAAzB,OAAA,CAAAmC,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAClBP,MAAuB,GAAAE,KAAA,CAAAM,MAAA,QAAAN,KAAA,QAAAO,SAAA,GAAAP,KAAA,MAAG,MAAM;UAAAG,QAAA,CAAAE,IAAA;UAAA,OAETG,gBAAgB,EAAE;QAAA;UAAnCT,QAAQ,GAAAI,QAAA,CAAAM,IAAA;UACdC,MAAM,CACJX,QAAQ,EACRA,QAAQ,CAACY,OAAO,CAACC,0BAA0B,EAC3ClB,MAAM,EACNC,KAAK,EACLC,IAAI,EACJC,MAAM,EACNE,QAAQ,CAACY,OAAO,CAACvC,OAAO,CAAC0B,MAAM,CAAC,CAAC,CAClC;QAAC;QAAA;UAAA,OAAAK,QAAA,CAAAU,IAAA;MAAA;IAAA,GAAApB,OAAA;EAAA,CACH;EAAA,OAAAN,0BAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAEqByB,wBAAwBA,CAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA,EAAAC,GAAA;EAAA,OAAAC,yBAAA,CAAA/B,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAA8B,0BAAA;EAAAA,yBAAA,OAAA7B,kBAAA,CAAAxB,OAAA,EAAAyB,YAAA,CAAAzB,OAAA,CAAA0B,IAAA,CAAvC,SAAA4B,SACL1B,MAAkB,EAClBC,KAAa,EACbC,IAAY,EACZC,MAAkB;IAAA,IAAAE,QAAA;IAAA,OAAAR,YAAA,CAAAzB,OAAA,CAAAmC,IAAA,UAAAoB,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAlB,IAAA,GAAAkB,SAAA,CAAAjB,IAAA;QAAA;UAAAiB,SAAA,CAAAjB,IAAA;UAAA,OAEKG,gBAAgB,EAAE;QAAA;UAAnCT,QAAQ,GAAAuB,SAAA,CAAAb,IAAA;UACdC,MAAM,CAACX,QAAQ,EAAEA,QAAQ,CAACY,OAAO,CAACY,yBAAyB,EAAE7B,MAAM,EAAEC,KAAK,EAAEC,IAAI,EAAEC,MAAM,CAAC;QAAC;QAAA;UAAA,OAAAyB,SAAA,CAAAT,IAAA;MAAA;IAAA,GAAAO,QAAA;EAAA,CAC3F;EAAA,OAAAD,yBAAA,CAAA/B,KAAA,OAAAC,SAAA;AAAA;AAAA,SAEqBmC,0BAA0BA,CAAAC,GAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,2BAAA,CAAAzC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAwC,4BAAA;EAAAA,2BAAA,OAAAvC,kBAAA,CAAAxB,OAAA,EAAAyB,YAAA,CAAAzB,OAAA,CAAA0B,IAAA,CAAzC,SAAAsC,SACLpC,MAAkB,EAClBC,KAAa,EACbC,IAAY,EACZC,MAAkB;IAAA,IAAAE,QAAA;IAAA,OAAAR,YAAA,CAAAzB,OAAA,CAAAmC,IAAA,UAAA8B,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAA5B,IAAA,GAAA4B,SAAA,CAAA3B,IAAA;QAAA;UAAA2B,SAAA,CAAA3B,IAAA;UAAA,OAEKG,gBAAgB,EAAE;QAAA;UAAnCT,QAAQ,GAAAiC,SAAA,CAAAvB,IAAA;UACdC,MAAM,CAACX,QAAQ,EAAEA,QAAQ,CAACY,OAAO,CAACsB,2BAA2B,EAAEvC,MAAM,EAAEC,KAAK,EAAEC,IAAI,EAAEC,MAAM,CAAC;QAAC;QAAA;UAAA,OAAAmC,SAAA,CAAAnB,IAAA;MAAA;IAAA,GAAAiB,QAAA;EAAA,CAC7F;EAAA,OAAAD,2BAAA,CAAAzC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAGqB6C,uBAAuBA,CAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA,EAAAC,IAAA;EAAA,OAAAC,wBAAA,CAAApD,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAmD,yBAAA;EAAAA,wBAAA,OAAAlD,kBAAA,CAAAxB,OAAA,EAAAyB,YAAA,CAAAzB,OAAA,CAAA0B,IAAA,CAAtC,SAAAiD,SACL/C,MAAkB,EAClBC,KAAa,EACbC,IAAY,EACZC,MAAkB,EAClB6C,IAAY;IAAA,IAAA5C,MAAA;MAAAC,QAAA;MAAA4C,MAAA,GAAAtD,SAAA;IAAA,OAAAE,YAAA,CAAAzB,OAAA,CAAAmC,IAAA,UAAA2C,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAzC,IAAA,GAAAyC,SAAA,CAAAxC,IAAA;QAAA;UACZP,MAAuB,GAAA6C,MAAA,CAAArC,MAAA,QAAAqC,MAAA,QAAApC,SAAA,GAAAoC,MAAA,MAAG,MAAM;UAAAE,SAAA,CAAAxC,IAAA;UAAA,OAETG,gBAAgB,EAAE;QAAA;UAAnCT,QAAQ,GAAA8C,SAAA,CAAApC,IAAA;UACdC,MAAM,CACJX,QAAQ,EACRA,QAAQ,CAACY,OAAO,CAAClC,QAAQ,CAACiE,IAAI,CAAC,CAAC,EAChChD,MAAM,EACNC,KAAK,EACLC,IAAI,EACJC,MAAM,EACNE,QAAQ,CAACY,OAAO,CAACvC,OAAO,CAAC0B,MAAM,IAAI,MAAM,CAAC,CAAC,CAC5C;QAAC;QAAA;UAAA,OAAA+C,SAAA,CAAAhC,IAAA;MAAA;IAAA,GAAA4B,QAAA;EAAA,CACH;EAAA,OAAAD,wBAAA,CAAApD,KAAA,OAAAC,SAAA;AAAA;AAED,IAAIyD,WAA0C;AAAC,SAEhCtC,gBAAgBA,CAAA;EAAA,OAAAuC,iBAAA,CAAA3D,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAA0D,kBAAA;EAAAA,iBAAA,OAAAzD,kBAAA,CAAAxB,OAAA,EAAAyB,YAAA,CAAAzB,OAAA,CAAA0B,IAAA,CAA/B,SAAAwD,SAAA;IAAA,OAAAzD,YAAA,CAAAzB,OAAA,CAAAmC,IAAA,UAAAgD,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAA9C,IAAA,GAAA8C,SAAA,CAAA7C,IAAA;QAAA;UAEE,IAAI,CAACyC,WAAW,EAAE;YAChBA,WAAW,GAAGK,cAAc,EAAE;UAChC;UAAC,OAAAD,SAAA,CAAAE,MAAA,WACMN,WAAW;QAAA;QAAA;UAAA,OAAAI,SAAA,CAAArC,IAAA;MAAA;IAAA,GAAAmC,QAAA;EAAA,CACnB;EAAA,OAAAD,iBAAA,CAAA3D,KAAA,OAAAC,SAAA;AAAA;AAAA,SAEc8D,cAAcA,CAAA;EAAA,OAAAE,eAAA,CAAAjE,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAgE,gBAAA;EAAAA,eAAA,OAAA/D,kBAAA,CAAAxB,OAAA,EAAAyB,YAAA,CAAAzB,OAAA,CAAA0B,IAAA,CAA7B,SAAA8D,SAAA;IAAA,IAAAC,IAAA,EAAAC,MAAA;IAAA,OAAAjE,YAAA,CAAAzB,OAAA,CAAAmC,IAAA,UAAAwD,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAtD,IAAA,GAAAsD,SAAA,CAAArD,IAAA;QAAA;UACMkD,IAAI,GAAGxF,SAAS;UACpB,IAAIH,WAAW,CAAC+F,QAAQ,CAAC1F,QAAQ,CAAC,EAAE;YAClCsF,IAAI,GAAGvF,SAAS;YAGhB4F,OAAO,CAACC,GAAG,CAAC,6DAA6D,CAAC;UAC5E;UAACH,SAAA,CAAArD,IAAA;UAAA,OAEoBzC,WAAW,CAACkG,WAAW,CAACC,MAAM,CAACR,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAAA;UAAxDC,MAAM,GAAAE,SAAA,CAAAjD,IAAA;UAAAiD,SAAA,CAAArD,IAAA;UAAA,OACLmD,MAAM,CAACzD,QAAQ,CAACY,OAAO,CAASqD,iBAAiB,EAAE;QAAA;UAAA,OAAAN,SAAA,CAAAN,MAAA,WACnDI,MAAM,CAACzD,QAAQ;QAAA;QAAA;UAAA,OAAA2D,SAAA,CAAA7C,IAAA;MAAA;IAAA,GAAAyC,QAAA;EAAA,CACvB;EAAA,OAAAD,eAAA,CAAAjE,KAAA,OAAAC,SAAA;AAAA;AAED,SAAS0E,MAAMA,CAACE,IAAI,EAAE;EACpB,IAAMT,MAAM,GAAG,IAAItF,UAAU,CAAC+F,IAAI,CAAC3D,MAAM,CAAC;EAC1C,KAAK,IAAI4D,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGD,IAAI,CAAC3D,MAAM,EAAE,EAAE4D,CAAC,EAAE;IACpC,IAAMC,EAAE,GAAGF,IAAI,CAACG,UAAU,CAACF,CAAC,CAAC;IAC7BV,MAAM,CAACU,CAAC,CAAC,GAAGC,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,EAAE,GAAGA,EAAE,GAAG,CAAC,GAAGA,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE;EAC1F;EACA,IAAIE,KAAK,GAAG,CAAC;EACb,KAAK,IAAIH,EAAC,GAAG,CAAC,EAAEA,EAAC,GAAGD,IAAI,CAAC3D,MAAM,EAAE,EAAE4D,EAAC,EAAE;IACpCV,MAAM,CAACa,KAAK,EAAE,CAAC,GAAGb,MAAM,CAACU,EAAC,CAAC,GAAG,EAAE,GAAG/F,QAAQ,CAACqF,MAAM,CAACU,EAAC,CAAC,CAAC,GAAG,CAACV,MAAM,CAACU,EAAC,CAAC,GAAG,EAAE,IAAI,EAAE,GAAGV,MAAM,CAAC,EAAEU,EAAC,CAAC;EAC9F;EACA,OAAOV,MAAM,CAACc,MAAM,CAACC,KAAK,CAAC,CAAC,EAAEF,KAAK,CAAC;AACtC;AAGA,SAAS3D,MAAMA,CAACX,QAAQ,EAAEyE,GAAG,EAAE9E,MAAM,EAAEC,KAAK,EAAEC,IAAI,EAAEC,MAAM,EAAEC,MAAO,EAAE;EACnE,IAAM2E,IAAI,GAAG1E,QAAQ,CAACY,OAAO,CAAC8D,IAAI;EAClC,IAAMC,MAAM,GAAI/E,KAAK,GAAG,CAAC,GAAI,CAAC,CAAC;EAC/B,IAAMgF,EAAE,GAAGF,IAAI,CAACC,MAAM,GAAG9E,IAAI,CAAC;EAC9B,IAAMgF,EAAE,GAAGH,IAAI,CAAC5E,MAAM,CAACS,MAAM,CAAC;EAC9B,IAAMuE,IAAI,GAAG,IAAI3G,UAAU,CAAC6B,QAAQ,CAACY,OAAO,CAACmE,MAAM,CAACR,MAAM,CAAC;EAC3DO,IAAI,CAACE,GAAG,CAAClF,MAAM,EAAE+E,EAAE,CAAC;EACpB,IAAMI,GAAG,GAAGR,GAAG,CAACG,EAAE,EAAEhF,KAAK,EAAEC,IAAI,EAAEgF,EAAE,EAAE/E,MAAM,CAACS,MAAM,CAAC;EACnD,IAAI0E,GAAG,KAAK,CAAC,IAAIlF,MAAM,EAAE;IACvBA,MAAM,CAAC6E,EAAE,EAAED,MAAM,EAAE9E,IAAI,CAAC;EAC1B;EACAF,MAAM,CAACqF,GAAG,CAACF,IAAI,CAACI,QAAQ,CAACN,EAAE,EAAEA,EAAE,GAAGhF,KAAK,GAAGC,IAAI,CAAC,CAAC;EAChD6E,IAAI,CAACE,EAAE,GAAGF,IAAI,CAAC,CAAC,CAAC,CAAC;EAClB,IAAIO,GAAG,KAAK,CAAC,EAAE;IACb,MAAM,IAAIE,KAAK,2BAAAC,MAAA,CAA2BH,GAAG,EAAG;EAClD;AACF"}
1
+ {"version":3,"file":"meshopt-decoder.js","names":["isWebAssemblySupported","WebAssembly","_typeof2","default","wasm_base","wasm_simd","detector","Uint8Array","wasmpack","FILTERS","NONE","OCTAHEDRAL","QUATERNION","EXPONENTIAL","DECODERS","ATTRIBUTES","TRIANGLES","INDICES","isMeshoptSupported","meshoptDecodeVertexBuffer","_x","_x2","_x3","_x4","_meshoptDecodeVertexBuffer","apply","arguments","_asyncToGenerator2","_regenerator","mark","_callee","target","count","size","source","filter","instance","_args","wrap","_callee$","_context","prev","next","length","undefined","loadWasmInstance","sent","decode","exports","meshopt_decodeVertexBuffer","stop","meshoptDecodeIndexBuffer","_x5","_x6","_x7","_x8","_meshoptDecodeIndexBuffer","_callee2","_callee2$","_context2","meshopt_decodeIndexBuffer","meshoptDecodeIndexSequence","_x9","_x10","_x11","_x12","_meshoptDecodeIndexSequence","_callee3","_callee3$","_context3","meshopt_decodeIndexSequence","meshoptDecodeGltfBuffer","_x13","_x14","_x15","_x16","_x17","_meshoptDecodeGltfBuffer","_callee4","mode","_args4","_callee4$","_context4","wasmPromise","_loadWasmInstance","_callee5","_callee5$","_context5","loadWasmModule","abrupt","_loadWasmModule","_callee6","wasm","result","_callee6$","_context6","validate","console","log","instantiate","unpack","__wasm_call_ctors","data","i","ch","charCodeAt","write","buffer","slice","fun","sbrk","count4","tp","sp","heap","memory","set","res","subarray","Error","concat"],"sources":["../../../src/meshopt/meshopt-decoder.ts"],"sourcesContent":["// This file is part of meshoptimizer library and is distributed under the terms of MIT License.\n// Copyright (C) 2016-2021, by Arseny Kapoulkine (arseny.kapoulkine@gmail.com)\n\n/* eslint-disable camelcase */\nconst isWebAssemblySupported = typeof WebAssembly !== 'object';\n\n// Built with clang version 11.0.0 (https://github.com/llvm/llvm-project.git 0160ad802e899c2922bc9b29564080c22eb0908c)\n// Built from meshoptimizer 0.16\nconst wasm_base =\n 'B9h9z9tFBBBF8fL9gBB9gLaaaaaFa9gEaaaB9gFaFa9gEaaaFaEMcBFFFGGGEIIILF9wFFFLEFBFKNFaFCx/IFMO/LFVK9tv9t9vq95GBt9f9f939h9z9t9f9j9h9s9s9f9jW9vq9zBBp9tv9z9o9v9wW9f9kv9j9v9kv9WvqWv94h919m9mvqBF8Z9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv94h919m9mvqBGy9tv9z9o9v9wW9f9kv9j9v9kv9J9u9kv949TvZ91v9u9jvBEn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9P9jWBIi9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9R919hWBLn9tv9z9o9v9wW9f9kv9j9v9kv69p9sWvq9F949wBKI9z9iqlBOc+x8ycGBM/qQFTa8jUUUUBCU/EBlHL8kUUUUBC9+RKGXAGCFJAI9LQBCaRKAE2BBC+gF9HQBALAEAIJHOAGlAGTkUUUBRNCUoBAG9uC/wgBZHKCUGAKCUG9JyRVAECFJRICBRcGXEXAcAF9PQFAVAFAclAcAVJAF9JyRMGXGXAG9FQBAMCbJHKC9wZRSAKCIrCEJCGrRQANCUGJRfCBRbAIRTEXGXAOATlAQ9PQBCBRISEMATAQJRIGXAS9FQBCBRtCBREEXGXAOAIlCi9PQBCBRISLMANCU/CBJAEJRKGXGXGXGXGXATAECKrJ2BBAtCKZrCEZfIBFGEBMAKhB83EBAKCNJhB83EBSEMAKAI2BIAI2BBHmCKrHYAYCE6HYy86BBAKCFJAICIJAYJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCGJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCEJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCIJAYAmJHY2BBAI2BFHmCKrHPAPCE6HPy86BBAKCLJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCKJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCOJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCNJAYAmJHY2BBAI2BGHmCKrHPAPCE6HPy86BBAKCVJAYAPJHY2BBAmCIrCEZHPAPCE6HPy86BBAKCcJAYAPJHY2BBAmCGrCEZHPAPCE6HPy86BBAKCMJAYAPJHY2BBAmCEZHmAmCE6Hmy86BBAKCSJAYAmJHm2BBAI2BEHICKrHYAYCE6HYy86BBAKCQJAmAYJHm2BBAICIrCEZHYAYCE6HYy86BBAKCfJAmAYJHm2BBAICGrCEZHYAYCE6HYy86BBAKCbJAmAYJHK2BBAICEZHIAICE6HIy86BBAKAIJRISGMAKAI2BNAI2BBHmCIrHYAYCb6HYy86BBAKCFJAICNJAYJHY2BBAmCbZHmAmCb6Hmy86BBAKCGJAYAmJHm2BBAI2BFHYCIrHPAPCb6HPy86BBAKCEJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCIJAmAYJHm2BBAI2BGHYCIrHPAPCb6HPy86BBAKCLJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCKJAmAYJHm2BBAI2BEHYCIrHPAPCb6HPy86BBAKCOJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCNJAmAYJHm2BBAI2BIHYCIrHPAPCb6HPy86BBAKCVJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCcJAmAYJHm2BBAI2BLHYCIrHPAPCb6HPy86BBAKCMJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCSJAmAYJHm2BBAI2BKHYCIrHPAPCb6HPy86BBAKCQJAmAPJHm2BBAYCbZHYAYCb6HYy86BBAKCfJAmAYJHm2BBAI2BOHICIrHYAYCb6HYy86BBAKCbJAmAYJHK2BBAICbZHIAICb6HIy86BBAKAIJRISFMAKAI8pBB83BBAKCNJAICNJ8pBB83BBAICTJRIMAtCGJRtAECTJHEAS9JQBMMGXAIQBCBRISEMGXAM9FQBANAbJ2BBRtCBRKAfREEXAEANCU/CBJAKJ2BBHTCFrCBATCFZl9zAtJHt86BBAEAGJREAKCFJHKAM9HQBMMAfCFJRfAIRTAbCFJHbAG9HQBMMABAcAG9sJANCUGJAMAG9sTkUUUBpANANCUGJAMCaJAG9sJAGTkUUUBpMAMCBAIyAcJRcAIQBMC9+RKSFMCBC99AOAIlAGCAAGCA9Ly6yRKMALCU/EBJ8kUUUUBAKM+OmFTa8jUUUUBCoFlHL8kUUUUBC9+RKGXAFCE9uHOCtJAI9LQBCaRKAE2BBHNC/wFZC/gF9HQBANCbZHVCF9LQBALCoBJCgFCUFT+JUUUBpALC84Jha83EBALC8wJha83EBALC8oJha83EBALCAJha83EBALCiJha83EBALCTJha83EBALha83ENALha83EBAEAIJC9wJRcAECFJHNAOJRMGXAF9FQBCQCbAVCF6yRSABRECBRVCBRQCBRfCBRICBRKEXGXAMAcuQBC9+RKSEMGXGXAN2BBHOC/vF9LQBALCoBJAOCIrCa9zAKJCbZCEWJHb8oGIRTAb8oGBRtGXAOCbZHbAS9PQBALAOCa9zAIJCbZCGWJ8oGBAVAbyROAb9FRbGXGXAGCG9HQBABAt87FBABCIJAO87FBABCGJAT87FBSFMAEAtjGBAECNJAOjGBAECIJATjGBMAVAbJRVALCoBJAKCEWJHmAOjGBAmATjGIALAICGWJAOjGBALCoBJAKCFJCbZHKCEWJHTAtjGBATAOjGIAIAbJRIAKCFJRKSGMGXGXAbCb6QBAQAbJAbC989zJCFJRQSFMAM1BBHbCgFZROGXGXAbCa9MQBAMCFJRMSFMAM1BFHbCgBZCOWAOCgBZqROGXAbCa9MQBAMCGJRMSFMAM1BGHbCgBZCfWAOqROGXAbCa9MQBAMCEJRMSFMAM1BEHbCgBZCdWAOqROGXAbCa9MQBAMCIJRMSFMAM2BIC8cWAOqROAMCLJRMMAOCFrCBAOCFZl9zAQJRQMGXGXAGCG9HQBABAt87FBABCIJAQ87FBABCGJAT87FBSFMAEAtjGBAECNJAQjGBAECIJATjGBMALCoBJAKCEWJHOAQjGBAOATjGIALAICGWJAQjGBALCoBJAKCFJCbZHKCEWJHOAtjGBAOAQjGIAICFJRIAKCFJRKSFMGXAOCDF9LQBALAIAcAOCbZJ2BBHbCIrHTlCbZCGWJ8oGBAVCFJHtATyROALAIAblCbZCGWJ8oGBAtAT9FHmJHtAbCbZHTyRbAT9FRTGXGXAGCG9HQBABAV87FBABCIJAb87FBABCGJAO87FBSFMAEAVjGBAECNJAbjGBAECIJAOjGBMALAICGWJAVjGBALCoBJAKCEWJHYAOjGBAYAVjGIALAICFJHICbZCGWJAOjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAIAmJCbZHICGWJAbjGBALCoBJAKCGJCbZHKCEWJHOAVjGBAOAbjGIAKCFJRKAIATJRIAtATJRVSFMAVCBAM2BBHYyHTAOC/+F6HPJROAYCbZRtGXGXAYCIrHmQBAOCFJRbSFMAORbALAIAmlCbZCGWJ8oGBROMGXGXAtQBAbCFJRVSFMAbRVALAIAYlCbZCGWJ8oGBRbMGXGXAP9FQBAMCFJRYSFMAM1BFHYCgFZRTGXGXAYCa9MQBAMCGJRYSFMAM1BGHYCgBZCOWATCgBZqRTGXAYCa9MQBAMCEJRYSFMAM1BEHYCgBZCfWATqRTGXAYCa9MQBAMCIJRYSFMAM1BIHYCgBZCdWATqRTGXAYCa9MQBAMCLJRYSFMAMCKJRYAM2BLC8cWATqRTMATCFrCBATCFZl9zAQJHQRTMGXGXAmCb6QBAYRPSFMAY1BBHMCgFZROGXGXAMCa9MQBAYCFJRPSFMAY1BFHMCgBZCOWAOCgBZqROGXAMCa9MQBAYCGJRPSFMAY1BGHMCgBZCfWAOqROGXAMCa9MQBAYCEJRPSFMAY1BEHMCgBZCdWAOqROGXAMCa9MQBAYCIJRPSFMAYCLJRPAY2BIC8cWAOqROMAOCFrCBAOCFZl9zAQJHQROMGXGXAtCb6QBAPRMSFMAP1BBHMCgFZRbGXGXAMCa9MQBAPCFJRMSFMAP1BFHMCgBZCOWAbCgBZqRbGXAMCa9MQBAPCGJRMSFMAP1BGHMCgBZCfWAbqRbGXAMCa9MQBAPCEJRMSFMAP1BEHMCgBZCdWAbqRbGXAMCa9MQBAPCIJRMSFMAPCLJRMAP2BIC8cWAbqRbMAbCFrCBAbCFZl9zAQJHQRbMGXGXAGCG9HQBABAT87FBABCIJAb87FBABCGJAO87FBSFMAEATjGBAECNJAbjGBAECIJAOjGBMALCoBJAKCEWJHYAOjGBAYATjGIALAICGWJATjGBALCoBJAKCFJCbZCEWJHYAbjGBAYAOjGIALAICFJHICbZCGWJAOjGBALCoBJAKCGJCbZCEWJHOATjGBAOAbjGIALAIAm9FAmCb6qJHICbZCGWJAbjGBAIAt9FAtCb6qJRIAKCEJRKMANCFJRNABCKJRBAECSJREAKCbZRKAICbZRIAfCEJHfAF9JQBMMCBC99AMAc6yRKMALCoFJ8kUUUUBAKM/tIFGa8jUUUUBCTlRLC9+RKGXAFCLJAI9LQBCaRKAE2BBC/+FZC/QF9HQBALhB83ENAECFJRKAEAIJC98JREGXAF9FQBGXAGCG6QBEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMALCNJAICFZCGWqHGAICGrCBAICFrCFZl9zAG8oGBJHIjGBABAIjGBABCIJRBAFCaJHFQBSGMMEXGXAKAE9JQBC9+bMAK1BBHGCgFZRIGXGXAGCa9MQBAKCFJRKSFMAK1BFHGCgBZCOWAICgBZqRIGXAGCa9MQBAKCGJRKSFMAK1BGHGCgBZCfWAIqRIGXAGCa9MQBAKCEJRKSFMAK1BEHGCgBZCdWAIqRIGXAGCa9MQBAKCIJRKSFMAK2BIC8cWAIqRIAKCLJRKMABAICGrCBAICFrCFZl9zALCNJAICFZCGWqHI8oGBJHG87FBAIAGjGBABCGJRBAFCaJHFQBMMCBC99AKAE6yRKMAKM+lLKFaF99GaG99FaG99GXGXAGCI9HQBAF9FQFEXGXGX9DBBB8/9DBBB+/ABCGJHG1BB+yAB1BBHE+yHI+L+TABCFJHL1BBHK+yHO+L+THN9DBBBB9gHVyAN9DBB/+hANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE86BBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG86BBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG86BBABCIJRBAFCaJHFQBSGMMAF9FQBEXGXGX9DBBB8/9DBBB+/ABCIJHG8uFB+yAB8uFBHE+yHI+L+TABCGJHL8uFBHK+yHO+L+THN9DBBBB9gHVyAN9DB/+g6ANAN+U9DBBBBANAVyHcAc+MHMAECa3yAI+SHIAI+UAcAMAKCa3yAO+SHcAc+U+S+S+R+VHO+U+SHN+L9DBBB9P9d9FQBAN+oRESFMCUUUU94REMAGAE87FBGXGX9DBBB8/9DBBB+/Ac9DBBBB9gyAcAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMALAG87FBGXGX9DBBB8/9DBBB+/AI9DBBBB9gyAIAO+U+SHN+L9DBBB9P9d9FQBAN+oRGSFMCUUUU94RGMABAG87FBABCNJRBAFCaJHFQBMMM/SEIEaE99EaF99GXAF9FQBCBREABRIEXGXGX9D/zI818/AICKJ8uFBHLCEq+y+VHKAI8uFB+y+UHO9DB/+g6+U9DBBB8/9DBBB+/AO9DBBBB9gy+SHN+L9DBBB9P9d9FQBAN+oRVSFMCUUUU94RVMAICIJ8uFBRcAICGJ8uFBRMABALCFJCEZAEqCFWJAV87FBGXGXAKAM+y+UHN9DB/+g6+U9DBBB8/9DBBB+/AN9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRMSFMCUUUU94RMMABALCGJCEZAEqCFWJAM87FBGXGXAKAc+y+UHK9DB/+g6+U9DBBB8/9DBBB+/AK9DBBBB9gy+SHS+L9DBBB9P9d9FQBAS+oRcSFMCUUUU94RcMABALCaJCEZAEqCFWJAc87FBGXGX9DBBU8/AOAO+U+TANAN+U+TAKAK+U+THO9DBBBBAO9DBBBB9gy+R9DB/+g6+U9DBBB8/+SHO+L9DBBB9P9d9FQBAO+oRcSFMCUUUU94RcMABALCEZAEqCFWJAc87FBAICNJRIAECIJREAFCaJHFQBMMM9JBGXAGCGrAF9sHF9FQBEXABAB8oGBHGCNWCN91+yAGCi91CnWCUUU/8EJ+++U84GBABCIJRBAFCaJHFQBMMM9TFEaCBCB8oGUkUUBHFABCEJC98ZJHBjGUkUUBGXGXAB8/BCTWHGuQBCaREABAGlCggEJCTrXBCa6QFMAFREMAEM/lFFFaGXGXAFABqCEZ9FQBABRESFMGXGXAGCT9PQBABRESFMABREEXAEAF8oGBjGBAECIJAFCIJ8oGBjGBAECNJAFCNJ8oGBjGBAECSJAFCSJ8oGBjGBAECTJREAFCTJRFAGC9wJHGCb9LQBMMAGCI9JQBEXAEAF8oGBjGBAFCIJRFAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF2BB86BBAECFJREAFCFJRFAGCaJHGQBMMABMoFFGaGXGXABCEZ9FQBABRESFMAFCgFZC+BwsN9sRIGXGXAGCT9PQBABRESFMABREEXAEAIjGBAECSJAIjGBAECNJAIjGBAECIJAIjGBAECTJREAGC9wJHGCb9LQBMMAGCI9JQBEXAEAIjGBAECIJREAGC98JHGCE9LQBMMGXAG9FQBEXAEAF86BBAECFJREAGCaJHGQBMMABMMMFBCUNMIT9kBB';\nconst wasm_simd =\n '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';\n\n// Uses bulk-memory and simd extensions\nconst detector = new Uint8Array([\n 0, 97, 115, 109, 1, 0, 0, 0, 1, 4, 1, 96, 0, 0, 3, 3, 2, 0, 0, 5, 3, 1, 0, 1, 12, 1, 0, 10, 22, 2,\n 12, 0, 65, 0, 65, 0, 65, 0, 252, 10, 0, 0, 11, 7, 0, 65, 0, 253, 15, 26, 11\n]);\n\n// Used to unpack wasm\nconst wasmpack = new Uint8Array([\n 32, 0, 65, 253, 3, 1, 2, 34, 4, 106, 6, 5, 11, 8, 7, 20, 13, 33, 12, 16, 128, 9, 116, 64, 19, 113,\n 127, 15, 10, 21, 22, 14, 255, 66, 24, 54, 136, 107, 18, 23, 192, 26, 114, 118, 132, 17, 77, 101,\n 130, 144, 27, 87, 131, 44, 45, 74, 156, 154, 70, 167\n]);\n\nconst FILTERS = {\n // legacy index-based enums for glTF\n 0: '',\n 1: 'meshopt_decodeFilterOct',\n 2: 'meshopt_decodeFilterQuat',\n 3: 'meshopt_decodeFilterExp',\n // string-based enums for glTF\n NONE: '',\n OCTAHEDRAL: 'meshopt_decodeFilterOct',\n QUATERNION: 'meshopt_decodeFilterQuat',\n EXPONENTIAL: 'meshopt_decodeFilterExp'\n};\n\nconst DECODERS = {\n // legacy index-based enums for glTF\n 0: 'meshopt_decodeVertexBuffer',\n 1: 'meshopt_decodeIndexBuffer',\n 2: 'meshopt_decodeIndexSequence',\n // string-based enums for glTF\n ATTRIBUTES: 'meshopt_decodeVertexBuffer',\n TRIANGLES: 'meshopt_decodeIndexBuffer',\n INDICES: 'meshopt_decodeIndexSequence'\n};\n\nexport function isMeshoptSupported(): boolean {\n return isWebAssemblySupported;\n}\n\nexport async function meshoptDecodeVertexBuffer(\n target: Uint8Array,\n count: number,\n size: number,\n source: Uint8Array,\n filter: string | number = 'NONE'\n): Promise<void> {\n const instance = await loadWasmInstance();\n decode(\n instance,\n instance.exports.meshopt_decodeVertexBuffer,\n target,\n count,\n size,\n source,\n instance.exports[FILTERS[filter]]\n );\n}\n\nexport async function meshoptDecodeIndexBuffer(\n target: Uint8Array,\n count: number,\n size: number,\n source: Uint8Array\n): Promise<void> {\n const instance = await loadWasmInstance();\n decode(instance, instance.exports.meshopt_decodeIndexBuffer, target, count, size, source);\n}\n\nexport async function meshoptDecodeIndexSequence(\n target: Uint8Array,\n count: number,\n size: number,\n source: Uint8Array\n): Promise<void> {\n const instance = await loadWasmInstance();\n decode(instance, instance.exports.meshopt_decodeIndexSequence, target, count, size, source);\n}\n\n// eslint-disable-next-line max-params\nexport async function meshoptDecodeGltfBuffer(\n target: Uint8Array,\n count: number,\n size: number,\n source: Uint8Array,\n mode: string,\n filter: string | number = 'NONE'\n): Promise<void> {\n const instance = await loadWasmInstance();\n decode(\n instance,\n instance.exports[DECODERS[mode]],\n target,\n count,\n size,\n source,\n instance.exports[FILTERS[filter || 'NONE']]\n );\n}\n\nlet wasmPromise: Promise<WebAssembly.Instance>;\n\nasync function loadWasmInstance(): Promise<WebAssembly.Instance> {\n // eslint-disable-next-line\n if (!wasmPromise) {\n wasmPromise = loadWasmModule();\n }\n return wasmPromise;\n}\n\nasync function loadWasmModule(): Promise<WebAssembly.Instance> {\n let wasm = wasm_base;\n if (WebAssembly.validate(detector)) {\n wasm = wasm_simd;\n\n // eslint-disable-next-line no-console\n console.log('Warning: meshopt_decoder is using experimental SIMD support');\n }\n\n const result = await WebAssembly.instantiate(unpack(wasm), {});\n await (result.instance.exports as any).__wasm_call_ctors();\n return result.instance;\n}\n\nfunction unpack(data) {\n const result = new Uint8Array(data.length);\n for (let i = 0; i < data.length; ++i) {\n const ch = data.charCodeAt(i);\n result[i] = ch > 96 ? ch - 71 : ch > 64 ? ch - 65 : ch > 47 ? ch + 4 : ch > 46 ? 63 : 62;\n }\n let write = 0;\n for (let i = 0; i < data.length; ++i) {\n result[write++] = result[i] < 60 ? wasmpack[result[i]] : (result[i] - 60) * 64 + result[++i];\n }\n return result.buffer.slice(0, write);\n}\n\n// eslint-disable-next-line max-params\nfunction decode(instance, fun, target, count, size, source, filter?) {\n const sbrk = instance.exports.sbrk;\n const count4 = (count + 3) & ~3; // pad for SIMD filter\n const tp = sbrk(count4 * size);\n const sp = sbrk(source.length);\n const heap = new Uint8Array(instance.exports.memory.buffer);\n heap.set(source, sp);\n const res = fun(tp, count, size, sp, source.length);\n if (res === 0 && filter) {\n filter(tp, count4, size);\n }\n target.set(heap.subarray(tp, tp + count * size));\n sbrk(tp - sbrk(0));\n if (res !== 0) {\n throw new Error(`Malformed buffer data: ${res}`);\n }\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"webp.js","names":["WEBP_TEST_IMAGES","lossy","lossless","alpha","animation","WEBP_FEATURES","isWebPSupported","_isWebPSupported","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","features","promises","statuses","_args","wrap","_callee$","_context","prev","next","length","undefined","map","feature","checkWebPFeature","Promise","all","sent","abrupt","every","_","stop","_x","_checkWebPFeature","_callee2","_callee2$","_context2","Image","resolve","reject","img","onload","width","height","onerror","src","concat"],"sources":["../../../src/webp/webp.ts"],"sourcesContent":["const WEBP_TEST_IMAGES = {\n lossy: 'UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA',\n lossless: 'UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==',\n alpha:\n 'UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAARBxAR/Q9ERP8DAABWUDggGAAAABQBAJ0BKgEAAQAAAP4AAA3AAP7mtQAAAA==',\n animation:\n 'UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA'\n};\n\nexport type WebPFeature = 'lossy' | 'lossless' | 'alpha' | 'animation';\n\nconst WEBP_FEATURES: WebPFeature[] = ['lossy', 'lossless', 'alpha', 'animation'];\n\n/**\n * Checks if WebP is supported\n * @param features Array, can include 'lossy', 'lossless', 'alpha' or 'animation'\n */\nexport async function isWebPSupported(features: WebPFeature[] = WEBP_FEATURES): Promise<boolean> {\n const promises = features.map((feature) => checkWebPFeature(feature));\n const statuses = await Promise.all(promises);\n return statuses.every((_) => _);\n}\n\n/**\n * Checks if a specific WebP feature is supported\n * @param feature 'feature' can be one of 'lossy', 'lossless', 'alpha' or 'animation'.\n *\n * Based on Google's official recommended checks\n * @see https://developers.google.com/speed/webp/faq#how_can_i_detect_browser_support_for_webp\n */\nasync function checkWebPFeature(feature: WebPFeature): Promise<boolean> {\n if (typeof Image === 'undefined') {\n return false;\n }\n return await new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img.width > 0 && img.height > 0);\n img.onerror = () => resolve(false);\n img.src = `data:image/webp;base64,${WEBP_TEST_IMAGES[feature]}`;\n });\n}\n"],"mappings":";;;;;;;;;AAAA,IAAMA,gBAAgB,GAAG;EACvBC,KAAK,EAAE,0DAA0D;EACjEC,QAAQ,EAAE,kDAAkD;EAC5DC,KAAK,EACH,kHAAkH;EACpHC,SAAS,EACP;AACJ,CAAC;AAID,IAAMC,aAA4B,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC;AAAC,SAM3DC,eAAeA,CAAA;EAAA,OAAAC,gBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,iBAAA;EAAAA,gBAAA,OAAAG,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAA9B,SAAAC,QAAA;IAAA,IAAAC,QAAA;MAAAC,QAAA;MAAAC,QAAA;MAAAC,KAAA,GAAAT,SAAA;IAAA,OAAAG,YAAA,CAAAD,OAAA,CAAAQ,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAA+BR,QAAuB,GAAAG,KAAA,CAAAM,MAAA,QAAAN,KAAA,QAAAO,SAAA,GAAAP,KAAA,MAAGb,aAAa;UACrEW,QAAQ,GAAGD,QAAQ,CAACW,GAAG,CAAC,UAACC,OAAO;YAAA,OAAKC,gBAAgB,CAACD,OAAO,CAAC;UAAA,EAAC;UAAAN,QAAA,CAAAE,IAAA;UAAA,OAC9CM,OAAO,CAACC,GAAG,CAACd,QAAQ,CAAC;QAAA;UAAtCC,QAAQ,GAAAI,QAAA,CAAAU,IAAA;UAAA,OAAAV,QAAA,CAAAW,MAAA,WACPf,QAAQ,CAACgB,KAAK,CAAC,UAACC,CAAC;YAAA,OAAKA,CAAC;UAAA,EAAC;QAAA;QAAA;UAAA,OAAAb,QAAA,CAAAc,IAAA;MAAA;IAAA,GAAArB,OAAA;EAAA,CAChC;EAAA,OAAAP,gBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAScmB,gBAAgBA,CAAAQ,EAAA;EAAA,OAAAC,iBAAA,CAAA7B,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAA4B,kBAAA;EAAAA,iBAAA,OAAA3B,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAA/B,SAAAyB,SAAgCX,OAAoB;IAAA,OAAAf,YAAA,CAAAD,OAAA,CAAAQ,IAAA,UAAAoB,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAlB,IAAA,GAAAkB,SAAA,CAAAjB,IAAA;QAAA;UAAA,MAC9C,OAAOkB,KAAK,KAAK,WAAW;YAAAD,SAAA,CAAAjB,IAAA;YAAA;UAAA;UAAA,OAAAiB,SAAA,CAAAR,MAAA,WACvB,KAAK;QAAA;UAAAQ,SAAA,CAAAjB,IAAA;UAAA,OAED,IAAIM,OAAO,CAAC,UAACa,OAAO,EAAEC,MAAM,EAAK;YAC5C,IAAMC,GAAG,GAAG,IAAIH,KAAK,EAAE;YACvBG,GAAG,CAACC,MAAM,GAAG;cAAA,OAAMH,OAAO,CAACE,GAAG,CAACE,KAAK,GAAG,CAAC,IAAIF,GAAG,CAACG,MAAM,GAAG,CAAC,CAAC;YAAA;YAC3DH,GAAG,CAACI,OAAO,GAAG;cAAA,OAAMN,OAAO,CAAC,KAAK,CAAC;YAAA;YAClCE,GAAG,CAACK,GAAG,6BAAAC,MAAA,CAA6BlD,gBAAgB,CAAC2B,OAAO,CAAC,CAAE;UACjE,CAAC,CAAC;QAAA;UAAA,OAAAa,SAAA,CAAAR,MAAA,WAAAQ,SAAA,CAAAT,IAAA;QAAA;QAAA;UAAA,OAAAS,SAAA,CAAAL,IAAA;MAAA;IAAA,GAAAG,QAAA;EAAA,CACH;EAAA,OAAAD,iBAAA,CAAA7B,KAAA,OAAAC,SAAA;AAAA"}
1
+ {"version":3,"file":"webp.js","names":["WEBP_TEST_IMAGES","lossy","lossless","alpha","animation","WEBP_FEATURES","isWebPSupported","_isWebPSupported","apply","arguments","_asyncToGenerator2","default","_regenerator","mark","_callee","features","promises","statuses","_args","wrap","_callee$","_context","prev","next","length","undefined","map","feature","checkWebPFeature","Promise","all","sent","abrupt","every","_","stop","_x","_checkWebPFeature","_callee2","_callee2$","_context2","Image","resolve","reject","img","onload","width","height","onerror","src","concat"],"sources":["../../../src/webp/webp.ts"],"sourcesContent":["const WEBP_TEST_IMAGES = {\n lossy: 'UklGRiIAAABXRUJQVlA4IBYAAAAwAQCdASoBAAEADsD+JaQAA3AAAAAA',\n lossless: 'UklGRhoAAABXRUJQVlA4TA0AAAAvAAAAEAcQERGIiP4HAA==',\n alpha:\n 'UklGRkoAAABXRUJQVlA4WAoAAAAQAAAAAAAAAAAAQUxQSAwAAAARBxAR/Q9ERP8DAABWUDggGAAAABQBAJ0BKgEAAQAAAP4AAA3AAP7mtQAAAA==',\n animation:\n 'UklGRlIAAABXRUJQVlA4WAoAAAASAAAAAAAAAAAAQU5JTQYAAAD/////AABBTk1GJgAAAAAAAAAAAAAAAAAAAGQAAABWUDhMDQAAAC8AAAAQBxAREYiI/gcA'\n};\n\nexport type WebPFeature = 'lossy' | 'lossless' | 'alpha' | 'animation';\n\nconst WEBP_FEATURES: WebPFeature[] = ['lossy', 'lossless', 'alpha', 'animation'];\n\n/**\n * Checks if WebP is supported\n * @param features Array, can include 'lossy', 'lossless', 'alpha' or 'animation'\n */\nexport async function isWebPSupported(features: WebPFeature[] = WEBP_FEATURES): Promise<boolean> {\n const promises = features.map((feature) => checkWebPFeature(feature));\n const statuses = await Promise.all(promises);\n return statuses.every((_) => _);\n}\n\n/**\n * Checks if a specific WebP feature is supported\n * @param feature 'feature' can be one of 'lossy', 'lossless', 'alpha' or 'animation'.\n *\n * Based on Google's official recommended checks\n * @see https://developers.google.com/speed/webp/faq#how_can_i_detect_browser_support_for_webp\n */\nasync function checkWebPFeature(feature: WebPFeature): Promise<boolean> {\n if (typeof Image === 'undefined') {\n return false;\n }\n return await new Promise((resolve, reject) => {\n const img = new Image();\n img.onload = () => resolve(img.width > 0 && img.height > 0);\n img.onerror = () => resolve(false);\n img.src = `data:image/webp;base64,${WEBP_TEST_IMAGES[feature]}`;\n });\n}\n"],"mappings":";;;;;;;;;AAAA,IAAMA,gBAAgB,GAAG;EACvBC,KAAK,EAAE,0DAA0D;EACjEC,QAAQ,EAAE,kDAAkD;EAC5DC,KAAK,EACH,kHAAkH;EACpHC,SAAS,EACP;AACJ,CAAC;AAID,IAAMC,aAA4B,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC;AAAC,SAM3DC,eAAeA,CAAA;EAAA,OAAAC,gBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAAF,iBAAA;EAAAA,gBAAA,OAAAG,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAA9B,SAAAC,QAAA;IAAA,IAAAC,QAAA;MAAAC,QAAA;MAAAC,QAAA;MAAAC,KAAA,GAAAT,SAAA;IAAA,OAAAG,YAAA,CAAAD,OAAA,CAAAQ,IAAA,UAAAC,SAAAC,QAAA;MAAA,kBAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;QAAA;UAA+BR,QAAuB,GAAAG,KAAA,CAAAM,MAAA,QAAAN,KAAA,QAAAO,SAAA,GAAAP,KAAA,MAAGb,aAAa;UACrEW,QAAQ,GAAGD,QAAQ,CAACW,GAAG,CAAC,UAACC,OAAO;YAAA,OAAKC,gBAAgB,CAACD,OAAO,CAAC;UAAA,EAAC;UAAAN,QAAA,CAAAE,IAAA;UAAA,OAC9CM,OAAO,CAACC,GAAG,CAACd,QAAQ,CAAC;QAAA;UAAtCC,QAAQ,GAAAI,QAAA,CAAAU,IAAA;UAAA,OAAAV,QAAA,CAAAW,MAAA,WACPf,QAAQ,CAACgB,KAAK,CAAC,UAACC,CAAC;YAAA,OAAKA,CAAC;UAAA,EAAC;QAAA;QAAA;UAAA,OAAAb,QAAA,CAAAc,IAAA;MAAA;IAAA,GAAArB,OAAA;EAAA,CAChC;EAAA,OAAAP,gBAAA,CAAAC,KAAA,OAAAC,SAAA;AAAA;AAAA,SAScmB,gBAAgBA,CAAAQ,EAAA;EAAA,OAAAC,iBAAA,CAAA7B,KAAA,OAAAC,SAAA;AAAA;AAAA,SAAA4B,kBAAA;EAAAA,iBAAA,OAAA3B,kBAAA,CAAAC,OAAA,EAAAC,YAAA,CAAAD,OAAA,CAAAE,IAAA,CAA/B,SAAAyB,SAAgCX,OAAoB;IAAA,OAAAf,YAAA,CAAAD,OAAA,CAAAQ,IAAA,UAAAoB,UAAAC,SAAA;MAAA,kBAAAA,SAAA,CAAAlB,IAAA,GAAAkB,SAAA,CAAAjB,IAAA;QAAA;UAAA,MAC9C,OAAOkB,KAAK,KAAK,WAAW;YAAAD,SAAA,CAAAjB,IAAA;YAAA;UAAA;UAAA,OAAAiB,SAAA,CAAAR,MAAA,WACvB,KAAK;QAAA;UAAAQ,SAAA,CAAAjB,IAAA;UAAA,OAED,IAAIM,OAAO,CAAC,UAACa,OAAO,EAAEC,MAAM,EAAK;YAC5C,IAAMC,GAAG,GAAG,IAAIH,KAAK,CAAC,CAAC;YACvBG,GAAG,CAACC,MAAM,GAAG;cAAA,OAAMH,OAAO,CAACE,GAAG,CAACE,KAAK,GAAG,CAAC,IAAIF,GAAG,CAACG,MAAM,GAAG,CAAC,CAAC;YAAA;YAC3DH,GAAG,CAACI,OAAO,GAAG;cAAA,OAAMN,OAAO,CAAC,KAAK,CAAC;YAAA;YAClCE,GAAG,CAACK,GAAG,6BAAAC,MAAA,CAA6BlD,gBAAgB,CAAC2B,OAAO,CAAC,CAAE;UACjE,CAAC,CAAC;QAAA;UAAA,OAAAa,SAAA,CAAAR,MAAA,WAAAQ,SAAA,CAAAT,IAAA;QAAA;QAAA;UAAA,OAAAS,SAAA,CAAAL,IAAA;MAAA;IAAA,GAAAG,QAAA;EAAA,CACH;EAAA,OAAAD,iBAAA,CAAA7B,KAAA,OAAAC,SAAA;AAAA"}
package/dist/esm/index.js CHANGED
@@ -4,4 +4,5 @@ export { GLBLoader } from './glb-loader';
4
4
  export { GLBWriter } from './glb-writer';
5
5
  export { default as GLTFScenegraph } from './lib/api/gltf-scenegraph';
6
6
  export { postProcessGLTF } from './lib/api/post-process-gltf';
7
+ export { getMemoryUsageGLTF as _getMemoryUsageGLTF } from './lib/gltf-utils/gltf-utils';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["GLTFLoader","GLTFWriter","GLBLoader","GLBWriter","default","GLTFScenegraph","postProcessGLTF"],"sources":["../../src/index.ts"],"sourcesContent":["/* eslint-disable camelcase, indent */\nexport type {GLB} from './lib/types/glb-types';\nexport type {\n GLTF,\n GLTFAccessor,\n GLTFBuffer,\n GLTFBufferView,\n GLTFMeshPrimitive,\n GLTFMesh,\n GLTFNode,\n GLTFMaterial,\n GLTFSampler,\n GLTFScene,\n GLTFSkin,\n GLTFTexture,\n GLTFImage,\n GLTFPostprocessed,\n GLTFAccessorPostprocessed,\n GLTFNodePostprocessed,\n GLTFMaterialPostprocessed,\n GLTFMeshPostprocessed,\n GLTFMeshPrimitivePostprocessed,\n GLTFImagePostprocessed,\n GLTFTexturePostprocessed,\n // The following extensions are handled by the GLTFLoader and removed from the parsed glTF (disable via options.gltf.excludeExtensions)\n GLTF_KHR_binary_glTF,\n GLTF_KHR_draco_mesh_compression,\n GLTF_KHR_texture_basisu,\n GLTF_EXT_meshopt_compression,\n GLTF_EXT_texture_webp,\n GLTF_EXT_feature_metadata\n} from './lib/types/gltf-types';\n\n// glTF loader/writer definition objects\nexport {GLTFLoader} from './gltf-loader';\nexport {GLTFWriter} from './gltf-writer';\n\n// GLB Loader & Writer (for custom formats that want to leverage the GLB binary \"envelope\")\nexport {GLBLoader} from './glb-loader';\nexport {GLBWriter} from './glb-writer';\n\n// glTF Data Access Helper Class\nexport {default as GLTFScenegraph} from './lib/api/gltf-scenegraph';\nexport {postProcessGLTF} from './lib/api/post-process-gltf';\nexport type {Mesh} from './lib/types/gltf-json-schema';\nexport type {GLTFObject} from './lib/types/gltf-types';\nexport type {Node, Accessor, Image} from './lib/types/gltf-postprocessed-schema';\n"],"mappings":"AAkCA,SAAQA,UAAU,QAAO,eAAe;AACxC,SAAQC,UAAU,QAAO,eAAe;AAGxC,SAAQC,SAAS,QAAO,cAAc;AACtC,SAAQC,SAAS,QAAO,cAAc;AAGtC,SAAQC,OAAO,IAAIC,cAAc,QAAO,2BAA2B;AACnE,SAAQC,eAAe,QAAO,6BAA6B"}
1
+ {"version":3,"file":"index.js","names":["GLTFLoader","GLTFWriter","GLBLoader","GLBWriter","default","GLTFScenegraph","postProcessGLTF","getMemoryUsageGLTF","_getMemoryUsageGLTF"],"sources":["../../src/index.ts"],"sourcesContent":["/* eslint-disable camelcase, indent */\nexport type {GLB} from './lib/types/glb-types';\nexport type {\n GLTF,\n GLTFAccessor,\n GLTFBuffer,\n GLTFBufferView,\n GLTFMeshPrimitive,\n GLTFMesh,\n GLTFNode,\n GLTFMaterial,\n GLTFSampler,\n GLTFScene,\n GLTFSkin,\n GLTFTexture,\n GLTFImage,\n GLTFPostprocessed,\n GLTFAccessorPostprocessed,\n GLTFNodePostprocessed,\n GLTFMaterialPostprocessed,\n GLTFMeshPostprocessed,\n GLTFMeshPrimitivePostprocessed,\n GLTFImagePostprocessed,\n GLTFTexturePostprocessed,\n // The following extensions are handled by the GLTFLoader and removed from the parsed glTF (disable via options.gltf.excludeExtensions)\n GLTF_KHR_binary_glTF,\n GLTF_KHR_draco_mesh_compression,\n GLTF_KHR_texture_basisu,\n GLTF_EXT_meshopt_compression,\n GLTF_EXT_texture_webp,\n GLTF_EXT_feature_metadata\n} from './lib/types/gltf-types';\n\n// glTF loader/writer definition objects\nexport {GLTFLoader} from './gltf-loader';\nexport {GLTFWriter} from './gltf-writer';\n\n// GLB Loader & Writer (for custom formats that want to leverage the GLB binary \"envelope\")\nexport {GLBLoader} from './glb-loader';\nexport {GLBWriter} from './glb-writer';\n\n// glTF Data Access Helper Class\nexport {default as GLTFScenegraph} from './lib/api/gltf-scenegraph';\nexport {postProcessGLTF} from './lib/api/post-process-gltf';\nexport {getMemoryUsageGLTF as _getMemoryUsageGLTF} from './lib/gltf-utils/gltf-utils';\nexport type {Mesh} from './lib/types/gltf-json-schema';\nexport type {GLTFObject} from './lib/types/gltf-types';\nexport type {Node, Accessor, Image} from './lib/types/gltf-postprocessed-schema';\n"],"mappings":"AAkCA,SAAQA,UAAU,QAAO,eAAe;AACxC,SAAQC,UAAU,QAAO,eAAe;AAGxC,SAAQC,SAAS,QAAO,cAAc;AACtC,SAAQC,SAAS,QAAO,cAAc;AAGtC,SAAQC,OAAO,IAAIC,cAAc,QAAO,2BAA2B;AACnE,SAAQC,eAAe,QAAO,6BAA6B;AAC3D,SAAQC,kBAAkB,IAAIC,mBAAmB,QAAO,6BAA6B"}