@needle-tools/three 0.162.12 → 0.169.2

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 (635) hide show
  1. package/README.md +3 -3
  2. package/build/three.cjs +29789 -1941
  3. package/build/three.module.js +29095 -1933
  4. package/build/three.module.min.js +2 -2
  5. package/build/three.webgpu.js +80003 -0
  6. package/build/three.webgpu.min.js +6 -0
  7. package/build/three.webgpu.nodes.js +79951 -0
  8. package/build/three.webgpu.nodes.min.js +6 -0
  9. package/examples/jsm/Addons.js +2 -5
  10. package/examples/jsm/animation/AnimationClipCreator.js +1 -1
  11. package/examples/jsm/animation/CCDIKSolver.js +4 -2
  12. package/examples/jsm/capabilities/WebGL.js +27 -21
  13. package/examples/jsm/controls/ArcballControls.js +174 -158
  14. package/examples/jsm/controls/DragControls.js +260 -132
  15. package/examples/jsm/controls/FirstPersonControls.js +175 -163
  16. package/examples/jsm/controls/FlyControls.js +194 -188
  17. package/examples/jsm/controls/OrbitControls.js +790 -797
  18. package/examples/jsm/controls/PointerLockControls.js +24 -15
  19. package/examples/jsm/controls/TrackballControls.js +469 -448
  20. package/examples/jsm/controls/TransformControls.js +98 -63
  21. package/examples/jsm/csm/CSMShader.js +4 -4
  22. package/examples/jsm/effects/AnaglyphEffect.js +6 -13
  23. package/examples/jsm/effects/ParallaxBarrierEffect.js +17 -11
  24. package/examples/jsm/effects/StereoEffect.js +6 -1
  25. package/examples/jsm/environments/RoomEnvironment.js +2 -6
  26. package/examples/jsm/exporters/DRACOExporter.js +4 -2
  27. package/examples/jsm/exporters/EXRExporter.js +19 -11
  28. package/examples/jsm/exporters/GLTFExporter.js +77 -8
  29. package/examples/jsm/exporters/KTX2Exporter.js +21 -13
  30. package/examples/jsm/exporters/OBJExporter.js +5 -1
  31. package/examples/jsm/exporters/PLYExporter.js +9 -7
  32. package/examples/jsm/exporters/USDZExporter.js +55 -11
  33. package/examples/jsm/geometries/DecalGeometry.js +4 -1
  34. package/examples/jsm/geometries/InstancedPointsGeometry.js +1 -1
  35. package/examples/jsm/geometries/TeapotGeometry.js +1 -1
  36. package/examples/jsm/geometries/TextGeometry.js +10 -2
  37. package/examples/jsm/helpers/LightProbeHelper.js +43 -44
  38. package/examples/jsm/helpers/LightProbeHelperGPU.js +65 -0
  39. package/examples/jsm/helpers/ViewHelper.js +75 -61
  40. package/examples/jsm/interactive/HTMLMesh.js +7 -9
  41. package/examples/jsm/libs/basis/basis_transcoder.js +8 -10
  42. package/examples/jsm/libs/basis/basis_transcoder.wasm +0 -0
  43. package/examples/jsm/libs/draco/README.md +2 -2
  44. package/examples/jsm/libs/fflate.module.js +694 -496
  45. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  46. package/examples/jsm/lights/LightProbeGenerator.js +24 -10
  47. package/examples/jsm/lights/RectAreaLightTexturesLib.js +91 -0
  48. package/examples/jsm/lights/RectAreaLightUniformsLib.js +8 -63
  49. package/examples/jsm/lines/LineMaterial.js +1 -17
  50. package/examples/jsm/lines/LineSegments2.js +15 -0
  51. package/examples/jsm/lines/Wireframe.js +16 -1
  52. package/examples/jsm/lines/webgpu/Line2.js +20 -0
  53. package/examples/jsm/lines/webgpu/LineSegments2.js +376 -0
  54. package/examples/jsm/loaders/3MFLoader.js +2 -0
  55. package/examples/jsm/loaders/ColladaLoader.js +9 -6
  56. package/examples/jsm/loaders/DRACOLoader.js +4 -2
  57. package/examples/jsm/loaders/EXRLoader.js +351 -97
  58. package/examples/jsm/loaders/FBXLoader.js +77 -78
  59. package/examples/jsm/loaders/GLTFLoader.js +76 -14
  60. package/examples/jsm/loaders/KTX2Loader.js +30 -22
  61. package/examples/jsm/loaders/LDrawLoader.js +3 -2
  62. package/examples/jsm/loaders/LUT3dlLoader.js +0 -15
  63. package/examples/jsm/loaders/LUTCubeLoader.js +0 -14
  64. package/examples/jsm/loaders/LUTImageLoader.js +0 -14
  65. package/examples/jsm/loaders/MMDLoader.js +31 -12
  66. package/examples/jsm/loaders/MTLLoader.js +4 -3
  67. package/examples/jsm/loaders/MaterialXLoader.js +45 -21
  68. package/examples/jsm/loaders/OBJLoader.js +5 -3
  69. package/examples/jsm/loaders/PCDLoader.js +14 -13
  70. package/examples/jsm/loaders/PDBLoader.js +3 -2
  71. package/examples/jsm/loaders/PLYLoader.js +8 -5
  72. package/examples/jsm/loaders/RGBMLoader.js +16 -0
  73. package/examples/jsm/loaders/STLLoader.js +3 -2
  74. package/examples/jsm/loaders/USDZLoader.js +124 -76
  75. package/examples/jsm/loaders/UltraHDRLoader.js +583 -0
  76. package/examples/jsm/loaders/VRMLLoader.js +11 -11
  77. package/examples/jsm/loaders/VTKLoader.js +80 -6
  78. package/examples/jsm/loaders/XYZLoader.js +3 -2
  79. package/examples/jsm/loaders/lwo/IFFParser.js +8 -5
  80. package/examples/jsm/materials/MeshGouraudMaterial.js +7 -1
  81. package/examples/jsm/math/Octree.js +26 -20
  82. package/examples/jsm/misc/GPUComputationRenderer.js +9 -25
  83. package/examples/jsm/misc/Timer.js +1 -1
  84. package/examples/jsm/modifiers/CurveModifier.js +11 -9
  85. package/examples/jsm/modifiers/CurveModifierGPU.js +233 -0
  86. package/examples/jsm/modifiers/SimplifyModifier.js +2 -1
  87. package/examples/jsm/objects/InstancedPoints.js +2 -2
  88. package/examples/jsm/objects/Lensflare.js +2 -2
  89. package/examples/jsm/objects/LensflareMesh.js +322 -0
  90. package/examples/jsm/objects/SkyMesh.js +187 -0
  91. package/examples/jsm/objects/Water2Mesh.js +158 -0
  92. package/examples/jsm/objects/WaterMesh.js +101 -0
  93. package/examples/jsm/physics/JoltPhysics.js +281 -0
  94. package/examples/jsm/physics/RapierPhysics.js +25 -5
  95. package/examples/jsm/postprocessing/GlitchPass.js +0 -3
  96. package/examples/jsm/postprocessing/LUTPass.js +5 -71
  97. package/examples/jsm/postprocessing/OutlinePass.js +31 -46
  98. package/examples/jsm/postprocessing/RenderPass.js +1 -1
  99. package/examples/jsm/postprocessing/RenderTransitionPass.js +168 -0
  100. package/examples/jsm/postprocessing/SAOPass.js +0 -1
  101. package/examples/jsm/postprocessing/SSAARenderPass.js +3 -1
  102. package/examples/jsm/postprocessing/SSAOPass.js +6 -12
  103. package/examples/jsm/postprocessing/UnrealBloomPass.js +4 -4
  104. package/examples/jsm/renderers/CSS2DRenderer.js +25 -5
  105. package/examples/jsm/renderers/CSS3DRenderer.js +24 -3
  106. package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +1 -3
  107. package/examples/jsm/renderers/webgl-legacy/nodes/SlotNode.js +1 -1
  108. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodeBuilder.js +7 -4
  109. package/examples/jsm/renderers/webgl-legacy/nodes/WebGLNodes.js +19 -5
  110. package/examples/jsm/shaders/BleachBypassShader.js +1 -2
  111. package/examples/jsm/shaders/ColorifyShader.js +1 -2
  112. package/examples/jsm/shaders/FXAAShader.js +0 -2
  113. package/examples/jsm/shaders/GTAOShader.js +1 -1
  114. package/examples/jsm/shaders/LuminosityHighPassShader.js +1 -3
  115. package/examples/jsm/shaders/OutputShader.js +1 -1
  116. package/examples/jsm/transpiler/GLSLDecoder.js +47 -5
  117. package/examples/jsm/transpiler/ShaderToyDecoder.js +2 -2
  118. package/examples/jsm/transpiler/TSLEncoder.js +24 -22
  119. package/examples/jsm/utils/BufferGeometryUtils.js +18 -16
  120. package/examples/jsm/utils/GeometryCompressionUtils.js +37 -122
  121. package/examples/jsm/utils/SceneUtils.js +60 -1
  122. package/examples/jsm/utils/ShadowMapViewer.js +3 -8
  123. package/examples/jsm/utils/ShadowMapViewerGPU.js +201 -0
  124. package/examples/jsm/utils/SkeletonUtils.js +84 -66
  125. package/examples/jsm/utils/SortUtils.js +8 -5
  126. package/examples/jsm/utils/TextureUtils.js +3 -2
  127. package/examples/jsm/utils/TextureUtilsGPU.js +63 -0
  128. package/examples/jsm/webxr/OculusHandModel.js +3 -2
  129. package/examples/jsm/webxr/XRControllerModelFactory.js +1 -1
  130. package/examples/jsm/webxr/XRHandModelFactory.js +4 -2
  131. package/package.json +11 -8
  132. package/src/Three.WebGPU.Nodes.js +200 -0
  133. package/src/Three.WebGPU.js +201 -0
  134. package/src/Three.js +23 -1
  135. package/src/animation/AnimationClip.js +1 -1
  136. package/src/animation/tracks/BooleanKeyframeTrack.js +10 -1
  137. package/src/animation/tracks/QuaternionKeyframeTrack.js +1 -2
  138. package/src/animation/tracks/StringKeyframeTrack.js +10 -1
  139. package/src/audio/Audio.js +2 -2
  140. package/src/constants.js +6 -7
  141. package/src/core/BufferAttribute.js +0 -9
  142. package/src/core/Clock.js +1 -1
  143. package/src/core/InterleavedBuffer.js +0 -9
  144. package/src/core/Object3D.js +34 -29
  145. package/src/core/Raycaster.js +6 -2
  146. package/src/core/RenderTarget.js +8 -0
  147. package/src/extras/Controls.js +32 -0
  148. package/src/extras/PMREMGenerator.js +12 -11
  149. package/src/extras/TextureUtils.js +210 -0
  150. package/src/geometries/CylinderGeometry.js +11 -4
  151. package/src/lights/Light.js +1 -0
  152. package/src/lights/LightShadow.js +5 -0
  153. package/{examples/jsm/lights → src/lights/webgpu}/IESSpotLight.js +1 -1
  154. package/src/loaders/FileLoader.js +5 -1
  155. package/src/loaders/LoaderUtils.js +3 -1
  156. package/src/loaders/MaterialLoader.js +8 -1
  157. package/src/loaders/ObjectLoader.js +36 -2
  158. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeLoader.js +27 -5
  159. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeMaterialLoader.js +22 -18
  160. package/{examples/jsm/nodes/loaders → src/loaders/nodes}/NodeObjectLoader.js +21 -1
  161. package/src/materials/Material.js +4 -0
  162. package/src/materials/MeshPhysicalMaterial.js +20 -0
  163. package/src/materials/ShaderMaterial.js +0 -4
  164. package/src/materials/nodes/InstancedPointsNodeMaterial.js +156 -0
  165. package/{examples/jsm/nodes/materials → src/materials/nodes}/Line2NodeMaterial.js +69 -68
  166. package/src/materials/nodes/LineBasicNodeMaterial.js +31 -0
  167. package/{examples/jsm/nodes/materials → src/materials/nodes}/LineDashedNodeMaterial.js +15 -12
  168. package/src/materials/nodes/MeshBasicNodeMaterial.js +77 -0
  169. package/src/materials/nodes/MeshLambertNodeMaterial.js +47 -0
  170. package/src/materials/nodes/MeshMatcapNodeMaterial.js +57 -0
  171. package/src/materials/nodes/MeshNormalNodeMaterial.js +44 -0
  172. package/src/materials/nodes/MeshPhongNodeMaterial.js +78 -0
  173. package/src/materials/nodes/MeshPhysicalNodeMaterial.js +248 -0
  174. package/{examples/jsm/nodes/materials → src/materials/nodes}/MeshSSSNodeMaterial.js +10 -7
  175. package/src/materials/nodes/MeshStandardNodeMaterial.js +108 -0
  176. package/src/materials/nodes/MeshToonNodeMaterial.js +38 -0
  177. package/{examples/jsm/nodes/materials → src/materials/nodes}/NodeMaterial.js +198 -157
  178. package/{examples/jsm/nodes/materials/Materials.js → src/materials/nodes/NodeMaterials.js} +7 -1
  179. package/{examples/jsm/nodes/materials → src/materials/nodes}/PointsNodeMaterial.js +10 -7
  180. package/src/materials/nodes/ShadowNodeMaterial.js +38 -0
  181. package/src/materials/nodes/SpriteNodeMaterial.js +123 -0
  182. package/src/materials/nodes/VolumeNodeMaterial.js +108 -0
  183. package/src/materials/nodes/manager/NodeMaterialObserver.js +302 -0
  184. package/src/math/Box2.js +4 -4
  185. package/src/math/Box3.js +6 -6
  186. package/src/math/ColorManagement.js +10 -0
  187. package/src/math/Matrix2.js +54 -0
  188. package/src/math/Spherical.js +4 -5
  189. package/src/math/Triangle.js +24 -0
  190. package/src/math/Vector4.js +13 -0
  191. package/src/nodes/Nodes.js +164 -0
  192. package/src/nodes/TSL.js +179 -0
  193. package/src/nodes/accessors/AccessorsUtils.js +25 -0
  194. package/src/nodes/accessors/BatchNode.js +128 -0
  195. package/src/nodes/accessors/Bitangent.js +13 -0
  196. package/{examples/jsm → src}/nodes/accessors/BufferAttributeNode.js +44 -6
  197. package/{examples/jsm → src}/nodes/accessors/BufferNode.js +13 -4
  198. package/src/nodes/accessors/Camera.js +13 -0
  199. package/{examples/jsm → src}/nodes/accessors/ClippingNode.js +22 -15
  200. package/src/nodes/accessors/CubeTextureNode.js +79 -0
  201. package/src/nodes/accessors/InstanceNode.js +144 -0
  202. package/src/nodes/accessors/InstancedPointsMaterialNode.js +24 -0
  203. package/src/nodes/accessors/Lights.js +51 -0
  204. package/src/nodes/accessors/MaterialNode.js +441 -0
  205. package/src/nodes/accessors/MaterialProperties.js +3 -0
  206. package/{examples/jsm → src}/nodes/accessors/MaterialReferenceNode.js +10 -5
  207. package/src/nodes/accessors/ModelNode.js +72 -0
  208. package/src/nodes/accessors/ModelViewProjectionNode.js +42 -0
  209. package/{examples/jsm → src}/nodes/accessors/MorphNode.js +51 -33
  210. package/src/nodes/accessors/Normal.js +88 -0
  211. package/{examples/jsm → src}/nodes/accessors/Object3DNode.js +18 -34
  212. package/src/nodes/accessors/PointUVNode.js +30 -0
  213. package/src/nodes/accessors/Position.js +10 -0
  214. package/src/nodes/accessors/ReferenceBaseNode.js +171 -0
  215. package/{examples/jsm → src}/nodes/accessors/ReferenceNode.js +58 -9
  216. package/src/nodes/accessors/ReflectVector.js +10 -0
  217. package/src/nodes/accessors/RendererReferenceNode.js +35 -0
  218. package/{examples/jsm → src}/nodes/accessors/SceneNode.js +9 -6
  219. package/src/nodes/accessors/SkinningNode.js +191 -0
  220. package/src/nodes/accessors/StorageBufferNode.js +147 -0
  221. package/{examples/jsm/nodes/accessors/TextureStoreNode.js → src/nodes/accessors/StorageTextureNode.js} +35 -10
  222. package/src/nodes/accessors/Tangent.js +22 -0
  223. package/src/nodes/accessors/Texture3DNode.js +103 -0
  224. package/{examples/jsm/nodes/accessors/TextureBicubicNode.js → src/nodes/accessors/TextureBicubic.js} +3 -32
  225. package/{examples/jsm → src}/nodes/accessors/TextureNode.js +123 -39
  226. package/src/nodes/accessors/TextureSizeNode.js +36 -0
  227. package/src/nodes/accessors/UV.js +3 -0
  228. package/{examples/jsm/nodes/accessors/UniformsNode.js → src/nodes/accessors/UniformArrayNode.js} +33 -15
  229. package/{examples/jsm → src}/nodes/accessors/UserDataNode.js +10 -7
  230. package/src/nodes/accessors/VelocityNode.js +134 -0
  231. package/{examples/jsm → src}/nodes/accessors/VertexColorNode.js +9 -5
  232. package/{examples/jsm → src}/nodes/code/CodeNode.js +9 -5
  233. package/{examples/jsm → src}/nodes/code/ExpressionNode.js +10 -6
  234. package/{examples/jsm → src}/nodes/code/FunctionCallNode.js +8 -5
  235. package/{examples/jsm → src}/nodes/code/FunctionNode.js +8 -31
  236. package/{examples/jsm → src}/nodes/code/ScriptableNode.js +24 -7
  237. package/{examples/jsm → src}/nodes/code/ScriptableValueNode.js +11 -8
  238. package/{examples/jsm → src}/nodes/core/AssignNode.js +12 -9
  239. package/{examples/jsm → src}/nodes/core/AttributeNode.js +29 -12
  240. package/{examples/jsm → src}/nodes/core/BypassNode.js +11 -7
  241. package/src/nodes/core/CacheNode.js +50 -0
  242. package/{examples/jsm → src}/nodes/core/ConstNode.js +6 -3
  243. package/{examples/jsm → src}/nodes/core/ContextNode.js +27 -11
  244. package/src/nodes/core/IndexNode.js +99 -0
  245. package/{examples/jsm → src}/nodes/core/InputNode.js +7 -3
  246. package/{examples/jsm → src}/nodes/core/LightingModel.js +2 -2
  247. package/src/nodes/core/MRTNode.js +85 -0
  248. package/{examples/jsm → src}/nodes/core/Node.js +114 -57
  249. package/{examples/jsm → src}/nodes/core/NodeBuilder.js +327 -90
  250. package/src/nodes/core/NodeCache.js +36 -0
  251. package/{examples/jsm → src}/nodes/core/NodeFrame.js +52 -10
  252. package/{examples/jsm → src}/nodes/core/NodeFunction.js +2 -2
  253. package/{examples/jsm → src}/nodes/core/NodeUniform.js +1 -2
  254. package/{examples/jsm → src}/nodes/core/NodeUtils.js +56 -8
  255. package/{examples/jsm → src}/nodes/core/OutputStructNode.js +13 -12
  256. package/{examples/jsm → src}/nodes/core/ParameterNode.js +7 -4
  257. package/src/nodes/core/PropertyNode.js +88 -0
  258. package/{examples/jsm → src}/nodes/core/StackNode.js +31 -11
  259. package/{examples/jsm → src}/nodes/core/StructTypeNode.js +7 -3
  260. package/{examples/jsm → src}/nodes/core/TempNode.js +10 -6
  261. package/src/nodes/core/UniformGroupNode.js +59 -0
  262. package/{examples/jsm → src}/nodes/core/UniformNode.js +37 -5
  263. package/{examples/jsm → src}/nodes/core/VarNode.js +14 -14
  264. package/src/nodes/core/VaryingNode.js +108 -0
  265. package/{examples/jsm → src}/nodes/display/AfterImageNode.js +38 -28
  266. package/src/nodes/display/AnaglyphPassNode.js +67 -0
  267. package/{examples/jsm → src}/nodes/display/AnamorphicNode.js +33 -30
  268. package/src/nodes/display/BleachBypass.js +26 -0
  269. package/src/nodes/display/BlendMode.js +54 -0
  270. package/src/nodes/display/BloomNode.js +341 -0
  271. package/{examples/jsm → src}/nodes/display/BumpMapNode.js +20 -38
  272. package/src/nodes/display/ColorAdjustment.js +46 -0
  273. package/src/nodes/display/ColorSpaceFunctions.js +38 -0
  274. package/src/nodes/display/ColorSpaceNode.js +114 -0
  275. package/src/nodes/display/DenoiseNode.js +204 -0
  276. package/src/nodes/display/DepthOfFieldNode.js +124 -0
  277. package/src/nodes/display/DotScreenNode.js +66 -0
  278. package/src/nodes/display/FXAANode.js +332 -0
  279. package/src/nodes/display/FilmNode.js +56 -0
  280. package/src/nodes/display/FrontFacingNode.js +45 -0
  281. package/src/nodes/display/GTAONode.js +331 -0
  282. package/{examples/jsm → src}/nodes/display/GaussianBlurNode.js +47 -24
  283. package/src/nodes/display/Lut3DNode.js +57 -0
  284. package/src/nodes/display/MotionBlur.js +25 -0
  285. package/{examples/jsm → src}/nodes/display/NormalMapNode.js +14 -14
  286. package/src/nodes/display/ParallaxBarrierPassNode.js +58 -0
  287. package/src/nodes/display/PassNode.js +378 -0
  288. package/src/nodes/display/PixelationPassNode.js +213 -0
  289. package/{examples/jsm → src}/nodes/display/PosterizeNode.js +8 -7
  290. package/src/nodes/display/RGBShiftNode.js +53 -0
  291. package/src/nodes/display/RenderOutputNode.js +60 -0
  292. package/src/nodes/display/SSAAPassNode.js +287 -0
  293. package/src/nodes/display/ScreenNode.js +181 -0
  294. package/src/nodes/display/Sepia.js +17 -0
  295. package/src/nodes/display/SobelOperatorNode.js +126 -0
  296. package/src/nodes/display/StereoCompositePassNode.js +110 -0
  297. package/src/nodes/display/StereoPassNode.js +83 -0
  298. package/src/nodes/display/ToneMappingFunctions.js +190 -0
  299. package/src/nodes/display/ToneMappingNode.js +67 -0
  300. package/src/nodes/display/ToonOutlinePassNode.js +111 -0
  301. package/src/nodes/display/TransitionNode.js +80 -0
  302. package/src/nodes/display/ViewportDepthNode.js +125 -0
  303. package/src/nodes/display/ViewportDepthTextureNode.js +33 -0
  304. package/src/nodes/display/ViewportSharedTextureNode.js +39 -0
  305. package/{examples/jsm → src}/nodes/display/ViewportTextureNode.js +20 -14
  306. package/src/nodes/fog/FogExp2Node.js +35 -0
  307. package/src/nodes/fog/FogNode.js +50 -0
  308. package/src/nodes/fog/FogRangeNode.js +36 -0
  309. package/src/nodes/functions/BSDF/BRDF_GGX.js +59 -0
  310. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Lambert.js +2 -2
  311. package/{examples/jsm → src}/nodes/functions/BSDF/BRDF_Sheen.js +6 -6
  312. package/{examples/jsm → src}/nodes/functions/BSDF/DFGApprox.js +2 -2
  313. package/{examples/jsm → src}/nodes/functions/BSDF/D_GGX.js +2 -2
  314. package/src/nodes/functions/BSDF/D_GGX_Anisotropic.js +28 -0
  315. package/{examples/jsm → src}/nodes/functions/BSDF/EnvironmentBRDF.js +2 -2
  316. package/{examples/jsm → src}/nodes/functions/BSDF/F_Schlick.js +2 -2
  317. package/src/nodes/functions/BSDF/LTC.js +131 -0
  318. package/{examples/jsm → src}/nodes/functions/BSDF/Schlick_to_F0.js +2 -2
  319. package/{examples/jsm → src}/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +2 -4
  320. package/src/nodes/functions/BSDF/V_GGX_SmithCorrelated_Anisotropic.js +29 -0
  321. package/src/nodes/functions/BasicLightingModel.js +78 -0
  322. package/{examples/jsm → src}/nodes/functions/PhongLightingModel.js +11 -9
  323. package/src/nodes/functions/PhysicalLightingModel.js +633 -0
  324. package/src/nodes/functions/ShadowMaskModel.js +31 -0
  325. package/src/nodes/functions/ToonLightingModel.js +51 -0
  326. package/src/nodes/functions/material/getGeometryRoughness.js +13 -0
  327. package/{examples/jsm → src}/nodes/functions/material/getRoughness.js +2 -2
  328. package/src/nodes/functions/material/getShIrradianceAt.js +28 -0
  329. package/{examples/jsm → src}/nodes/geometry/RangeNode.js +28 -11
  330. package/src/nodes/gpgpu/AtomicFunctionNode.js +99 -0
  331. package/src/nodes/gpgpu/BarrierNode.js +40 -0
  332. package/src/nodes/gpgpu/ComputeBuiltinNode.js +98 -0
  333. package/{examples/jsm → src}/nodes/gpgpu/ComputeNode.js +10 -6
  334. package/src/nodes/gpgpu/WorkgroupInfoNode.js +100 -0
  335. package/src/nodes/lighting/AONode.js +27 -0
  336. package/{examples/jsm → src}/nodes/lighting/AmbientLightNode.js +6 -8
  337. package/src/nodes/lighting/AnalyticLightNode.js +522 -0
  338. package/src/nodes/lighting/BasicEnvironmentNode.js +30 -0
  339. package/src/nodes/lighting/BasicLightMapNode.js +32 -0
  340. package/{examples/jsm → src}/nodes/lighting/DirectionalLightNode.js +7 -9
  341. package/src/nodes/lighting/EnvironmentNode.js +138 -0
  342. package/{examples/jsm → src}/nodes/lighting/HemisphereLightNode.js +12 -11
  343. package/{examples/jsm → src}/nodes/lighting/IESSpotLightNode.js +7 -9
  344. package/src/nodes/lighting/IrradianceNode.js +27 -0
  345. package/src/nodes/lighting/LightProbeNode.js +53 -0
  346. package/{examples/jsm → src}/nodes/lighting/LightUtils.js +3 -3
  347. package/src/nodes/lighting/LightingContextNode.js +67 -0
  348. package/{examples/jsm → src}/nodes/lighting/LightingNode.js +9 -3
  349. package/src/nodes/lighting/LightsNode.js +250 -0
  350. package/{examples/jsm → src}/nodes/lighting/PointLightNode.js +12 -13
  351. package/src/nodes/lighting/RectAreaLightNode.js +97 -0
  352. package/{examples/jsm → src}/nodes/lighting/SpotLightNode.js +14 -16
  353. package/{examples/jsm → src}/nodes/materialx/MaterialXNodes.js +2 -2
  354. package/src/nodes/materialx/lib/mx_hsv.js +127 -0
  355. package/{examples/jsm → src}/nodes/materialx/lib/mx_noise.js +500 -603
  356. package/{examples/jsm → src}/nodes/materialx/lib/mx_transform_color.js +3 -9
  357. package/{examples/jsm/nodes/math/CondNode.js → src/nodes/math/ConditionalNode.js} +48 -13
  358. package/src/nodes/math/Hash.js +13 -0
  359. package/src/nodes/math/MathNode.js +407 -0
  360. package/{examples/jsm → src}/nodes/math/MathUtils.js +0 -7
  361. package/src/nodes/math/OperatorNode.js +319 -0
  362. package/{examples/jsm → src}/nodes/math/TriNoise3D.js +19 -29
  363. package/{examples/jsm → src}/nodes/parsers/GLSLNodeFunction.js +7 -7
  364. package/src/nodes/pmrem/PMREMNode.js +240 -0
  365. package/src/nodes/pmrem/PMREMUtils.js +288 -0
  366. package/src/nodes/procedural/Checker.js +14 -0
  367. package/src/nodes/tsl/TSLBase.js +30 -0
  368. package/{examples/jsm/nodes/shadernode/ShaderNode.js → src/nodes/tsl/TSLCore.js} +122 -96
  369. package/{examples/jsm → src}/nodes/utils/ArrayElementNode.js +9 -5
  370. package/{examples/jsm → src}/nodes/utils/ConvertNode.js +7 -3
  371. package/src/nodes/utils/CubeMapNode.js +160 -0
  372. package/src/nodes/utils/Discard.js +8 -0
  373. package/src/nodes/utils/EquirectUVNode.js +36 -0
  374. package/src/nodes/utils/FlipNode.js +68 -0
  375. package/{examples/jsm → src}/nodes/utils/FunctionOverloadingNode.js +11 -5
  376. package/{examples/jsm → src}/nodes/utils/JoinNode.js +6 -3
  377. package/{examples/jsm → src}/nodes/utils/LoopNode.js +23 -12
  378. package/src/nodes/utils/MatcapUVNode.js +33 -0
  379. package/{examples/jsm → src}/nodes/utils/MaxMipLevelNode.js +16 -7
  380. package/{examples/jsm → src}/nodes/utils/OscNode.js +12 -8
  381. package/src/nodes/utils/Packing.js +4 -0
  382. package/src/nodes/utils/RTTNode.js +133 -0
  383. package/{examples/jsm → src}/nodes/utils/ReflectorNode.js +21 -5
  384. package/{examples/jsm → src}/nodes/utils/RemapNode.js +12 -8
  385. package/{examples/jsm → src}/nodes/utils/RotateNode.js +8 -13
  386. package/{examples/jsm → src}/nodes/utils/SetNode.js +7 -4
  387. package/{examples/jsm → src}/nodes/utils/SplitNode.js +7 -3
  388. package/{examples/jsm → src}/nodes/utils/SpriteSheetUVNode.js +10 -6
  389. package/src/nodes/utils/SpriteUtils.js +47 -0
  390. package/{examples/jsm → src}/nodes/utils/StorageArrayElementNode.js +11 -12
  391. package/{examples/jsm → src}/nodes/utils/TimerNode.js +8 -5
  392. package/{examples/jsm → src}/nodes/utils/TriplanarTexturesNode.js +11 -9
  393. package/src/nodes/utils/UVUtils.js +19 -0
  394. package/src/nodes/utils/ViewportUtils.js +14 -0
  395. package/src/objects/BatchedMesh.js +302 -144
  396. package/src/objects/InstancedMesh.js +11 -1
  397. package/src/objects/LOD.js +21 -0
  398. package/src/objects/Line.js +67 -43
  399. package/src/objects/Mesh.js +7 -23
  400. package/src/objects/Points.js +2 -0
  401. package/src/renderers/WebGLRenderer.js +473 -224
  402. package/{examples/jsm → src}/renderers/common/Animation.js +3 -0
  403. package/{examples/jsm → src}/renderers/common/Attributes.js +4 -1
  404. package/{examples/jsm → src}/renderers/common/Backend.js +30 -27
  405. package/{examples/jsm → src}/renderers/common/Background.js +18 -10
  406. package/src/renderers/common/BindGroup.js +18 -0
  407. package/src/renderers/common/Bindings.js +203 -0
  408. package/src/renderers/common/BundleGroup.js +26 -0
  409. package/src/renderers/common/ChainMap.js +59 -0
  410. package/{examples/jsm → src}/renderers/common/ClippingContext.js +24 -12
  411. package/{examples/jsm → src}/renderers/common/Color4.js +1 -1
  412. package/{examples/jsm → src}/renderers/common/CubeRenderTarget.js +16 -4
  413. package/{examples/jsm → src}/renderers/common/Geometries.js +37 -5
  414. package/{examples/jsm → src}/renderers/common/Info.js +35 -15
  415. package/{examples/jsm → src}/renderers/common/Pipelines.js +2 -2
  416. package/src/renderers/common/PostProcessing.js +90 -0
  417. package/src/renderers/common/QuadMesh.js +55 -0
  418. package/src/renderers/common/RenderBundle.js +18 -0
  419. package/src/renderers/common/RenderBundles.js +38 -0
  420. package/{examples/jsm → src}/renderers/common/RenderContext.js +25 -2
  421. package/{examples/jsm → src}/renderers/common/RenderContexts.js +1 -1
  422. package/{examples/jsm → src}/renderers/common/RenderList.js +11 -2
  423. package/src/renderers/common/RenderObject.js +413 -0
  424. package/{examples/jsm → src}/renderers/common/RenderObjects.js +9 -2
  425. package/{examples/jsm → src}/renderers/common/Renderer.js +431 -83
  426. package/{examples/jsm → src}/renderers/common/SampledTexture.js +14 -5
  427. package/{examples/jsm → src}/renderers/common/StorageBufferAttribute.js +1 -1
  428. package/{examples/jsm → src}/renderers/common/StorageInstancedBufferAttribute.js +1 -1
  429. package/{examples/jsm → src}/renderers/common/StorageTexture.js +2 -1
  430. package/{examples/jsm → src}/renderers/common/Textures.js +15 -15
  431. package/{examples/jsm → src}/renderers/common/Uniform.js +10 -5
  432. package/{examples/jsm → src}/renderers/common/UniformsGroup.js +69 -31
  433. package/src/renderers/common/extras/PMREMGenerator.js +771 -0
  434. package/src/renderers/common/nodes/NodeBuilderState.js +58 -0
  435. package/src/renderers/common/nodes/NodeLibrary.js +118 -0
  436. package/src/renderers/common/nodes/NodeSampledTexture.js +64 -0
  437. package/{examples/jsm → src}/renderers/common/nodes/NodeSampler.js +8 -1
  438. package/{examples/jsm → src}/renderers/common/nodes/NodeStorageBuffer.js +5 -1
  439. package/{examples/jsm → src}/renderers/common/nodes/NodeUniform.js +3 -3
  440. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformBuffer.js +2 -1
  441. package/{examples/jsm → src}/renderers/common/nodes/NodeUniformsGroup.js +2 -8
  442. package/{examples/jsm → src}/renderers/common/nodes/Nodes.js +106 -68
  443. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +31 -1
  444. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +1 -1
  445. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +1 -1
  446. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +9 -1
  447. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +0 -9
  448. package/src/renderers/shaders/ShaderChunk/common.glsl.js +0 -10
  449. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +3 -3
  450. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +8 -22
  451. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +6 -0
  452. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +1 -0
  453. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +2 -2
  454. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +1 -1
  455. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +2 -10
  456. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +2 -16
  457. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +1 -1
  458. package/src/renderers/shaders/ShaderChunk/morphinstance_vertex.glsl.js +1 -1
  459. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +3 -14
  460. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +10 -31
  461. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +3 -23
  462. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +45 -13
  463. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +38 -25
  464. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +3 -0
  465. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +3 -3
  466. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +19 -11
  467. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +1 -1
  468. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +47 -13
  469. package/src/renderers/shaders/ShaderChunk.js +0 -2
  470. package/src/renderers/shaders/ShaderLib/depth.glsl.js +8 -0
  471. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +4 -0
  472. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +2 -4
  473. package/src/renderers/shaders/ShaderLib.js +2 -1
  474. package/src/renderers/shaders/UniformsLib.js +3 -0
  475. package/src/renderers/shaders/UniformsUtils.js +10 -1
  476. package/src/renderers/webgl/WebGLAttributes.js +42 -38
  477. package/src/renderers/webgl/WebGLBackground.js +24 -3
  478. package/src/renderers/webgl/WebGLBindingStates.js +14 -51
  479. package/src/renderers/webgl/WebGLBufferRenderer.js +23 -22
  480. package/src/renderers/webgl/WebGLCapabilities.js +44 -13
  481. package/src/renderers/webgl/WebGLCubeUVMaps.js +10 -6
  482. package/src/renderers/webgl/WebGLExtensions.js +7 -20
  483. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +23 -21
  484. package/src/renderers/webgl/WebGLLights.js +21 -44
  485. package/src/renderers/webgl/WebGLMaterials.js +9 -8
  486. package/src/renderers/webgl/WebGLMorphtargets.js +78 -217
  487. package/src/renderers/webgl/WebGLProgram.js +46 -78
  488. package/src/renderers/webgl/WebGLPrograms.js +37 -40
  489. package/src/renderers/webgl/WebGLProperties.js +7 -0
  490. package/src/renderers/webgl/WebGLRenderStates.js +15 -9
  491. package/src/renderers/webgl/WebGLShadowMap.js +25 -25
  492. package/src/renderers/webgl/WebGLState.js +35 -58
  493. package/src/renderers/webgl/WebGLTextures.js +313 -358
  494. package/src/renderers/webgl/WebGLUniforms.js +12 -2
  495. package/src/renderers/webgl/WebGLUniformsGroups.js +8 -8
  496. package/src/renderers/webgl/WebGLUtils.js +9 -78
  497. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/WebGLBackend.js +389 -152
  498. package/src/renderers/webgl-fallback/WebGLBufferRenderer.js +145 -0
  499. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/nodes/GLSLNodeBuilder.js +245 -44
  500. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLAttributeUtils.js +7 -1
  501. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLConstants.js +2 -0
  502. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLExtensions.js +2 -0
  503. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLState.js +21 -3
  504. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLTextureUtils.js +271 -43
  505. package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLUtils.js +6 -23
  506. package/{examples/jsm → src}/renderers/webgpu/WebGPUBackend.js +318 -141
  507. package/src/renderers/webgpu/WebGPURenderer.Nodes.js +42 -0
  508. package/{examples/jsm → src}/renderers/webgpu/WebGPURenderer.js +10 -7
  509. package/src/renderers/webgpu/nodes/BasicNodeLibrary.js +59 -0
  510. package/src/renderers/webgpu/nodes/StandardNodeLibrary.js +105 -0
  511. package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeBuilder.js +424 -95
  512. package/src/renderers/webgpu/nodes/WGSLNodeFunction.js +159 -0
  513. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUAttributeUtils.js +37 -18
  514. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUBindingUtils.js +86 -32
  515. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUConstants.js +10 -1
  516. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUPipelineUtils.js +68 -27
  517. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTexturePassUtils.js +62 -5
  518. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUTextureUtils.js +235 -68
  519. package/{examples/jsm → src}/renderers/webgpu/utils/WebGPUUtils.js +43 -5
  520. package/src/renderers/webxr/WebXRDepthSensing.js +11 -6
  521. package/src/renderers/webxr/WebXRManager.js +53 -38
  522. package/src/scenes/Scene.js +7 -1
  523. package/src/textures/CompressedArrayTexture.js +14 -0
  524. package/src/textures/DataArrayTexture.js +14 -0
  525. package/src/textures/DepthTexture.js +1 -3
  526. package/src/textures/Texture.js +12 -2
  527. package/src/utils.js +62 -1
  528. package/examples/jsm/geometries/SDFGeometryGenerator.js +0 -144
  529. package/examples/jsm/loaders/LogLuvLoader.js +0 -606
  530. package/examples/jsm/loaders/TiltLoader.js +0 -520
  531. package/examples/jsm/nodes/Nodes.js +0 -195
  532. package/examples/jsm/nodes/accessors/AccessorsUtils.js +0 -10
  533. package/examples/jsm/nodes/accessors/BitangentNode.js +0 -89
  534. package/examples/jsm/nodes/accessors/CameraNode.js +0 -119
  535. package/examples/jsm/nodes/accessors/CubeTextureNode.js +0 -61
  536. package/examples/jsm/nodes/accessors/InstanceNode.js +0 -71
  537. package/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +0 -21
  538. package/examples/jsm/nodes/accessors/MaterialNode.js +0 -314
  539. package/examples/jsm/nodes/accessors/ModelNode.js +0 -33
  540. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +0 -39
  541. package/examples/jsm/nodes/accessors/NormalNode.js +0 -96
  542. package/examples/jsm/nodes/accessors/PointUVNode.js +0 -26
  543. package/examples/jsm/nodes/accessors/PositionNode.js +0 -104
  544. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +0 -35
  545. package/examples/jsm/nodes/accessors/SkinningNode.js +0 -124
  546. package/examples/jsm/nodes/accessors/StorageBufferNode.js +0 -72
  547. package/examples/jsm/nodes/accessors/TangentNode.js +0 -109
  548. package/examples/jsm/nodes/accessors/TextureSizeNode.js +0 -35
  549. package/examples/jsm/nodes/accessors/UVNode.js +0 -47
  550. package/examples/jsm/nodes/core/CacheNode.js +0 -49
  551. package/examples/jsm/nodes/core/IndexNode.js +0 -66
  552. package/examples/jsm/nodes/core/NodeCache.js +0 -26
  553. package/examples/jsm/nodes/core/NodeKeywords.js +0 -80
  554. package/examples/jsm/nodes/core/PropertyNode.js +0 -72
  555. package/examples/jsm/nodes/core/UniformGroupNode.js +0 -36
  556. package/examples/jsm/nodes/core/VaryingNode.js +0 -65
  557. package/examples/jsm/nodes/display/BlendModeNode.js +0 -128
  558. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +0 -99
  559. package/examples/jsm/nodes/display/ColorSpaceNode.js +0 -108
  560. package/examples/jsm/nodes/display/FrontFacingNode.js +0 -27
  561. package/examples/jsm/nodes/display/PassNode.js +0 -183
  562. package/examples/jsm/nodes/display/ToneMappingNode.js +0 -184
  563. package/examples/jsm/nodes/display/ViewportDepthNode.js +0 -97
  564. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +0 -31
  565. package/examples/jsm/nodes/display/ViewportNode.js +0 -134
  566. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +0 -31
  567. package/examples/jsm/nodes/fog/FogExp2Node.js +0 -35
  568. package/examples/jsm/nodes/fog/FogNode.js +0 -38
  569. package/examples/jsm/nodes/fog/FogRangeNode.js +0 -34
  570. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +0 -40
  571. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +0 -393
  572. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +0 -13
  573. package/examples/jsm/nodes/lighting/AONode.js +0 -27
  574. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +0 -241
  575. package/examples/jsm/nodes/lighting/EnvironmentNode.js +0 -181
  576. package/examples/jsm/nodes/lighting/LightNode.js +0 -57
  577. package/examples/jsm/nodes/lighting/LightingContextNode.js +0 -66
  578. package/examples/jsm/nodes/lighting/LightsNode.js +0 -188
  579. package/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +0 -162
  580. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +0 -28
  581. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +0 -28
  582. package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +0 -34
  583. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +0 -40
  584. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +0 -65
  585. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +0 -155
  586. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +0 -80
  587. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +0 -90
  588. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +0 -130
  589. package/examples/jsm/nodes/math/HashNode.js +0 -34
  590. package/examples/jsm/nodes/math/MathNode.js +0 -391
  591. package/examples/jsm/nodes/math/OperatorNode.js +0 -274
  592. package/examples/jsm/nodes/procedural/CheckerNode.js +0 -42
  593. package/examples/jsm/nodes/utils/DiscardNode.js +0 -27
  594. package/examples/jsm/nodes/utils/EquirectUVNode.js +0 -33
  595. package/examples/jsm/nodes/utils/MatcapUVNode.js +0 -30
  596. package/examples/jsm/nodes/utils/PackingNode.js +0 -55
  597. package/examples/jsm/nodes/utils/RotateUVNode.js +0 -35
  598. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +0 -37
  599. package/examples/jsm/objects/QuadMesh.js +0 -66
  600. package/examples/jsm/renderers/common/Bindings.js +0 -173
  601. package/examples/jsm/renderers/common/ChainMap.js +0 -89
  602. package/examples/jsm/renderers/common/PostProcessing.js +0 -25
  603. package/examples/jsm/renderers/common/RenderObject.js +0 -221
  604. package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +0 -44
  605. package/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +0 -49
  606. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +0 -104
  607. package/examples/jsm/utils/GPUStatsPanel.js +0 -128
  608. package/examples/jsm/utils/PackedPhongMaterial.js +0 -178
  609. package/src/renderers/WebGL1Renderer.js +0 -7
  610. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +0 -10
  611. /package/{examples/jsm → src}/nodes/core/NodeAttribute.js +0 -0
  612. /package/{examples/jsm → src}/nodes/core/NodeCode.js +0 -0
  613. /package/{examples/jsm → src}/nodes/core/NodeFunctionInput.js +0 -0
  614. /package/{examples/jsm → src}/nodes/core/NodeParser.js +0 -0
  615. /package/{examples/jsm → src}/nodes/core/NodeVar.js +0 -0
  616. /package/{examples/jsm → src}/nodes/core/NodeVarying.js +0 -0
  617. /package/{examples/jsm → src}/nodes/core/UniformGroup.js +0 -0
  618. /package/{examples/jsm → src}/nodes/core/constants.js +0 -0
  619. /package/{examples/jsm → src}/nodes/materialx/DISCLAIMER.md +0 -0
  620. /package/{examples/jsm → src}/nodes/parsers/GLSLNodeParser.js +0 -0
  621. /package/{examples/jsm → src}/renderers/common/Binding.js +0 -0
  622. /package/{examples/jsm → src}/renderers/common/Buffer.js +0 -0
  623. /package/{examples/jsm → src}/renderers/common/BufferUtils.js +0 -0
  624. /package/{examples/jsm → src}/renderers/common/ComputePipeline.js +0 -0
  625. /package/{examples/jsm → src}/renderers/common/Constants.js +0 -0
  626. /package/{examples/jsm → src}/renderers/common/DataMap.js +0 -0
  627. /package/{examples/jsm → src}/renderers/common/Pipeline.js +0 -0
  628. /package/{examples/jsm → src}/renderers/common/ProgrammableStage.js +0 -0
  629. /package/{examples/jsm → src}/renderers/common/RenderLists.js +0 -0
  630. /package/{examples/jsm → src}/renderers/common/RenderPipeline.js +0 -0
  631. /package/{examples/jsm → src}/renderers/common/Sampler.js +0 -0
  632. /package/{examples/jsm → src}/renderers/common/StorageBuffer.js +0 -0
  633. /package/{examples/jsm → src}/renderers/common/UniformBuffer.js +0 -0
  634. /package/{examples/jsm/renderers/webgl → src/renderers/webgl-fallback}/utils/WebGLCapabilities.js +0 -0
  635. /package/{examples/jsm → src}/renderers/webgpu/nodes/WGSLNodeParser.js +0 -0
@@ -2,7 +2,7 @@
2
2
  fflate - fast JavaScript compression/decompression
3
3
  <https://101arrowz.github.io/fflate>
4
4
  Licensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE
5
- version 0.6.9
5
+ version 0.8.2
6
6
  */
7
7
 
8
8
  // DEFLATE is a complex format; to read this code, you should probably check the RFC first:
@@ -15,31 +15,30 @@ version 0.6.9
15
15
  // Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint
16
16
  // is better for memory in most engines (I *think*).
17
17
  var ch2 = {};
18
- var durl = function (c) { return URL.createObjectURL(new Blob([c], { type: 'text/javascript' })); };
19
- var cwk = function (u) { return new Worker(u); };
20
- try {
21
- URL.revokeObjectURL(durl(''));
22
- }
23
- catch (e) {
24
- // We're in Deno or a very old browser
25
- durl = function (c) { return 'data:application/javascript;charset=UTF-8,' + encodeURI(c); };
26
- // If Deno, this is necessary; if not, this changes nothing
27
- cwk = function (u) { return new Worker(u, { type: 'module' }); };
28
- }
29
18
  var wk = (function (c, id, msg, transfer, cb) {
30
- var w = cwk(ch2[id] || (ch2[id] = durl(c)));
31
- w.onerror = function (e) { return cb(e.error, null); };
32
- w.onmessage = function (e) { return cb(null, e.data); };
19
+ var w = new Worker(ch2[id] || (ch2[id] = URL.createObjectURL(new Blob([
20
+ c + ';addEventListener("error",function(e){e=e.error;postMessage({$e$:[e.message,e.code,e.stack]})})'
21
+ ], { type: 'text/javascript' }))));
22
+ w.onmessage = function (e) {
23
+ var d = e.data, ed = d.$e$;
24
+ if (ed) {
25
+ var err = new Error(ed[0]);
26
+ err['code'] = ed[1];
27
+ err.stack = ed[2];
28
+ cb(err, null);
29
+ }
30
+ else
31
+ cb(null, d);
32
+ };
33
33
  w.postMessage(msg, transfer);
34
34
  return w;
35
35
  });
36
36
 
37
37
  // aliases for shorter compressed code (most minifers don't do this)
38
- var u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;
38
+ var u8 = Uint8Array, u16 = Uint16Array, i32 = Int32Array;
39
39
  // fixed length extra bits
40
40
  var fleb = new u8([0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, /* unused */ 0, 0, /* impossible */ 0]);
41
41
  // fixed distance extra bits
42
- // see fleb note
43
42
  var fdeb = new u8([0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, /* unused */ 0, 0]);
44
43
  // code length index map
45
44
  var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
@@ -50,26 +49,26 @@ var freb = function (eb, start) {
50
49
  b[i] = start += 1 << eb[i - 1];
51
50
  }
52
51
  // numbers here are at max 18 bits
53
- var r = new u32(b[30]);
52
+ var r = new i32(b[30]);
54
53
  for (var i = 1; i < 30; ++i) {
55
54
  for (var j = b[i]; j < b[i + 1]; ++j) {
56
55
  r[j] = ((j - b[i]) << 5) | i;
57
56
  }
58
57
  }
59
- return [b, r];
58
+ return { b: b, r: r };
60
59
  };
61
- var _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];
60
+ var _a = freb(fleb, 2), fl = _a.b, revfl = _a.r;
62
61
  // we can ignore the fact that the other numbers are wrong; they never happen anyway
63
62
  fl[28] = 258, revfl[258] = 28;
64
- var _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1];
63
+ var _b = freb(fdeb, 0), fd = _b.b, revfd = _b.r;
65
64
  // map of value to reverse (assuming 16 bits)
66
65
  var rev = new u16(32768);
67
66
  for (var i = 0; i < 32768; ++i) {
68
67
  // reverse table algorithm from SO
69
- var x = ((i & 0xAAAA) >>> 1) | ((i & 0x5555) << 1);
70
- x = ((x & 0xCCCC) >>> 2) | ((x & 0x3333) << 2);
71
- x = ((x & 0xF0F0) >>> 4) | ((x & 0x0F0F) << 4);
72
- rev[i] = (((x & 0xFF00) >>> 8) | ((x & 0x00FF) << 8)) >>> 1;
68
+ var x = ((i & 0xAAAA) >> 1) | ((i & 0x5555) << 1);
69
+ x = ((x & 0xCCCC) >> 2) | ((x & 0x3333) << 2);
70
+ x = ((x & 0xF0F0) >> 4) | ((x & 0x0F0F) << 4);
71
+ rev[i] = (((x & 0xFF00) >> 8) | ((x & 0x00FF) << 8)) >> 1;
73
72
  }
74
73
  // create huffman tree from u8 "map": index -> code length for code index
75
74
  // mb (max bits) must be at most 15
@@ -81,11 +80,13 @@ var hMap = (function (cd, mb, r) {
81
80
  // u16 "map": index -> # of codes with bit length = index
82
81
  var l = new u16(mb);
83
82
  // length of cd must be 288 (total # of codes)
84
- for (; i < s; ++i)
85
- ++l[cd[i] - 1];
83
+ for (; i < s; ++i) {
84
+ if (cd[i])
85
+ ++l[cd[i] - 1];
86
+ }
86
87
  // u16 "map": index -> minimum code for bit length = index
87
88
  var le = new u16(mb);
88
- for (i = 0; i < mb; ++i) {
89
+ for (i = 1; i < mb; ++i) {
89
90
  le[i] = (le[i - 1] + l[i - 1]) << 1;
90
91
  }
91
92
  var co;
@@ -106,7 +107,7 @@ var hMap = (function (cd, mb, r) {
106
107
  // m is end value
107
108
  for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {
108
109
  // every 16 bit value starting with the code yields the same result
109
- co[rev[v] >>> rvb] = sv;
110
+ co[rev[v] >> rvb] = sv;
110
111
  }
111
112
  }
112
113
  }
@@ -115,7 +116,7 @@ var hMap = (function (cd, mb, r) {
115
116
  co = new u16(s);
116
117
  for (i = 0; i < s; ++i) {
117
118
  if (cd[i]) {
118
- co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]);
119
+ co[i] = rev[le[cd[i] - 1]++] >> (15 - cd[i]);
119
120
  }
120
121
  }
121
122
  }
@@ -159,7 +160,7 @@ var bits16 = function (d, p) {
159
160
  return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));
160
161
  };
161
162
  // get end of byte
162
- var shft = function (p) { return ((p / 8) | 0) + (p & 7 && 1); };
163
+ var shft = function (p) { return ((p + 7) / 8) | 0; };
163
164
  // typed array slice - allows garbage collector to free original reference,
164
165
  // while being more compatible than .slice
165
166
  var slc = function (v, s, e) {
@@ -168,24 +169,69 @@ var slc = function (v, s, e) {
168
169
  if (e == null || e > v.length)
169
170
  e = v.length;
170
171
  // can't use .constructor in case user-supplied
171
- var n = new (v instanceof u16 ? u16 : v instanceof u32 ? u32 : u8)(e - s);
172
- n.set(v.subarray(s, e));
173
- return n;
172
+ return new u8(v.subarray(s, e));
173
+ };
174
+ /**
175
+ * Codes for errors generated within this library
176
+ */
177
+ export var FlateErrorCode = {
178
+ UnexpectedEOF: 0,
179
+ InvalidBlockType: 1,
180
+ InvalidLengthLiteral: 2,
181
+ InvalidDistance: 3,
182
+ StreamFinished: 4,
183
+ NoStreamHandler: 5,
184
+ InvalidHeader: 6,
185
+ NoCallback: 7,
186
+ InvalidUTF8: 8,
187
+ ExtraFieldTooLong: 9,
188
+ InvalidDate: 10,
189
+ FilenameTooLong: 11,
190
+ StreamFinishing: 12,
191
+ InvalidZipData: 13,
192
+ UnknownCompressionMethod: 14
193
+ };
194
+ // error codes
195
+ var ec = [
196
+ 'unexpected EOF',
197
+ 'invalid block type',
198
+ 'invalid length/literal',
199
+ 'invalid distance',
200
+ 'stream finished',
201
+ 'no stream handler',
202
+ ,
203
+ 'no callback',
204
+ 'invalid UTF-8 data',
205
+ 'extra field too long',
206
+ 'date not in range 1980-2099',
207
+ 'filename too long',
208
+ 'stream finishing',
209
+ 'invalid zip data'
210
+ // determined by unknown compression method
211
+ ];
212
+ ;
213
+ var err = function (ind, msg, nt) {
214
+ var e = new Error(msg || ec[ind]);
215
+ e.code = ind;
216
+ if (Error.captureStackTrace)
217
+ Error.captureStackTrace(e, err);
218
+ if (!nt)
219
+ throw e;
220
+ return e;
174
221
  };
175
222
  // expands raw DEFLATE data
176
- var inflt = function (dat, buf, st) {
177
- // source length
178
- var sl = dat.length;
179
- if (!sl || (st && !st.l && sl < 5))
223
+ var inflt = function (dat, st, buf, dict) {
224
+ // source length dict length
225
+ var sl = dat.length, dl = dict ? dict.length : 0;
226
+ if (!sl || st.f && !st.l)
180
227
  return buf || new u8(0);
228
+ var noBuf = !buf;
181
229
  // have to estimate size
182
- var noBuf = !buf || st;
230
+ var resize = noBuf || st.i != 2;
183
231
  // no state
184
- var noSt = !st || st.i;
185
- if (!st)
186
- st = {};
232
+ var noSt = st.i;
187
233
  // Assumes roughly 33% compression ratio average
188
- if (!buf)
234
+ if (noBuf)
189
235
  buf = new u8(sl * 3);
190
236
  // ensure buffer can fit at least l elements
191
237
  var cbuf = function (l) {
@@ -205,7 +251,7 @@ var inflt = function (dat, buf, st) {
205
251
  do {
206
252
  if (!lm) {
207
253
  // BFINAL - this is only 1 when last chunk is next
208
- st.f = final = bits(dat, pos, 1);
254
+ final = bits(dat, pos, 1);
209
255
  // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman
210
256
  var type = bits(dat, pos + 1, 3);
211
257
  pos += 3;
@@ -214,16 +260,16 @@ var inflt = function (dat, buf, st) {
214
260
  var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;
215
261
  if (t > sl) {
216
262
  if (noSt)
217
- throw 'unexpected EOF';
263
+ err(0);
218
264
  break;
219
265
  }
220
266
  // ensure size
221
- if (noBuf)
267
+ if (resize)
222
268
  cbuf(bt + l);
223
269
  // Copy over uncompressed data
224
270
  buf.set(dat.subarray(s, t), bt);
225
271
  // Get new bitpos, update byte count
226
- st.b = bt += l, st.p = pos = t * 8;
272
+ st.b = bt += l, st.p = pos = t * 8, st.f = final;
227
273
  continue;
228
274
  }
229
275
  else if (type == 1)
@@ -251,7 +297,7 @@ var inflt = function (dat, buf, st) {
251
297
  // bits read
252
298
  pos += r & 15;
253
299
  // symbol
254
- var s = r >>> 4;
300
+ var s = r >> 4;
255
301
  // code length to copy
256
302
  if (s < 16) {
257
303
  ldt[i++] = s;
@@ -279,30 +325,30 @@ var inflt = function (dat, buf, st) {
279
325
  dm = hMap(dt, dbt, 1);
280
326
  }
281
327
  else
282
- throw 'invalid block type';
328
+ err(1);
283
329
  if (pos > tbts) {
284
330
  if (noSt)
285
- throw 'unexpected EOF';
331
+ err(0);
286
332
  break;
287
333
  }
288
334
  }
289
335
  // Make sure the buffer can hold this + the largest possible addition
290
- // Maximum chunk size (practically, theoretically infinite) is 2^17;
291
- if (noBuf)
336
+ // Maximum chunk size (practically, theoretically infinite) is 2^17
337
+ if (resize)
292
338
  cbuf(bt + 131072);
293
339
  var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
294
340
  var lpos = pos;
295
341
  for (;; lpos = pos) {
296
342
  // bits read, code
297
- var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;
343
+ var c = lm[bits16(dat, pos) & lms], sym = c >> 4;
298
344
  pos += c & 15;
299
345
  if (pos > tbts) {
300
346
  if (noSt)
301
- throw 'unexpected EOF';
347
+ err(0);
302
348
  break;
303
349
  }
304
350
  if (!c)
305
- throw 'invalid length/literal';
351
+ err(2);
306
352
  if (sym < 256)
307
353
  buf[bt++] = sym;
308
354
  else if (sym == 256) {
@@ -319,52 +365,55 @@ var inflt = function (dat, buf, st) {
319
365
  pos += b;
320
366
  }
321
367
  // dist
322
- var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;
368
+ var d = dm[bits16(dat, pos) & dms], dsym = d >> 4;
323
369
  if (!d)
324
- throw 'invalid distance';
370
+ err(3);
325
371
  pos += d & 15;
326
372
  var dt = fd[dsym];
327
373
  if (dsym > 3) {
328
374
  var b = fdeb[dsym];
329
- dt += bits16(dat, pos) & ((1 << b) - 1), pos += b;
375
+ dt += bits16(dat, pos) & (1 << b) - 1, pos += b;
330
376
  }
331
377
  if (pos > tbts) {
332
378
  if (noSt)
333
- throw 'unexpected EOF';
379
+ err(0);
334
380
  break;
335
381
  }
336
- if (noBuf)
382
+ if (resize)
337
383
  cbuf(bt + 131072);
338
384
  var end = bt + add;
339
- for (; bt < end; bt += 4) {
340
- buf[bt] = buf[bt - dt];
341
- buf[bt + 1] = buf[bt + 1 - dt];
342
- buf[bt + 2] = buf[bt + 2 - dt];
343
- buf[bt + 3] = buf[bt + 3 - dt];
385
+ if (bt < dt) {
386
+ var shift = dl - dt, dend = Math.min(dt, end);
387
+ if (shift + bt < 0)
388
+ err(3);
389
+ for (; bt < dend; ++bt)
390
+ buf[bt] = dict[shift + bt];
344
391
  }
345
- bt = end;
392
+ for (; bt < end; ++bt)
393
+ buf[bt] = buf[bt - dt];
346
394
  }
347
395
  }
348
- st.l = lm, st.p = lpos, st.b = bt;
396
+ st.l = lm, st.p = lpos, st.b = bt, st.f = final;
349
397
  if (lm)
350
398
  final = 1, st.m = lbt, st.d = dm, st.n = dbt;
351
399
  } while (!final);
352
- return bt == buf.length ? buf : slc(buf, 0, bt);
400
+ // don't reallocate for streams or user buffers
401
+ return bt != buf.length && noBuf ? slc(buf, 0, bt) : buf.subarray(0, bt);
353
402
  };
354
403
  // starting at p, write the minimum number of bits that can hold v to d
355
404
  var wbits = function (d, p, v) {
356
405
  v <<= p & 7;
357
406
  var o = (p / 8) | 0;
358
407
  d[o] |= v;
359
- d[o + 1] |= v >>> 8;
408
+ d[o + 1] |= v >> 8;
360
409
  };
361
410
  // starting at p, write the minimum number of bits (>8) that can hold v to d
362
411
  var wbits16 = function (d, p, v) {
363
412
  v <<= p & 7;
364
413
  var o = (p / 8) | 0;
365
414
  d[o] |= v;
366
- d[o + 1] |= v >>> 8;
367
- d[o + 2] |= v >>> 16;
415
+ d[o + 1] |= v >> 8;
416
+ d[o + 2] |= v >> 16;
368
417
  };
369
418
  // creates code lengths from a frequency table
370
419
  var hTree = function (d, mb) {
@@ -377,11 +426,11 @@ var hTree = function (d, mb) {
377
426
  var s = t.length;
378
427
  var t2 = t.slice();
379
428
  if (!s)
380
- return [et, 0];
429
+ return { t: et, l: 0 };
381
430
  if (s == 1) {
382
431
  var v = new u8(t[0].s + 1);
383
432
  v[t[0].s] = 1;
384
- return [v, 1];
433
+ return { t: v, l: 1 };
385
434
  }
386
435
  t.sort(function (a, b) { return a.f - b.f; });
387
436
  // after i2 reaches last ind, will be stopped
@@ -425,7 +474,7 @@ var hTree = function (d, mb) {
425
474
  else
426
475
  break;
427
476
  }
428
- dt >>>= lft;
477
+ dt >>= lft;
429
478
  while (dt > 0) {
430
479
  var i2_2 = t2[i].s;
431
480
  if (tr[i2_2] < mb)
@@ -442,7 +491,7 @@ var hTree = function (d, mb) {
442
491
  }
443
492
  mbt = mb;
444
493
  }
445
- return [new u8(tr), mbt];
494
+ return { t: new u8(tr), l: mbt };
446
495
  };
447
496
  // get the max length and assign length codes
448
497
  var ln = function (n, l, d) {
@@ -485,7 +534,7 @@ var lc = function (c) {
485
534
  cln = c[i];
486
535
  }
487
536
  }
488
- return [cl.subarray(0, cli), s];
537
+ return { c: cl.subarray(0, cli), n: s };
489
538
  };
490
539
  // calculate the length of output from tree, code lengths
491
540
  var clen = function (cf, cl) {
@@ -501,7 +550,7 @@ var wfblk = function (out, pos, dat) {
501
550
  var s = dat.length;
502
551
  var o = shft(pos + 2);
503
552
  out[o] = s & 255;
504
- out[o + 1] = s >>> 8;
553
+ out[o + 1] = s >> 8;
505
554
  out[o + 2] = out[o] ^ 255;
506
555
  out[o + 3] = out[o + 1] ^ 255;
507
556
  for (var i = 0; i < s; ++i)
@@ -512,23 +561,23 @@ var wfblk = function (out, pos, dat) {
512
561
  var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {
513
562
  wbits(out, p++, final);
514
563
  ++lf[256];
515
- var _a = hTree(lf, 15), dlt = _a[0], mlb = _a[1];
516
- var _b = hTree(df, 15), ddt = _b[0], mdb = _b[1];
517
- var _c = lc(dlt), lclt = _c[0], nlc = _c[1];
518
- var _d = lc(ddt), lcdt = _d[0], ndc = _d[1];
564
+ var _a = hTree(lf, 15), dlt = _a.t, mlb = _a.l;
565
+ var _b = hTree(df, 15), ddt = _b.t, mdb = _b.l;
566
+ var _c = lc(dlt), lclt = _c.c, nlc = _c.n;
567
+ var _d = lc(ddt), lcdt = _d.c, ndc = _d.n;
519
568
  var lcfreq = new u16(19);
520
569
  for (var i = 0; i < lclt.length; ++i)
521
- lcfreq[lclt[i] & 31]++;
570
+ ++lcfreq[lclt[i] & 31];
522
571
  for (var i = 0; i < lcdt.length; ++i)
523
- lcfreq[lcdt[i] & 31]++;
524
- var _e = hTree(lcfreq, 7), lct = _e[0], mlcb = _e[1];
572
+ ++lcfreq[lcdt[i] & 31];
573
+ var _e = hTree(lcfreq, 7), lct = _e.t, mlcb = _e.l;
525
574
  var nlcc = 19;
526
575
  for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)
527
576
  ;
528
577
  var flen = (bl + 5) << 3;
529
578
  var ftlen = clen(lf, flt) + clen(df, fdt) + eb;
530
- var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + (2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18]);
531
- if (flen <= ftlen && flen <= dtlen)
579
+ var dtlen = clen(lf, dlt) + clen(df, ddt) + eb + 14 + 3 * nlcc + clen(lcfreq, lct) + 2 * lcfreq[16] + 3 * lcfreq[17] + 7 * lcfreq[18];
580
+ if (bs >= 0 && flen <= ftlen && flen <= dtlen)
532
581
  return wfblk(out, p, dat.subarray(bs, bs + bl));
533
582
  var lm, ll, dm, dl;
534
583
  wbits(out, p, 1 + (dtlen < ftlen)), p += 2;
@@ -549,7 +598,7 @@ var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {
549
598
  var len = clct[i] & 31;
550
599
  wbits(out, p, llm[len]), p += lct[len];
551
600
  if (len > 15)
552
- wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12;
601
+ wbits(out, p, (clct[i] >> 5) & 127), p += clct[i] >> 12;
553
602
  }
554
603
  }
555
604
  }
@@ -557,67 +606,55 @@ var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {
557
606
  lm = flm, ll = flt, dm = fdm, dl = fdt;
558
607
  }
559
608
  for (var i = 0; i < li; ++i) {
560
- if (syms[i] > 255) {
561
- var len = (syms[i] >>> 18) & 31;
609
+ var sym = syms[i];
610
+ if (sym > 255) {
611
+ var len = (sym >> 18) & 31;
562
612
  wbits16(out, p, lm[len + 257]), p += ll[len + 257];
563
613
  if (len > 7)
564
- wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len];
565
- var dst = syms[i] & 31;
614
+ wbits(out, p, (sym >> 23) & 31), p += fleb[len];
615
+ var dst = sym & 31;
566
616
  wbits16(out, p, dm[dst]), p += dl[dst];
567
617
  if (dst > 3)
568
- wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst];
618
+ wbits16(out, p, (sym >> 5) & 8191), p += fdeb[dst];
569
619
  }
570
620
  else {
571
- wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];
621
+ wbits16(out, p, lm[sym]), p += ll[sym];
572
622
  }
573
623
  }
574
624
  wbits16(out, p, lm[256]);
575
625
  return p + ll[256];
576
626
  };
577
627
  // deflate options (nice << 13) | chain
578
- var deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);
628
+ var deo = /*#__PURE__*/ new i32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);
579
629
  // empty
580
630
  var et = /*#__PURE__*/ new u8(0);
581
631
  // compresses data into a raw DEFLATE buffer
582
- var dflt = function (dat, lvl, plvl, pre, post, lst) {
583
- var s = dat.length;
632
+ var dflt = function (dat, lvl, plvl, pre, post, st) {
633
+ var s = st.z || dat.length;
584
634
  var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);
585
635
  // writing to this writes to the output buffer
586
636
  var w = o.subarray(pre, o.length - post);
587
- var pos = 0;
588
- if (!lvl || s < 8) {
589
- for (var i = 0; i <= s; i += 65535) {
590
- // end
591
- var e = i + 65535;
592
- if (e < s) {
593
- // write full block
594
- pos = wfblk(w, pos, dat.subarray(i, e));
595
- }
596
- else {
597
- // write final block
598
- w[i] = lst;
599
- pos = wfblk(w, pos, dat.subarray(i, s));
600
- }
601
- }
602
- }
603
- else {
637
+ var lst = st.l;
638
+ var pos = (st.r || 0) & 7;
639
+ if (lvl) {
640
+ if (pos)
641
+ w[0] = st.r >> 3;
604
642
  var opt = deo[lvl - 1];
605
- var n = opt >>> 13, c = opt & 8191;
643
+ var n = opt >> 13, c = opt & 8191;
606
644
  var msk_1 = (1 << plvl) - 1;
607
645
  // prev 2-byte val map curr 2-byte val map
608
- var prev = new u16(32768), head = new u16(msk_1 + 1);
646
+ var prev = st.p || new u16(32768), head = st.h || new u16(msk_1 + 1);
609
647
  var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;
610
648
  var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };
611
649
  // 24576 is an arbitrary number of maximum symbols per block
612
650
  // 424 buffer for last block
613
- var syms = new u32(25000);
651
+ var syms = new i32(25000);
614
652
  // length/literal freq distance freq
615
653
  var lf = new u16(288), df = new u16(32);
616
- // l/lcnt exbits index l/lind waitdx bitpos
617
- var lc_1 = 0, eb = 0, i = 0, li = 0, wi = 0, bs = 0;
618
- for (; i < s; ++i) {
654
+ // l/lcnt exbits index l/lind waitdx blkpos
655
+ var lc_1 = 0, eb = 0, i = st.i || 0, li = 0, wi = st.w || 0, bs = 0;
656
+ for (; i + 2 < s; ++i) {
619
657
  // hash value
620
- // deopt when i > s - 3 - at end, deopt acceptable
621
658
  var hv = hsh(i);
622
659
  // index mod 32768 previous index mod
623
660
  var imod = i & 32767, pimod = head[hv];
@@ -628,7 +665,7 @@ var dflt = function (dat, lvl, plvl, pre, post, lst) {
628
665
  if (wi <= i) {
629
666
  // bytes remaining
630
667
  var rem = s - i;
631
- if ((lc_1 > 7000 || li > 24576) && rem > 423) {
668
+ if ((lc_1 > 7000 || li > 24576) && (rem > 423 || !lst)) {
632
669
  pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);
633
670
  li = lc_1 = eb = 0, bs = i;
634
671
  for (var j = 0; j < 286; ++j)
@@ -637,7 +674,7 @@ var dflt = function (dat, lvl, plvl, pre, post, lst) {
637
674
  df[j] = 0;
638
675
  }
639
676
  // len dist chain
640
- var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767;
677
+ var l = 2, d = 0, ch_1 = c, dif = imod - pimod & 32767;
641
678
  if (rem > 2 && hv == hsh(i - dif)) {
642
679
  var maxn = Math.min(n, rem) - 1;
643
680
  var maxd = Math.min(32767, i);
@@ -660,9 +697,9 @@ var dflt = function (dat, lvl, plvl, pre, post, lst) {
660
697
  var mmd = Math.min(dif, nl - 2);
661
698
  var md = 0;
662
699
  for (var j = 0; j < mmd; ++j) {
663
- var ti = (i - dif + j + 32768) & 32767;
700
+ var ti = i - dif + j & 32767;
664
701
  var pti = prev[ti];
665
- var cd = (ti - pti + 32768) & 32767;
702
+ var cd = ti - pti & 32767;
666
703
  if (cd > md)
667
704
  md = cd, pimod = ti;
668
705
  }
@@ -670,12 +707,12 @@ var dflt = function (dat, lvl, plvl, pre, post, lst) {
670
707
  }
671
708
  // check the previous match
672
709
  imod = pimod, pimod = prev[imod];
673
- dif += (imod - pimod + 32768) & 32767;
710
+ dif += imod - pimod & 32767;
674
711
  }
675
712
  }
676
713
  // d will be nonzero only when a match was found
677
714
  if (d) {
678
- // store both dist and len data in one Uint32
715
+ // store both dist and len data in one int32
679
716
  // Make sure this is recognized as a len/dist with 28th bit (2^28)
680
717
  syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];
681
718
  var lin = revfl[l] & 31, din = revfd[d] & 31;
@@ -691,20 +728,40 @@ var dflt = function (dat, lvl, plvl, pre, post, lst) {
691
728
  }
692
729
  }
693
730
  }
731
+ for (i = Math.max(i, wi); i < s; ++i) {
732
+ syms[li++] = dat[i];
733
+ ++lf[dat[i]];
734
+ }
694
735
  pos = wblk(dat, w, lst, syms, lf, df, eb, li, bs, i - bs, pos);
695
- // this is the easiest way to avoid needing to maintain state
696
- if (!lst && pos & 7)
697
- pos = wfblk(w, pos + 1, et);
736
+ if (!lst) {
737
+ st.r = (pos & 7) | w[(pos / 8) | 0] << 3;
738
+ // shft(pos) now 1 less if pos & 7 != 0
739
+ pos -= 7;
740
+ st.h = head, st.p = prev, st.i = i, st.w = wi;
741
+ }
742
+ }
743
+ else {
744
+ for (var i = st.w || 0; i < s + lst; i += 65535) {
745
+ // end
746
+ var e = i + 65535;
747
+ if (e >= s) {
748
+ // write final block
749
+ w[(pos / 8) | 0] = lst;
750
+ e = s;
751
+ }
752
+ pos = wfblk(w, pos + 1, dat.subarray(i, e));
753
+ }
754
+ st.i = s;
698
755
  }
699
756
  return slc(o, 0, pre + shft(pos) + post);
700
757
  };
701
758
  // CRC32 table
702
759
  var crct = /*#__PURE__*/ (function () {
703
- var t = new u32(256);
760
+ var t = new Int32Array(256);
704
761
  for (var i = 0; i < 256; ++i) {
705
762
  var c = i, k = 9;
706
763
  while (--k)
707
- c = ((c & 1) && 0xEDB88320) ^ (c >>> 1);
764
+ c = ((c & 1) && -306674912) ^ (c >>> 1);
708
765
  t[i] = c;
709
766
  }
710
767
  return t;
@@ -723,14 +780,14 @@ var crc = function () {
723
780
  d: function () { return ~c; }
724
781
  };
725
782
  };
726
- // Alder32
783
+ // Adler32
727
784
  var adler = function () {
728
785
  var a = 1, b = 0;
729
786
  return {
730
787
  p: function (d) {
731
788
  // closures have awful performance
732
789
  var n = a, m = b;
733
- var l = d.length;
790
+ var l = d.length | 0;
734
791
  for (var i = 0; i != l;) {
735
792
  var e = Math.min(i + 2655, l);
736
793
  for (; i < e; ++i)
@@ -741,14 +798,25 @@ var adler = function () {
741
798
  },
742
799
  d: function () {
743
800
  a %= 65521, b %= 65521;
744
- return (a & 255) << 24 | (a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8);
801
+ return (a & 255) << 24 | (a & 0xFF00) << 8 | (b & 255) << 8 | (b >> 8);
745
802
  }
746
803
  };
747
804
  };
748
805
  ;
749
806
  // deflate with opts
750
807
  var dopt = function (dat, opt, pre, post, st) {
751
- return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : (12 + opt.mem), pre, post, !st);
808
+ if (!st) {
809
+ st = { l: 1 };
810
+ if (opt.dictionary) {
811
+ var dict = opt.dictionary.subarray(-32768);
812
+ var newDat = new u8(dict.length + dat.length);
813
+ newDat.set(dict);
814
+ newDat.set(dat, dict.length);
815
+ dat = newDat;
816
+ st.w = dict.length;
817
+ }
818
+ }
819
+ return dflt(dat, opt.level == null ? 6 : opt.level, opt.mem == null ? (st.l ? Math.ceil(Math.max(8, Math.min(13, Math.log(dat.length))) * 1.5) : 20) : (12 + opt.mem), pre, post, st);
752
820
  };
753
821
  // Walmart object spread
754
822
  var mrg = function (a, b) {
@@ -769,7 +837,7 @@ var mrg = function (a, b) {
769
837
  var wcln = function (fn, fnStr, td) {
770
838
  var dt = fn();
771
839
  var st = fn.toString();
772
- var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/ /g, '').split(',');
840
+ var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/\s+/g, '').split(',');
773
841
  for (var i = 0; i < dt.length; ++i) {
774
842
  var v = dt[i], k = ks[i];
775
843
  if (typeof v == 'function') {
@@ -793,33 +861,33 @@ var wcln = function (fn, fnStr, td) {
793
861
  else
794
862
  td[k] = v;
795
863
  }
796
- return [fnStr, td];
864
+ return fnStr;
797
865
  };
798
866
  var ch = [];
799
867
  // clone bufs
800
868
  var cbfs = function (v) {
801
869
  var tl = [];
802
870
  for (var k in v) {
803
- if (v[k] instanceof u8 || v[k] instanceof u16 || v[k] instanceof u32)
871
+ if (v[k].buffer) {
804
872
  tl.push((v[k] = new v[k].constructor(v[k])).buffer);
873
+ }
805
874
  }
806
875
  return tl;
807
876
  };
808
877
  // use a worker to execute code
809
878
  var wrkr = function (fns, init, id, cb) {
810
- var _a;
811
879
  if (!ch[id]) {
812
880
  var fnStr = '', td_1 = {}, m = fns.length - 1;
813
881
  for (var i = 0; i < m; ++i)
814
- _a = wcln(fns[i], fnStr, td_1), fnStr = _a[0], td_1 = _a[1];
815
- ch[id] = wcln(fns[m], fnStr, td_1);
882
+ fnStr = wcln(fns[i], fnStr, td_1);
883
+ ch[id] = { c: wcln(fns[m], fnStr, td_1), e: td_1 };
816
884
  }
817
- var td = mrg({}, ch[id][1]);
818
- return wk(ch[id][0] + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);
885
+ var td = mrg({}, ch[id].e);
886
+ return wk(ch[id].c + ';onmessage=function(e){for(var k in e.data)self[k]=e.data[k];onmessage=' + init.toString() + '}', id, td, cbfs(td), cb);
819
887
  };
820
888
  // base async inflate fn
821
- var bInflt = function () { return [u8, u16, u32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, hMap, max, bits, bits16, shft, slc, inflt, inflateSync, pbf, gu8]; };
822
- var bDflt = function () { return [u8, u16, u32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };
889
+ var bInflt = function () { return [u8, u16, i32, fleb, fdeb, clim, fl, fd, flrm, fdrm, rev, ec, hMap, max, bits, bits16, shft, slc, err, inflt, inflateSync, pbf, gopt]; };
890
+ var bDflt = function () { return [u8, u16, i32, fleb, fdeb, clim, revfl, revfd, flm, flt, fdm, fdt, rev, deo, et, hMap, wbits, wbits16, hTree, ln, lc, clen, wfblk, wblk, shft, slc, dflt, dopt, deflateSync, pbf]; };
823
891
  // gzip extra
824
892
  var gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };
825
893
  // gunzip extra
@@ -827,11 +895,14 @@ var guze = function () { return [gzs, gzl]; };
827
895
  // zlib extra
828
896
  var zle = function () { return [zlh, wbytes, adler]; };
829
897
  // unzlib extra
830
- var zule = function () { return [zlv]; };
898
+ var zule = function () { return [zls]; };
831
899
  // post buf
832
900
  var pbf = function (msg) { return postMessage(msg, [msg.buffer]); };
833
- // get u8
834
- var gu8 = function (o) { return o && o.size && new u8(o.size); };
901
+ // get opts
902
+ var gopt = function (o) { return o && {
903
+ out: o.size && new u8(o.size),
904
+ dictionary: o.dictionary
905
+ }; };
835
906
  // async helper
836
907
  var cbify = function (dat, opts, fns, init, id, cb) {
837
908
  var w = wrkr(fns, init, id, function (err, dat) {
@@ -844,14 +915,28 @@ var cbify = function (dat, opts, fns, init, id, cb) {
844
915
  // auto stream
845
916
  var astrm = function (strm) {
846
917
  strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };
847
- return function (ev) { return strm.push(ev.data[0], ev.data[1]); };
918
+ return function (ev) {
919
+ if (ev.data.length) {
920
+ strm.push(ev.data[0], ev.data[1]);
921
+ postMessage([ev.data[0].length]);
922
+ }
923
+ else
924
+ strm.flush();
925
+ };
848
926
  };
849
927
  // async stream attach
850
- var astrmify = function (fns, strm, opts, init, id) {
928
+ var astrmify = function (fns, strm, opts, init, id, flush, ext) {
851
929
  var t;
852
930
  var w = wrkr(fns, init, id, function (err, dat) {
853
931
  if (err)
854
932
  w.terminate(), strm.ondata.call(strm, err);
933
+ else if (!Array.isArray(dat))
934
+ ext(dat);
935
+ else if (dat.length == 1) {
936
+ strm.queuedSize -= dat[0];
937
+ if (strm.ondrain)
938
+ strm.ondrain(dat[0]);
939
+ }
855
940
  else {
856
941
  if (dat[1])
857
942
  w.terminate();
@@ -859,14 +944,19 @@ var astrmify = function (fns, strm, opts, init, id) {
859
944
  }
860
945
  });
861
946
  w.postMessage(opts);
947
+ strm.queuedSize = 0;
862
948
  strm.push = function (d, f) {
863
- if (t)
864
- throw 'stream finished';
865
949
  if (!strm.ondata)
866
- throw 'no stream handler';
950
+ err(5);
951
+ if (t)
952
+ strm.ondata(err(4, 0, 1), null, !!f);
953
+ strm.queuedSize += d.length;
867
954
  w.postMessage([d, t = f], [d.buffer]);
868
955
  };
869
956
  strm.terminate = function () { w.terminate(); };
957
+ if (flush) {
958
+ strm.flush = function () { w.postMessage([]); };
959
+ }
870
960
  };
871
961
  // read 2 bytes
872
962
  var b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };
@@ -894,11 +984,11 @@ var gzh = function (c, o) {
894
984
  // gzip start
895
985
  var gzs = function (d) {
896
986
  if (d[0] != 31 || d[1] != 139 || d[2] != 8)
897
- throw 'invalid gzip data';
987
+ err(6, 'invalid gzip data');
898
988
  var flg = d[3];
899
989
  var st = 10;
900
990
  if (flg & 4)
901
- st += d[10] | (d[11] << 8) + 2;
991
+ st += (d[10] | d[11] << 8) + 2;
902
992
  for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])
903
993
  ;
904
994
  return st + (flg & 2);
@@ -906,41 +996,56 @@ var gzs = function (d) {
906
996
  // gzip length
907
997
  var gzl = function (d) {
908
998
  var l = d.length;
909
- return ((d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) | (d[l - 1] << 24)) >>> 0;
999
+ return (d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16 | d[l - 1] << 24) >>> 0;
910
1000
  };
911
1001
  // gzip header length
912
- var gzhl = function (o) { return 10 + ((o.filename && (o.filename.length + 1)) || 0); };
1002
+ var gzhl = function (o) { return 10 + (o.filename ? o.filename.length + 1 : 0); };
913
1003
  // zlib header
914
1004
  var zlh = function (c, o) {
915
1005
  var lv = o.level, fl = lv == 0 ? 0 : lv < 6 ? 1 : lv == 9 ? 3 : 2;
916
- c[0] = 120, c[1] = (fl << 6) | (fl ? (32 - 2 * fl) : 1);
1006
+ c[0] = 120, c[1] = (fl << 6) | (o.dictionary && 32);
1007
+ c[1] |= 31 - ((c[0] << 8) | c[1]) % 31;
1008
+ if (o.dictionary) {
1009
+ var h = adler();
1010
+ h.p(o.dictionary);
1011
+ wbytes(c, 2, h.d());
1012
+ }
917
1013
  };
918
- // zlib valid
919
- var zlv = function (d) {
920
- if ((d[0] & 15) != 8 || (d[0] >>> 4) > 7 || ((d[0] << 8 | d[1]) % 31))
921
- throw 'invalid zlib data';
922
- if (d[1] & 32)
923
- throw 'invalid zlib data: preset dictionaries not supported';
1014
+ // zlib start
1015
+ var zls = function (d, dict) {
1016
+ if ((d[0] & 15) != 8 || (d[0] >> 4) > 7 || ((d[0] << 8 | d[1]) % 31))
1017
+ err(6, 'invalid zlib data');
1018
+ if ((d[1] >> 5 & 1) == +!dict)
1019
+ err(6, 'invalid zlib data: ' + (d[1] & 32 ? 'need' : 'unexpected') + ' dictionary');
1020
+ return (d[1] >> 3 & 4) + 2;
924
1021
  };
925
- function AsyncCmpStrm(opts, cb) {
926
- if (!cb && typeof opts == 'function')
1022
+ function StrmOpt(opts, cb) {
1023
+ if (typeof opts == 'function')
927
1024
  cb = opts, opts = {};
928
1025
  this.ondata = cb;
929
1026
  return opts;
930
1027
  }
931
- // zlib footer: -4 to -0 is Adler32
932
1028
  /**
933
1029
  * Streaming DEFLATE compression
934
1030
  */
935
1031
  var Deflate = /*#__PURE__*/ (function () {
936
1032
  function Deflate(opts, cb) {
937
- if (!cb && typeof opts == 'function')
1033
+ if (typeof opts == 'function')
938
1034
  cb = opts, opts = {};
939
1035
  this.ondata = cb;
940
1036
  this.o = opts || {};
1037
+ this.s = { l: 0, i: 32768, w: 32768, z: 32768 };
1038
+ // Buffer length must always be 0 mod 32768 for index calculations to be correct when modifying head and prev
1039
+ // 98304 = 32768 (lookback) + 65536 (common chunk size)
1040
+ this.b = new u8(98304);
1041
+ if (this.o.dictionary) {
1042
+ var dict = this.o.dictionary.subarray(-32768);
1043
+ this.b.set(dict, 32768 - dict.length);
1044
+ this.s.i = 32768 - dict.length;
1045
+ }
941
1046
  }
942
1047
  Deflate.prototype.p = function (c, f) {
943
- this.ondata(dopt(c, this.o, 0, 0, !f), f);
1048
+ this.ondata(dopt(c, this.o, 0, 0, this.s), f);
944
1049
  };
945
1050
  /**
946
1051
  * Pushes a chunk to be deflated
@@ -948,12 +1053,47 @@ var Deflate = /*#__PURE__*/ (function () {
948
1053
  * @param final Whether this is the last chunk
949
1054
  */
950
1055
  Deflate.prototype.push = function (chunk, final) {
951
- if (this.d)
952
- throw 'stream finished';
953
1056
  if (!this.ondata)
954
- throw 'no stream handler';
955
- this.d = final;
956
- this.p(chunk, final || false);
1057
+ err(5);
1058
+ if (this.s.l)
1059
+ err(4);
1060
+ var endLen = chunk.length + this.s.z;
1061
+ if (endLen > this.b.length) {
1062
+ if (endLen > 2 * this.b.length - 32768) {
1063
+ var newBuf = new u8(endLen & -32768);
1064
+ newBuf.set(this.b.subarray(0, this.s.z));
1065
+ this.b = newBuf;
1066
+ }
1067
+ var split = this.b.length - this.s.z;
1068
+ this.b.set(chunk.subarray(0, split), this.s.z);
1069
+ this.s.z = this.b.length;
1070
+ this.p(this.b, false);
1071
+ this.b.set(this.b.subarray(-32768));
1072
+ this.b.set(chunk.subarray(split), 32768);
1073
+ this.s.z = chunk.length - split + 32768;
1074
+ this.s.i = 32766, this.s.w = 32768;
1075
+ }
1076
+ else {
1077
+ this.b.set(chunk, this.s.z);
1078
+ this.s.z += chunk.length;
1079
+ }
1080
+ this.s.l = final & 1;
1081
+ if (this.s.z > this.s.w + 8191 || final) {
1082
+ this.p(this.b, final || false);
1083
+ this.s.w = this.s.i, this.s.i -= 2;
1084
+ }
1085
+ };
1086
+ /**
1087
+ * Flushes buffered uncompressed data. Useful to immediately retrieve the
1088
+ * deflated output for small inputs.
1089
+ */
1090
+ Deflate.prototype.flush = function () {
1091
+ if (!this.ondata)
1092
+ err(5);
1093
+ if (this.s.l)
1094
+ err(4);
1095
+ this.p(this.b, false);
1096
+ this.s.w = this.s.i, this.s.i -= 2;
957
1097
  };
958
1098
  return Deflate;
959
1099
  }());
@@ -966,10 +1106,10 @@ var AsyncDeflate = /*#__PURE__*/ (function () {
966
1106
  astrmify([
967
1107
  bDflt,
968
1108
  function () { return [astrm, Deflate]; }
969
- ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {
1109
+ ], this, StrmOpt.call(this, opts, cb), function (ev) {
970
1110
  var strm = new Deflate(ev.data);
971
1111
  onmessage = astrm(strm);
972
- }, 6);
1112
+ }, 6, 1);
973
1113
  }
974
1114
  return AsyncDeflate;
975
1115
  }());
@@ -978,7 +1118,7 @@ export function deflate(data, opts, cb) {
978
1118
  if (!cb)
979
1119
  cb = opts, opts = {};
980
1120
  if (typeof cb != 'function')
981
- throw 'no callback';
1121
+ err(7);
982
1122
  return cbify(data, opts, [
983
1123
  bDflt,
984
1124
  ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);
@@ -996,28 +1136,34 @@ export function deflateSync(data, opts) {
996
1136
  * Streaming DEFLATE decompression
997
1137
  */
998
1138
  var Inflate = /*#__PURE__*/ (function () {
999
- /**
1000
- * Creates an inflation stream
1001
- * @param cb The callback to call whenever data is inflated
1002
- */
1003
- function Inflate(cb) {
1004
- this.s = {};
1005
- this.p = new u8(0);
1139
+ function Inflate(opts, cb) {
1140
+ // no StrmOpt here to avoid adding to workerizer
1141
+ if (typeof opts == 'function')
1142
+ cb = opts, opts = {};
1006
1143
  this.ondata = cb;
1144
+ var dict = opts && opts.dictionary && opts.dictionary.subarray(-32768);
1145
+ this.s = { i: 0, b: dict ? dict.length : 0 };
1146
+ this.o = new u8(32768);
1147
+ this.p = new u8(0);
1148
+ if (dict)
1149
+ this.o.set(dict);
1007
1150
  }
1008
1151
  Inflate.prototype.e = function (c) {
1009
- if (this.d)
1010
- throw 'stream finished';
1011
1152
  if (!this.ondata)
1012
- throw 'no stream handler';
1013
- var l = this.p.length;
1014
- var n = new u8(l + c.length);
1015
- n.set(this.p), n.set(c, l), this.p = n;
1153
+ err(5);
1154
+ if (this.d)
1155
+ err(4);
1156
+ if (!this.p.length)
1157
+ this.p = c;
1158
+ else if (c.length) {
1159
+ var n = new u8(this.p.length + c.length);
1160
+ n.set(this.p), n.set(c, this.p.length), this.p = n;
1161
+ }
1016
1162
  };
1017
1163
  Inflate.prototype.c = function (final) {
1018
- this.d = this.s.i = final || false;
1164
+ this.s.i = +(this.d = final || false);
1019
1165
  var bts = this.s.b;
1020
- var dt = inflt(this.p, this.o, this.s);
1166
+ var dt = inflt(this.p, this.s, this.o);
1021
1167
  this.ondata(slc(dt, bts, this.s.b), this.d);
1022
1168
  this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;
1023
1169
  this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;
@@ -1037,19 +1183,14 @@ export { Inflate };
1037
1183
  * Asynchronous streaming DEFLATE decompression
1038
1184
  */
1039
1185
  var AsyncInflate = /*#__PURE__*/ (function () {
1040
- /**
1041
- * Creates an asynchronous inflation stream
1042
- * @param cb The callback to call whenever data is deflated
1043
- */
1044
- function AsyncInflate(cb) {
1045
- this.ondata = cb;
1186
+ function AsyncInflate(opts, cb) {
1046
1187
  astrmify([
1047
1188
  bInflt,
1048
1189
  function () { return [astrm, Inflate]; }
1049
- ], this, 0, function () {
1050
- var strm = new Inflate();
1190
+ ], this, StrmOpt.call(this, opts, cb), function (ev) {
1191
+ var strm = new Inflate(ev.data);
1051
1192
  onmessage = astrm(strm);
1052
- }, 7);
1193
+ }, 7, 0);
1053
1194
  }
1054
1195
  return AsyncInflate;
1055
1196
  }());
@@ -1058,19 +1199,19 @@ export function inflate(data, opts, cb) {
1058
1199
  if (!cb)
1059
1200
  cb = opts, opts = {};
1060
1201
  if (typeof cb != 'function')
1061
- throw 'no callback';
1202
+ err(7);
1062
1203
  return cbify(data, opts, [
1063
1204
  bInflt
1064
- ], function (ev) { return pbf(inflateSync(ev.data[0], gu8(ev.data[1]))); }, 1, cb);
1205
+ ], function (ev) { return pbf(inflateSync(ev.data[0], gopt(ev.data[1]))); }, 1, cb);
1065
1206
  }
1066
1207
  /**
1067
1208
  * Expands DEFLATE data with no wrapper
1068
1209
  * @param data The data to decompress
1069
- * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.
1210
+ * @param opts The decompression options
1070
1211
  * @returns The decompressed version of the data
1071
1212
  */
1072
- export function inflateSync(data, out) {
1073
- return inflt(data, out);
1213
+ export function inflateSync(data, opts) {
1214
+ return inflt(data, { i: 2 }, opts && opts.out, opts && opts.dictionary);
1074
1215
  }
1075
1216
  // before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.
1076
1217
  /**
@@ -1089,18 +1230,25 @@ var Gzip = /*#__PURE__*/ (function () {
1089
1230
  * @param final Whether this is the last chunk
1090
1231
  */
1091
1232
  Gzip.prototype.push = function (chunk, final) {
1233
+ this.c.p(chunk);
1234
+ this.l += chunk.length;
1092
1235
  Deflate.prototype.push.call(this, chunk, final);
1093
1236
  };
1094
1237
  Gzip.prototype.p = function (c, f) {
1095
- this.c.p(c);
1096
- this.l += c.length;
1097
- var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, !f);
1238
+ var raw = dopt(c, this.o, this.v && gzhl(this.o), f && 8, this.s);
1098
1239
  if (this.v)
1099
1240
  gzh(raw, this.o), this.v = 0;
1100
1241
  if (f)
1101
1242
  wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);
1102
1243
  this.ondata(raw, f);
1103
1244
  };
1245
+ /**
1246
+ * Flushes buffered uncompressed data. Useful to immediately retrieve the
1247
+ * GZIPped output for small inputs.
1248
+ */
1249
+ Gzip.prototype.flush = function () {
1250
+ Deflate.prototype.flush.call(this);
1251
+ };
1104
1252
  return Gzip;
1105
1253
  }());
1106
1254
  export { Gzip };
@@ -1113,10 +1261,10 @@ var AsyncGzip = /*#__PURE__*/ (function () {
1113
1261
  bDflt,
1114
1262
  gze,
1115
1263
  function () { return [astrm, Deflate, Gzip]; }
1116
- ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {
1264
+ ], this, StrmOpt.call(this, opts, cb), function (ev) {
1117
1265
  var strm = new Gzip(ev.data);
1118
1266
  onmessage = astrm(strm);
1119
- }, 8);
1267
+ }, 8, 1);
1120
1268
  }
1121
1269
  return AsyncGzip;
1122
1270
  }());
@@ -1125,7 +1273,7 @@ export function gzip(data, opts, cb) {
1125
1273
  if (!cb)
1126
1274
  cb = opts, opts = {};
1127
1275
  if (typeof cb != 'function')
1128
- throw 'no callback';
1276
+ err(7);
1129
1277
  return cbify(data, opts, [
1130
1278
  bDflt,
1131
1279
  gze,
@@ -1147,16 +1295,13 @@ export function gzipSync(data, opts) {
1147
1295
  return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;
1148
1296
  }
1149
1297
  /**
1150
- * Streaming GZIP decompression
1298
+ * Streaming single or multi-member GZIP decompression
1151
1299
  */
1152
1300
  var Gunzip = /*#__PURE__*/ (function () {
1153
- /**
1154
- * Creates a GUNZIP stream
1155
- * @param cb The callback to call whenever data is inflated
1156
- */
1157
- function Gunzip(cb) {
1301
+ function Gunzip(opts, cb) {
1158
1302
  this.v = 1;
1159
- Inflate.call(this, cb);
1303
+ this.r = 0;
1304
+ Inflate.call(this, opts, cb);
1160
1305
  }
1161
1306
  /**
1162
1307
  * Pushes a chunk to be GUNZIPped
@@ -1165,42 +1310,48 @@ var Gunzip = /*#__PURE__*/ (function () {
1165
1310
  */
1166
1311
  Gunzip.prototype.push = function (chunk, final) {
1167
1312
  Inflate.prototype.e.call(this, chunk);
1313
+ this.r += chunk.length;
1168
1314
  if (this.v) {
1169
- var s = this.p.length > 3 ? gzs(this.p) : 4;
1170
- if (s >= this.p.length && !final)
1171
- return;
1172
- this.p = this.p.subarray(s), this.v = 0;
1173
- }
1174
- if (final) {
1175
- if (this.p.length < 8)
1176
- throw 'invalid gzip stream';
1177
- this.p = this.p.subarray(0, -8);
1315
+ var p = this.p.subarray(this.v - 1);
1316
+ var s = p.length > 3 ? gzs(p) : 4;
1317
+ if (s > p.length) {
1318
+ if (!final)
1319
+ return;
1320
+ }
1321
+ else if (this.v > 1 && this.onmember) {
1322
+ this.onmember(this.r - p.length);
1323
+ }
1324
+ this.p = p.subarray(s), this.v = 0;
1178
1325
  }
1179
1326
  // necessary to prevent TS from using the closure value
1180
1327
  // This allows for workerization to function correctly
1181
1328
  Inflate.prototype.c.call(this, final);
1329
+ // process concatenated GZIP
1330
+ if (this.s.f && !this.s.l && !final) {
1331
+ this.v = shft(this.s.p) + 9;
1332
+ this.s = { i: 0 };
1333
+ this.o = new u8(0);
1334
+ this.push(new u8(0), final);
1335
+ }
1182
1336
  };
1183
1337
  return Gunzip;
1184
1338
  }());
1185
1339
  export { Gunzip };
1186
1340
  /**
1187
- * Asynchronous streaming GZIP decompression
1341
+ * Asynchronous streaming single or multi-member GZIP decompression
1188
1342
  */
1189
1343
  var AsyncGunzip = /*#__PURE__*/ (function () {
1190
- /**
1191
- * Creates an asynchronous GUNZIP stream
1192
- * @param cb The callback to call whenever data is deflated
1193
- */
1194
- function AsyncGunzip(cb) {
1195
- this.ondata = cb;
1344
+ function AsyncGunzip(opts, cb) {
1345
+ var _this = this;
1196
1346
  astrmify([
1197
1347
  bInflt,
1198
1348
  guze,
1199
1349
  function () { return [astrm, Inflate, Gunzip]; }
1200
- ], this, 0, function () {
1201
- var strm = new Gunzip();
1350
+ ], this, StrmOpt.call(this, opts, cb), function (ev) {
1351
+ var strm = new Gunzip(ev.data);
1352
+ strm.onmember = function (offset) { return postMessage(offset); };
1202
1353
  onmessage = astrm(strm);
1203
- }, 9);
1354
+ }, 9, 0, function (offset) { return _this.onmember && _this.onmember(offset); });
1204
1355
  }
1205
1356
  return AsyncGunzip;
1206
1357
  }());
@@ -1209,21 +1360,24 @@ export function gunzip(data, opts, cb) {
1209
1360
  if (!cb)
1210
1361
  cb = opts, opts = {};
1211
1362
  if (typeof cb != 'function')
1212
- throw 'no callback';
1363
+ err(7);
1213
1364
  return cbify(data, opts, [
1214
1365
  bInflt,
1215
1366
  guze,
1216
1367
  function () { return [gunzipSync]; }
1217
- ], function (ev) { return pbf(gunzipSync(ev.data[0])); }, 3, cb);
1368
+ ], function (ev) { return pbf(gunzipSync(ev.data[0], ev.data[1])); }, 3, cb);
1218
1369
  }
1219
1370
  /**
1220
1371
  * Expands GZIP data
1221
1372
  * @param data The data to decompress
1222
- * @param out Where to write the data. GZIP already encodes the output size, so providing this doesn't save memory.
1373
+ * @param opts The decompression options
1223
1374
  * @returns The decompressed version of the data
1224
1375
  */
1225
- export function gunzipSync(data, out) {
1226
- return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));
1376
+ export function gunzipSync(data, opts) {
1377
+ var st = gzs(data);
1378
+ if (st + 8 > data.length)
1379
+ err(6, 'invalid gzip data');
1380
+ return inflt(data.subarray(st, -8), { i: 2 }, opts && opts.out || new u8(gzl(data)), opts && opts.dictionary);
1227
1381
  }
1228
1382
  /**
1229
1383
  * Streaming Zlib compression
@@ -1240,17 +1394,24 @@ var Zlib = /*#__PURE__*/ (function () {
1240
1394
  * @param final Whether this is the last chunk
1241
1395
  */
1242
1396
  Zlib.prototype.push = function (chunk, final) {
1397
+ this.c.p(chunk);
1243
1398
  Deflate.prototype.push.call(this, chunk, final);
1244
1399
  };
1245
1400
  Zlib.prototype.p = function (c, f) {
1246
- this.c.p(c);
1247
- var raw = dopt(c, this.o, this.v && 2, f && 4, !f);
1401
+ var raw = dopt(c, this.o, this.v && (this.o.dictionary ? 6 : 2), f && 4, this.s);
1248
1402
  if (this.v)
1249
1403
  zlh(raw, this.o), this.v = 0;
1250
1404
  if (f)
1251
1405
  wbytes(raw, raw.length - 4, this.c.d());
1252
1406
  this.ondata(raw, f);
1253
1407
  };
1408
+ /**
1409
+ * Flushes buffered uncompressed data. Useful to immediately retrieve the
1410
+ * zlibbed output for small inputs.
1411
+ */
1412
+ Zlib.prototype.flush = function () {
1413
+ Deflate.prototype.flush.call(this);
1414
+ };
1254
1415
  return Zlib;
1255
1416
  }());
1256
1417
  export { Zlib };
@@ -1263,10 +1424,10 @@ var AsyncZlib = /*#__PURE__*/ (function () {
1263
1424
  bDflt,
1264
1425
  zle,
1265
1426
  function () { return [astrm, Deflate, Zlib]; }
1266
- ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {
1427
+ ], this, StrmOpt.call(this, opts, cb), function (ev) {
1267
1428
  var strm = new Zlib(ev.data);
1268
1429
  onmessage = astrm(strm);
1269
- }, 10);
1430
+ }, 10, 1);
1270
1431
  }
1271
1432
  return AsyncZlib;
1272
1433
  }());
@@ -1275,7 +1436,7 @@ export function zlib(data, opts, cb) {
1275
1436
  if (!cb)
1276
1437
  cb = opts, opts = {};
1277
1438
  if (typeof cb != 'function')
1278
- throw 'no callback';
1439
+ err(7);
1279
1440
  return cbify(data, opts, [
1280
1441
  bDflt,
1281
1442
  zle,
@@ -1293,20 +1454,16 @@ export function zlibSync(data, opts) {
1293
1454
  opts = {};
1294
1455
  var a = adler();
1295
1456
  a.p(data);
1296
- var d = dopt(data, opts, 2, 4);
1457
+ var d = dopt(data, opts, opts.dictionary ? 6 : 2, 4);
1297
1458
  return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;
1298
1459
  }
1299
1460
  /**
1300
1461
  * Streaming Zlib decompression
1301
1462
  */
1302
1463
  var Unzlib = /*#__PURE__*/ (function () {
1303
- /**
1304
- * Creates a Zlib decompression stream
1305
- * @param cb The callback to call whenever data is inflated
1306
- */
1307
- function Unzlib(cb) {
1308
- this.v = 1;
1309
- Inflate.call(this, cb);
1464
+ function Unzlib(opts, cb) {
1465
+ Inflate.call(this, opts, cb);
1466
+ this.v = opts && opts.dictionary ? 2 : 1;
1310
1467
  }
1311
1468
  /**
1312
1469
  * Pushes a chunk to be unzlibbed
@@ -1316,13 +1473,13 @@ var Unzlib = /*#__PURE__*/ (function () {
1316
1473
  Unzlib.prototype.push = function (chunk, final) {
1317
1474
  Inflate.prototype.e.call(this, chunk);
1318
1475
  if (this.v) {
1319
- if (this.p.length < 2 && !final)
1476
+ if (this.p.length < 6 && !final)
1320
1477
  return;
1321
- this.p = this.p.subarray(2), this.v = 0;
1478
+ this.p = this.p.subarray(zls(this.p, this.v - 1)), this.v = 0;
1322
1479
  }
1323
1480
  if (final) {
1324
1481
  if (this.p.length < 4)
1325
- throw 'invalid zlib stream';
1482
+ err(6, 'invalid zlib data');
1326
1483
  this.p = this.p.subarray(0, -4);
1327
1484
  }
1328
1485
  // necessary to prevent TS from using the closure value
@@ -1336,20 +1493,15 @@ export { Unzlib };
1336
1493
  * Asynchronous streaming Zlib decompression
1337
1494
  */
1338
1495
  var AsyncUnzlib = /*#__PURE__*/ (function () {
1339
- /**
1340
- * Creates an asynchronous Zlib decompression stream
1341
- * @param cb The callback to call whenever data is deflated
1342
- */
1343
- function AsyncUnzlib(cb) {
1344
- this.ondata = cb;
1496
+ function AsyncUnzlib(opts, cb) {
1345
1497
  astrmify([
1346
1498
  bInflt,
1347
1499
  zule,
1348
1500
  function () { return [astrm, Inflate, Unzlib]; }
1349
- ], this, 0, function () {
1350
- var strm = new Unzlib();
1501
+ ], this, StrmOpt.call(this, opts, cb), function (ev) {
1502
+ var strm = new Unzlib(ev.data);
1351
1503
  onmessage = astrm(strm);
1352
- }, 11);
1504
+ }, 11, 0);
1353
1505
  }
1354
1506
  return AsyncUnzlib;
1355
1507
  }());
@@ -1358,40 +1510,43 @@ export function unzlib(data, opts, cb) {
1358
1510
  if (!cb)
1359
1511
  cb = opts, opts = {};
1360
1512
  if (typeof cb != 'function')
1361
- throw 'no callback';
1513
+ err(7);
1362
1514
  return cbify(data, opts, [
1363
1515
  bInflt,
1364
1516
  zule,
1365
1517
  function () { return [unzlibSync]; }
1366
- ], function (ev) { return pbf(unzlibSync(ev.data[0], gu8(ev.data[1]))); }, 5, cb);
1518
+ ], function (ev) { return pbf(unzlibSync(ev.data[0], gopt(ev.data[1]))); }, 5, cb);
1367
1519
  }
1368
1520
  /**
1369
1521
  * Expands Zlib data
1370
1522
  * @param data The data to decompress
1371
- * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.
1523
+ * @param opts The decompression options
1372
1524
  * @returns The decompressed version of the data
1373
1525
  */
1374
- export function unzlibSync(data, out) {
1375
- return inflt((zlv(data), data.subarray(2, -4)), out);
1526
+ export function unzlibSync(data, opts) {
1527
+ return inflt(data.subarray(zls(data, opts && opts.dictionary), -4), { i: 2 }, opts && opts.out, opts && opts.dictionary);
1376
1528
  }
1377
1529
  // Default algorithm for compression (used because having a known output size allows faster decompression)
1378
1530
  export { gzip as compress, AsyncGzip as AsyncCompress };
1379
- // Default algorithm for compression (used because having a known output size allows faster decompression)
1380
1531
  export { gzipSync as compressSync, Gzip as Compress };
1381
1532
  /**
1382
1533
  * Streaming GZIP, Zlib, or raw DEFLATE decompression
1383
1534
  */
1384
1535
  var Decompress = /*#__PURE__*/ (function () {
1385
- /**
1386
- * Creates a decompression stream
1387
- * @param cb The callback to call whenever data is decompressed
1388
- */
1389
- function Decompress(cb) {
1536
+ function Decompress(opts, cb) {
1537
+ this.o = StrmOpt.call(this, opts, cb) || {};
1390
1538
  this.G = Gunzip;
1391
1539
  this.I = Inflate;
1392
1540
  this.Z = Unzlib;
1393
- this.ondata = cb;
1394
1541
  }
1542
+ // init substream
1543
+ // overriden by AsyncDecompress
1544
+ Decompress.prototype.i = function () {
1545
+ var _this = this;
1546
+ this.s.ondata = function (dat, final) {
1547
+ _this.ondata(dat, final);
1548
+ };
1549
+ };
1395
1550
  /**
1396
1551
  * Pushes a chunk to be decompressed
1397
1552
  * @param chunk The chunk to push
@@ -1399,7 +1554,7 @@ var Decompress = /*#__PURE__*/ (function () {
1399
1554
  */
1400
1555
  Decompress.prototype.push = function (chunk, final) {
1401
1556
  if (!this.ondata)
1402
- throw 'no stream handler';
1557
+ err(5);
1403
1558
  if (!this.s) {
1404
1559
  if (this.p && this.p.length) {
1405
1560
  var n = new u8(this.p.length + chunk.length);
@@ -1408,13 +1563,12 @@ var Decompress = /*#__PURE__*/ (function () {
1408
1563
  else
1409
1564
  this.p = chunk;
1410
1565
  if (this.p.length > 2) {
1411
- var _this_1 = this;
1412
- var cb = function () { _this_1.ondata.apply(_this_1, arguments); };
1413
1566
  this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)
1414
- ? new this.G(cb)
1567
+ ? new this.G(this.o)
1415
1568
  : ((this.p[0] & 15) != 8 || (this.p[0] >> 4) > 7 || ((this.p[0] << 8 | this.p[1]) % 31))
1416
- ? new this.I(cb)
1417
- : new this.Z(cb);
1569
+ ? new this.I(this.o)
1570
+ : new this.Z(this.o);
1571
+ this.i();
1418
1572
  this.s.push(this.p, final);
1419
1573
  this.p = null;
1420
1574
  }
@@ -1429,22 +1583,31 @@ export { Decompress };
1429
1583
  * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression
1430
1584
  */
1431
1585
  var AsyncDecompress = /*#__PURE__*/ (function () {
1432
- /**
1433
- * Creates an asynchronous decompression stream
1434
- * @param cb The callback to call whenever data is decompressed
1435
- */
1436
- function AsyncDecompress(cb) {
1586
+ function AsyncDecompress(opts, cb) {
1587
+ Decompress.call(this, opts, cb);
1588
+ this.queuedSize = 0;
1437
1589
  this.G = AsyncGunzip;
1438
1590
  this.I = AsyncInflate;
1439
1591
  this.Z = AsyncUnzlib;
1440
- this.ondata = cb;
1441
1592
  }
1593
+ AsyncDecompress.prototype.i = function () {
1594
+ var _this = this;
1595
+ this.s.ondata = function (err, dat, final) {
1596
+ _this.ondata(err, dat, final);
1597
+ };
1598
+ this.s.ondrain = function (size) {
1599
+ _this.queuedSize -= size;
1600
+ if (_this.ondrain)
1601
+ _this.ondrain(size);
1602
+ };
1603
+ };
1442
1604
  /**
1443
1605
  * Pushes a chunk to be decompressed
1444
1606
  * @param chunk The chunk to push
1445
1607
  * @param final Whether this is the last chunk
1446
1608
  */
1447
1609
  AsyncDecompress.prototype.push = function (chunk, final) {
1610
+ this.queuedSize += chunk.length;
1448
1611
  Decompress.prototype.push.call(this, chunk, final);
1449
1612
  };
1450
1613
  return AsyncDecompress;
@@ -1454,7 +1617,7 @@ export function decompress(data, opts, cb) {
1454
1617
  if (!cb)
1455
1618
  cb = opts, opts = {};
1456
1619
  if (typeof cb != 'function')
1457
- throw 'no callback';
1620
+ err(7);
1458
1621
  return (data[0] == 31 && data[1] == 139 && data[2] == 8)
1459
1622
  ? gunzip(data, opts, cb)
1460
1623
  : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))
@@ -1464,26 +1627,28 @@ export function decompress(data, opts, cb) {
1464
1627
  /**
1465
1628
  * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
1466
1629
  * @param data The data to decompress
1467
- * @param out Where to write the data. Saves memory if you know the decompressed size and provide an output buffer of that length.
1630
+ * @param opts The decompression options
1468
1631
  * @returns The decompressed version of the data
1469
1632
  */
1470
- export function decompressSync(data, out) {
1633
+ export function decompressSync(data, opts) {
1471
1634
  return (data[0] == 31 && data[1] == 139 && data[2] == 8)
1472
- ? gunzipSync(data, out)
1635
+ ? gunzipSync(data, opts)
1473
1636
  : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))
1474
- ? inflateSync(data, out)
1475
- : unzlibSync(data, out);
1637
+ ? inflateSync(data, opts)
1638
+ : unzlibSync(data, opts);
1476
1639
  }
1477
1640
  // flatten a directory structure
1478
1641
  var fltn = function (d, p, t, o) {
1479
1642
  for (var k in d) {
1480
- var val = d[k], n = p + k;
1643
+ var val = d[k], n = p + k, op = o;
1644
+ if (Array.isArray(val))
1645
+ op = mrg(o, val[1]), val = val[0];
1481
1646
  if (val instanceof u8)
1482
- t[n] = [val, o];
1483
- else if (Array.isArray(val))
1484
- t[n] = [val[0], mrg(o, val[1])];
1485
- else
1486
- fltn(val, n + '/', t, o);
1647
+ t[n] = [val, op];
1648
+ else {
1649
+ t[n += '/'] = [new u8(0), op];
1650
+ fltn(val, n, t, o);
1651
+ }
1487
1652
  }
1488
1653
  };
1489
1654
  // text encoder
@@ -1503,7 +1668,7 @@ var dutf8 = function (d) {
1503
1668
  var c = d[i++];
1504
1669
  var eb = (c > 127) + (c > 223) + (c > 239);
1505
1670
  if (i + eb > d.length)
1506
- return [r, slc(d, i - 1)];
1671
+ return { s: r, r: slc(d, i - 1) };
1507
1672
  if (!eb)
1508
1673
  r += String.fromCharCode(c);
1509
1674
  else if (eb == 3) {
@@ -1538,31 +1703,31 @@ var DecodeUTF8 = /*#__PURE__*/ (function () {
1538
1703
  */
1539
1704
  DecodeUTF8.prototype.push = function (chunk, final) {
1540
1705
  if (!this.ondata)
1541
- throw 'no callback';
1706
+ err(5);
1542
1707
  final = !!final;
1543
1708
  if (this.t) {
1544
1709
  this.ondata(this.t.decode(chunk, { stream: true }), final);
1545
1710
  if (final) {
1546
1711
  if (this.t.decode().length)
1547
- throw 'invalid utf-8 data';
1712
+ err(8);
1548
1713
  this.t = null;
1549
1714
  }
1550
1715
  return;
1551
1716
  }
1552
1717
  if (!this.p)
1553
- throw 'stream finished';
1718
+ err(4);
1554
1719
  var dat = new u8(this.p.length + chunk.length);
1555
1720
  dat.set(this.p);
1556
1721
  dat.set(chunk, this.p.length);
1557
- var _a = dutf8(dat), ch = _a[0], np = _a[1];
1722
+ var _a = dutf8(dat), s = _a.s, r = _a.r;
1558
1723
  if (final) {
1559
- if (np.length)
1560
- throw 'invalid utf-8 data';
1724
+ if (r.length)
1725
+ err(8);
1561
1726
  this.p = null;
1562
1727
  }
1563
1728
  else
1564
- this.p = np;
1565
- this.ondata(ch, final);
1729
+ this.p = r;
1730
+ this.ondata(s, final);
1566
1731
  };
1567
1732
  return DecodeUTF8;
1568
1733
  }());
@@ -1585,9 +1750,9 @@ var EncodeUTF8 = /*#__PURE__*/ (function () {
1585
1750
  */
1586
1751
  EncodeUTF8.prototype.push = function (chunk, final) {
1587
1752
  if (!this.ondata)
1588
- throw 'no callback';
1753
+ err(5);
1589
1754
  if (this.d)
1590
- throw 'stream finished';
1755
+ err(4);
1591
1756
  this.ondata(strToU8(chunk), this.d = final || false);
1592
1757
  };
1593
1758
  return EncodeUTF8;
@@ -1646,13 +1811,14 @@ export function strFromU8(dat, latin1) {
1646
1811
  r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));
1647
1812
  return r;
1648
1813
  }
1649
- else if (td)
1814
+ else if (td) {
1650
1815
  return td.decode(dat);
1816
+ }
1651
1817
  else {
1652
- var _a = dutf8(dat), out = _a[0], ext = _a[1];
1653
- if (ext.length)
1654
- throw 'invalid utf-8 data';
1655
- return out;
1818
+ var _a = dutf8(dat), s = _a.s, r = _a.r;
1819
+ if (r.length)
1820
+ err(8);
1821
+ return s;
1656
1822
  }
1657
1823
  }
1658
1824
  ;
@@ -1679,7 +1845,7 @@ var exfl = function (ex) {
1679
1845
  for (var k in ex) {
1680
1846
  var l = ex[k].length;
1681
1847
  if (l > 65535)
1682
- throw 'extra field too long';
1848
+ err(9);
1683
1849
  le += l + 4;
1684
1850
  }
1685
1851
  }
@@ -1693,15 +1859,15 @@ var wzh = function (d, b, f, fn, u, c, ce, co) {
1693
1859
  if (ce != null)
1694
1860
  d[b++] = 20, d[b++] = f.os;
1695
1861
  d[b] = 20, b += 2; // spec compliance? what's that?
1696
- d[b++] = (f.flag << 1) | (c == null && 8), d[b++] = u && 8;
1862
+ d[b++] = (f.flag << 1) | (c < 0 && 8), d[b++] = u && 8;
1697
1863
  d[b++] = f.compression & 255, d[b++] = f.compression >> 8;
1698
1864
  var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;
1699
1865
  if (y < 0 || y > 119)
1700
- throw 'date not in range 1980-2099';
1701
- wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >>> 1)), b += 4;
1702
- if (c != null) {
1866
+ err(10);
1867
+ wbytes(d, b, (y << 25) | ((dt.getMonth() + 1) << 21) | (dt.getDate() << 16) | (dt.getHours() << 11) | (dt.getMinutes() << 5) | (dt.getSeconds() >> 1)), b += 4;
1868
+ if (c != -1) {
1703
1869
  wbytes(d, b, f.crc);
1704
- wbytes(d, b + 4, c);
1870
+ wbytes(d, b + 4, c < 0 ? -c - 2 : c);
1705
1871
  wbytes(d, b + 8, f.size);
1706
1872
  }
1707
1873
  wbytes(d, b + 12, fl);
@@ -1767,7 +1933,7 @@ var ZipPassThrough = /*#__PURE__*/ (function () {
1767
1933
  */
1768
1934
  ZipPassThrough.prototype.push = function (chunk, final) {
1769
1935
  if (!this.ondata)
1770
- throw 'no callback - add to ZIP archive before pushing';
1936
+ err(5);
1771
1937
  this.c.p(chunk);
1772
1938
  this.size += chunk.length;
1773
1939
  if (final)
@@ -1789,12 +1955,12 @@ var ZipDeflate = /*#__PURE__*/ (function () {
1789
1955
  * @param opts The compression options
1790
1956
  */
1791
1957
  function ZipDeflate(filename, opts) {
1792
- var _this_1 = this;
1958
+ var _this = this;
1793
1959
  if (!opts)
1794
1960
  opts = {};
1795
1961
  ZipPassThrough.call(this, filename);
1796
1962
  this.d = new Deflate(opts, function (dat, final) {
1797
- _this_1.ondata(null, dat, final);
1963
+ _this.ondata(null, dat, final);
1798
1964
  });
1799
1965
  this.compression = 8;
1800
1966
  this.flag = dbf(opts.level);
@@ -1823,17 +1989,17 @@ export { ZipDeflate };
1823
1989
  */
1824
1990
  var AsyncZipDeflate = /*#__PURE__*/ (function () {
1825
1991
  /**
1826
- * Creates a DEFLATE stream that can be added to ZIP archives
1992
+ * Creates an asynchronous DEFLATE stream that can be added to ZIP archives
1827
1993
  * @param filename The filename to associate with this data stream
1828
1994
  * @param opts The compression options
1829
1995
  */
1830
1996
  function AsyncZipDeflate(filename, opts) {
1831
- var _this_1 = this;
1997
+ var _this = this;
1832
1998
  if (!opts)
1833
1999
  opts = {};
1834
2000
  ZipPassThrough.call(this, filename);
1835
2001
  this.d = new AsyncDeflate(opts, function (err, dat, final) {
1836
- _this_1.ondata(err, dat, final);
2002
+ _this.ondata(err, dat, final);
1837
2003
  });
1838
2004
  this.compression = 8;
1839
2005
  this.flag = dbf(opts.level);
@@ -1873,74 +2039,79 @@ var Zip = /*#__PURE__*/ (function () {
1873
2039
  * @param file The file stream to add
1874
2040
  */
1875
2041
  Zip.prototype.add = function (file) {
1876
- var _this_1 = this;
2042
+ var _this = this;
2043
+ if (!this.ondata)
2044
+ err(5);
2045
+ // finishing or finished
1877
2046
  if (this.d & 2)
1878
- throw 'stream finished';
1879
- var f = strToU8(file.filename), fl = f.length;
1880
- var com = file.comment, o = com && strToU8(com);
1881
- var u = fl != file.filename.length || (o && (com.length != o.length));
1882
- var hl = fl + exfl(file.extra) + 30;
1883
- if (fl > 65535)
1884
- throw 'filename too long';
1885
- var header = new u8(hl);
1886
- wzh(header, 0, file, f, u);
1887
- var chks = [header];
1888
- var pAll = function () {
1889
- for (var _i = 0, chks_1 = chks; _i < chks_1.length; _i++) {
1890
- var chk = chks_1[_i];
1891
- _this_1.ondata(null, chk, false);
1892
- }
1893
- chks = [];
1894
- };
1895
- var tr = this.d;
1896
- this.d = 0;
1897
- var ind = this.u.length;
1898
- var uf = mrg(file, {
1899
- f: f,
1900
- u: u,
1901
- o: o,
1902
- t: function () {
1903
- if (file.terminate)
1904
- file.terminate();
1905
- },
1906
- r: function () {
1907
- pAll();
1908
- if (tr) {
1909
- var nxt = _this_1.u[ind + 1];
1910
- if (nxt)
1911
- nxt.r();
1912
- else
1913
- _this_1.d = 1;
2047
+ this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, false);
2048
+ else {
2049
+ var f = strToU8(file.filename), fl_1 = f.length;
2050
+ var com = file.comment, o = com && strToU8(com);
2051
+ var u = fl_1 != file.filename.length || (o && (com.length != o.length));
2052
+ var hl_1 = fl_1 + exfl(file.extra) + 30;
2053
+ if (fl_1 > 65535)
2054
+ this.ondata(err(11, 0, 1), null, false);
2055
+ var header = new u8(hl_1);
2056
+ wzh(header, 0, file, f, u, -1);
2057
+ var chks_1 = [header];
2058
+ var pAll_1 = function () {
2059
+ for (var _i = 0, chks_2 = chks_1; _i < chks_2.length; _i++) {
2060
+ var chk = chks_2[_i];
2061
+ _this.ondata(null, chk, false);
1914
2062
  }
1915
- tr = 1;
1916
- }
1917
- });
1918
- var cl = 0;
1919
- file.ondata = function (err, dat, final) {
1920
- if (err) {
1921
- _this_1.ondata(err, dat, final);
1922
- _this_1.terminate();
1923
- }
1924
- else {
1925
- cl += dat.length;
1926
- chks.push(dat);
1927
- if (final) {
1928
- var dd = new u8(16);
1929
- wbytes(dd, 0, 0x8074B50);
1930
- wbytes(dd, 4, file.crc);
1931
- wbytes(dd, 8, cl);
1932
- wbytes(dd, 12, file.size);
1933
- chks.push(dd);
1934
- uf.c = cl, uf.b = hl + cl + 16, uf.crc = file.crc, uf.size = file.size;
1935
- if (tr)
1936
- uf.r();
1937
- tr = 1;
2063
+ chks_1 = [];
2064
+ };
2065
+ var tr_1 = this.d;
2066
+ this.d = 0;
2067
+ var ind_1 = this.u.length;
2068
+ var uf_1 = mrg(file, {
2069
+ f: f,
2070
+ u: u,
2071
+ o: o,
2072
+ t: function () {
2073
+ if (file.terminate)
2074
+ file.terminate();
2075
+ },
2076
+ r: function () {
2077
+ pAll_1();
2078
+ if (tr_1) {
2079
+ var nxt = _this.u[ind_1 + 1];
2080
+ if (nxt)
2081
+ nxt.r();
2082
+ else
2083
+ _this.d = 1;
2084
+ }
2085
+ tr_1 = 1;
1938
2086
  }
1939
- else if (tr)
1940
- pAll();
1941
- }
1942
- };
1943
- this.u.push(uf);
2087
+ });
2088
+ var cl_1 = 0;
2089
+ file.ondata = function (err, dat, final) {
2090
+ if (err) {
2091
+ _this.ondata(err, dat, final);
2092
+ _this.terminate();
2093
+ }
2094
+ else {
2095
+ cl_1 += dat.length;
2096
+ chks_1.push(dat);
2097
+ if (final) {
2098
+ var dd = new u8(16);
2099
+ wbytes(dd, 0, 0x8074B50);
2100
+ wbytes(dd, 4, file.crc);
2101
+ wbytes(dd, 8, cl_1);
2102
+ wbytes(dd, 12, file.size);
2103
+ chks_1.push(dd);
2104
+ uf_1.c = cl_1, uf_1.b = hl_1 + cl_1 + 16, uf_1.crc = file.crc, uf_1.size = file.size;
2105
+ if (tr_1)
2106
+ uf_1.r();
2107
+ tr_1 = 1;
2108
+ }
2109
+ else if (tr_1)
2110
+ pAll_1();
2111
+ }
2112
+ };
2113
+ this.u.push(uf_1);
2114
+ }
1944
2115
  };
1945
2116
  /**
1946
2117
  * Ends the process of adding files and prepares to emit the final chunks.
@@ -1948,21 +2119,20 @@ var Zip = /*#__PURE__*/ (function () {
1948
2119
  * ZIP file to work properly.
1949
2120
  */
1950
2121
  Zip.prototype.end = function () {
1951
- var _this_1 = this;
2122
+ var _this = this;
1952
2123
  if (this.d & 2) {
1953
- if (this.d & 1)
1954
- throw 'stream finishing';
1955
- throw 'stream finished';
2124
+ this.ondata(err(4 + (this.d & 1) * 8, 0, 1), null, true);
2125
+ return;
1956
2126
  }
1957
2127
  if (this.d)
1958
2128
  this.e();
1959
2129
  else
1960
2130
  this.u.push({
1961
2131
  r: function () {
1962
- if (!(_this_1.d & 1))
2132
+ if (!(_this.d & 1))
1963
2133
  return;
1964
- _this_1.u.splice(-1, 1);
1965
- _this_1.e();
2134
+ _this.u.splice(-1, 1);
2135
+ _this.e();
1966
2136
  },
1967
2137
  t: function () { }
1968
2138
  });
@@ -1977,7 +2147,7 @@ var Zip = /*#__PURE__*/ (function () {
1977
2147
  var out = new u8(tl + 22);
1978
2148
  for (var _b = 0, _c = this.u; _b < _c.length; _b++) {
1979
2149
  var f = _c[_b];
1980
- wzh(out, bt, f, f.f, f.u, f.c, l, f.o);
2150
+ wzh(out, bt, f, f.f, f.u, -f.c - 2, l, f.o);
1981
2151
  bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;
1982
2152
  }
1983
2153
  wzf(out, bt, this.u.length, tl, l);
@@ -2002,7 +2172,7 @@ export function zip(data, opts, cb) {
2002
2172
  if (!cb)
2003
2173
  cb = opts, opts = {};
2004
2174
  if (typeof cb != 'function')
2005
- throw 'no callback';
2175
+ err(7);
2006
2176
  var r = {};
2007
2177
  fltn(data, '', r, opts);
2008
2178
  var k = Object.keys(r);
@@ -2013,6 +2183,10 @@ export function zip(data, opts, cb) {
2013
2183
  for (var i = 0; i < term.length; ++i)
2014
2184
  term[i]();
2015
2185
  };
2186
+ var cbd = function (a, b) {
2187
+ mt(function () { cb(a, b); });
2188
+ };
2189
+ mt(function () { cbd = cb; });
2016
2190
  var cbf = function () {
2017
2191
  var out = new u8(tot + 22), oe = o, cdl = tot - o;
2018
2192
  tot = 0;
@@ -2027,11 +2201,11 @@ export function zip(data, opts, cb) {
2027
2201
  wzh(out, o, f, f.f, f.u, l, tot, f.m), o += 16 + badd + (f.m ? f.m.length : 0), tot = loc + l;
2028
2202
  }
2029
2203
  catch (e) {
2030
- return cb(e, null);
2204
+ return cbd(e, null);
2031
2205
  }
2032
2206
  }
2033
2207
  wzf(out, o, files.length, cdl, oe);
2034
- cb(null, out);
2208
+ cbd(null, out);
2035
2209
  };
2036
2210
  if (!lft)
2037
2211
  cbf();
@@ -2047,7 +2221,7 @@ export function zip(data, opts, cb) {
2047
2221
  var cbl = function (e, d) {
2048
2222
  if (e) {
2049
2223
  tAll();
2050
- cb(e, null);
2224
+ cbd(e, null);
2051
2225
  }
2052
2226
  else {
2053
2227
  var l = d.length;
@@ -2067,7 +2241,7 @@ export function zip(data, opts, cb) {
2067
2241
  }
2068
2242
  };
2069
2243
  if (s > 65535)
2070
- cbl('filename too long', null);
2244
+ cbl(err(11, 0, 1), null);
2071
2245
  if (!compression)
2072
2246
  cbl(null, file);
2073
2247
  else if (size < 160000) {
@@ -2109,7 +2283,7 @@ export function zipSync(data, opts) {
2109
2283
  var com = p.comment, m = com && strToU8(com), ms = m && m.length;
2110
2284
  var exl = exfl(p.extra);
2111
2285
  if (s > 65535)
2112
- throw 'filename too long';
2286
+ err(11);
2113
2287
  var d = compression ? deflateSync(file, p) : file, l = d.length;
2114
2288
  var c = crc();
2115
2289
  c.p(file);
@@ -2159,9 +2333,9 @@ var UnzipInflate = /*#__PURE__*/ (function () {
2159
2333
  * Creates a DEFLATE decompression that can be used in ZIP archives
2160
2334
  */
2161
2335
  function UnzipInflate() {
2162
- var _this_1 = this;
2336
+ var _this = this;
2163
2337
  this.i = new Inflate(function (dat, final) {
2164
- _this_1.ondata(null, dat, final);
2338
+ _this.ondata(null, dat, final);
2165
2339
  });
2166
2340
  }
2167
2341
  UnzipInflate.prototype.push = function (data, final) {
@@ -2169,7 +2343,7 @@ var UnzipInflate = /*#__PURE__*/ (function () {
2169
2343
  this.i.push(data, final);
2170
2344
  }
2171
2345
  catch (e) {
2172
- this.ondata(e, data, final);
2346
+ this.ondata(e, null, final);
2173
2347
  }
2174
2348
  };
2175
2349
  UnzipInflate.compression = 8;
@@ -2184,15 +2358,15 @@ var AsyncUnzipInflate = /*#__PURE__*/ (function () {
2184
2358
  * Creates a DEFLATE decompression that can be used in ZIP archives
2185
2359
  */
2186
2360
  function AsyncUnzipInflate(_, sz) {
2187
- var _this_1 = this;
2361
+ var _this = this;
2188
2362
  if (sz < 320000) {
2189
2363
  this.i = new Inflate(function (dat, final) {
2190
- _this_1.ondata(null, dat, final);
2364
+ _this.ondata(null, dat, final);
2191
2365
  });
2192
2366
  }
2193
2367
  else {
2194
2368
  this.i = new AsyncInflate(function (err, dat, final) {
2195
- _this_1.ondata(err, dat, final);
2369
+ _this.ondata(err, dat, final);
2196
2370
  });
2197
2371
  this.terminate = this.i.terminate;
2198
2372
  }
@@ -2228,11 +2402,11 @@ var Unzip = /*#__PURE__*/ (function () {
2228
2402
  * @param final Whether this is the last chunk
2229
2403
  */
2230
2404
  Unzip.prototype.push = function (chunk, final) {
2231
- var _this_1 = this;
2405
+ var _this = this;
2232
2406
  if (!this.onfile)
2233
- throw 'no callback';
2407
+ err(5);
2234
2408
  if (!this.p)
2235
- throw 'stream finished';
2409
+ err(4);
2236
2410
  if (this.c > 0) {
2237
2411
  var len = Math.min(this.c, chunk.length);
2238
2412
  var toAdd = chunk.subarray(0, len);
@@ -2265,8 +2439,8 @@ var Unzip = /*#__PURE__*/ (function () {
2265
2439
  this_1.c = 0;
2266
2440
  var bf = b2(buf, i + 6), cmp_1 = b2(buf, i + 8), u = bf & 2048, dd = bf & 8, fnl = b2(buf, i + 26), es = b2(buf, i + 28);
2267
2441
  if (l > i + 30 + fnl + es) {
2268
- var chks_2 = [];
2269
- this_1.k.unshift(chks_2);
2442
+ var chks_3 = [];
2443
+ this_1.k.unshift(chks_3);
2270
2444
  f = 2;
2271
2445
  var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);
2272
2446
  var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);
@@ -2283,21 +2457,21 @@ var Unzip = /*#__PURE__*/ (function () {
2283
2457
  compression: cmp_1,
2284
2458
  start: function () {
2285
2459
  if (!file_1.ondata)
2286
- throw 'no callback';
2460
+ err(5);
2287
2461
  if (!sc_1)
2288
2462
  file_1.ondata(null, et, true);
2289
2463
  else {
2290
- var ctr = _this_1.o[cmp_1];
2464
+ var ctr = _this.o[cmp_1];
2291
2465
  if (!ctr)
2292
- throw 'unknown compression type ' + cmp_1;
2466
+ file_1.ondata(err(14, 'unknown compression type ' + cmp_1, 1), null, false);
2293
2467
  d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);
2294
2468
  d_1.ondata = function (err, dat, final) { file_1.ondata(err, dat, final); };
2295
- for (var _i = 0, chks_3 = chks_2; _i < chks_3.length; _i++) {
2296
- var dat = chks_3[_i];
2469
+ for (var _i = 0, chks_4 = chks_3; _i < chks_4.length; _i++) {
2470
+ var dat = chks_4[_i];
2297
2471
  d_1.push(dat, false);
2298
2472
  }
2299
- if (_this_1.k[0] == chks_2 && _this_1.c)
2300
- _this_1.d = d_1;
2473
+ if (_this.k[0] == chks_3 && _this.c)
2474
+ _this.d = d_1;
2301
2475
  else
2302
2476
  d_1.push(et, true);
2303
2477
  }
@@ -2344,7 +2518,7 @@ var Unzip = /*#__PURE__*/ (function () {
2344
2518
  }
2345
2519
  if (final) {
2346
2520
  if (this.c)
2347
- throw 'invalid zip file';
2521
+ err(13);
2348
2522
  this.p = null;
2349
2523
  }
2350
2524
  };
@@ -2359,116 +2533,140 @@ var Unzip = /*#__PURE__*/ (function () {
2359
2533
  return Unzip;
2360
2534
  }());
2361
2535
  export { Unzip };
2362
- /**
2363
- * Asynchronously decompresses a ZIP archive
2364
- * @param data The raw compressed ZIP file
2365
- * @param cb The callback to call with the decompressed files
2366
- * @returns A function that can be used to immediately terminate the unzipping
2367
- */
2368
- export function unzip(data, cb) {
2536
+ var mt = typeof queueMicrotask == 'function' ? queueMicrotask : typeof setTimeout == 'function' ? setTimeout : function (fn) { fn(); };
2537
+ export function unzip(data, opts, cb) {
2538
+ if (!cb)
2539
+ cb = opts, opts = {};
2369
2540
  if (typeof cb != 'function')
2370
- throw 'no callback';
2541
+ err(7);
2371
2542
  var term = [];
2372
2543
  var tAll = function () {
2373
2544
  for (var i = 0; i < term.length; ++i)
2374
2545
  term[i]();
2375
2546
  };
2376
2547
  var files = {};
2548
+ var cbd = function (a, b) {
2549
+ mt(function () { cb(a, b); });
2550
+ };
2551
+ mt(function () { cbd = cb; });
2377
2552
  var e = data.length - 22;
2378
2553
  for (; b4(data, e) != 0x6054B50; --e) {
2379
2554
  if (!e || data.length - e > 65558) {
2380
- cb('invalid zip file', null);
2381
- return;
2555
+ cbd(err(13, 0, 1), null);
2556
+ return tAll;
2382
2557
  }
2383
2558
  }
2384
2559
  ;
2385
2560
  var lft = b2(data, e + 8);
2386
- if (!lft)
2387
- cb(null, {});
2388
- var c = lft;
2389
- var o = b4(data, e + 16);
2390
- var z = o == 4294967295;
2391
- if (z) {
2392
- e = b4(data, e - 12);
2393
- if (b4(data, e) != 0x6064B50) {
2394
- cb('invalid zip file', null);
2395
- return;
2396
- }
2397
- c = lft = b4(data, e + 32);
2398
- o = b4(data, e + 48);
2399
- }
2400
- var _loop_3 = function (i) {
2401
- var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
2402
- o = no;
2403
- var cbl = function (e, d) {
2404
- if (e) {
2405
- tAll();
2406
- cb(e, null);
2561
+ if (lft) {
2562
+ var c = lft;
2563
+ var o = b4(data, e + 16);
2564
+ var z = o == 4294967295 || c == 65535;
2565
+ if (z) {
2566
+ var ze = b4(data, e - 12);
2567
+ z = b4(data, ze) == 0x6064B50;
2568
+ if (z) {
2569
+ c = lft = b4(data, ze + 32);
2570
+ o = b4(data, ze + 48);
2407
2571
  }
2408
- else {
2409
- files[fn] = d;
2410
- if (!--lft)
2411
- cb(null, files);
2412
- }
2413
- };
2414
- if (!c_1)
2415
- cbl(null, slc(data, b, b + sc));
2416
- else if (c_1 == 8) {
2417
- var infl = data.subarray(b, b + sc);
2418
- if (sc < 320000) {
2419
- try {
2420
- cbl(null, inflateSync(infl, new u8(su)));
2572
+ }
2573
+ var fltr = opts && opts.filter;
2574
+ var _loop_3 = function (i) {
2575
+ var _a = zh(data, o, z), c_1 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
2576
+ o = no;
2577
+ var cbl = function (e, d) {
2578
+ if (e) {
2579
+ tAll();
2580
+ cbd(e, null);
2421
2581
  }
2422
- catch (e) {
2423
- cbl(e, null);
2582
+ else {
2583
+ if (d)
2584
+ files[fn] = d;
2585
+ if (!--lft)
2586
+ cbd(null, files);
2424
2587
  }
2588
+ };
2589
+ if (!fltr || fltr({
2590
+ name: fn,
2591
+ size: sc,
2592
+ originalSize: su,
2593
+ compression: c_1
2594
+ })) {
2595
+ if (!c_1)
2596
+ cbl(null, slc(data, b, b + sc));
2597
+ else if (c_1 == 8) {
2598
+ var infl = data.subarray(b, b + sc);
2599
+ // Synchronously decompress under 512KB, or barely-compressed data
2600
+ if (su < 524288 || sc > 0.8 * su) {
2601
+ try {
2602
+ cbl(null, inflateSync(infl, { out: new u8(su) }));
2603
+ }
2604
+ catch (e) {
2605
+ cbl(e, null);
2606
+ }
2607
+ }
2608
+ else
2609
+ term.push(inflate(infl, { size: su }, cbl));
2610
+ }
2611
+ else
2612
+ cbl(err(14, 'unknown compression type ' + c_1, 1), null);
2425
2613
  }
2426
2614
  else
2427
- term.push(inflate(infl, { size: su }, cbl));
2615
+ cbl(null, null);
2616
+ };
2617
+ for (var i = 0; i < c; ++i) {
2618
+ _loop_3(i);
2428
2619
  }
2429
- else
2430
- cbl('unknown compression type ' + c_1, null);
2431
- };
2432
- for (var i = 0; i < c; ++i) {
2433
- _loop_3(i);
2434
2620
  }
2621
+ else
2622
+ cbd(null, {});
2435
2623
  return tAll;
2436
2624
  }
2437
2625
  /**
2438
2626
  * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better
2439
2627
  * performance with more than one file.
2440
2628
  * @param data The raw compressed ZIP file
2629
+ * @param opts The ZIP extraction options
2441
2630
  * @returns The decompressed files
2442
2631
  */
2443
- export function unzipSync(data) {
2632
+ export function unzipSync(data, opts) {
2444
2633
  var files = {};
2445
2634
  var e = data.length - 22;
2446
2635
  for (; b4(data, e) != 0x6054B50; --e) {
2447
2636
  if (!e || data.length - e > 65558)
2448
- throw 'invalid zip file';
2637
+ err(13);
2449
2638
  }
2450
2639
  ;
2451
2640
  var c = b2(data, e + 8);
2452
2641
  if (!c)
2453
2642
  return {};
2454
2643
  var o = b4(data, e + 16);
2455
- var z = o == 4294967295;
2644
+ var z = o == 4294967295 || c == 65535;
2456
2645
  if (z) {
2457
- e = b4(data, e - 12);
2458
- if (b4(data, e) != 0x6064B50)
2459
- throw 'invalid zip file';
2460
- c = b4(data, e + 32);
2461
- o = b4(data, e + 48);
2646
+ var ze = b4(data, e - 12);
2647
+ z = b4(data, ze) == 0x6064B50;
2648
+ if (z) {
2649
+ c = b4(data, ze + 32);
2650
+ o = b4(data, ze + 48);
2651
+ }
2462
2652
  }
2653
+ var fltr = opts && opts.filter;
2463
2654
  for (var i = 0; i < c; ++i) {
2464
2655
  var _a = zh(data, o, z), c_2 = _a[0], sc = _a[1], su = _a[2], fn = _a[3], no = _a[4], off = _a[5], b = slzh(data, off);
2465
2656
  o = no;
2466
- if (!c_2)
2467
- files[fn] = slc(data, b, b + sc);
2468
- else if (c_2 == 8)
2469
- files[fn] = inflateSync(data.subarray(b, b + sc), new u8(su));
2470
- else
2471
- throw 'unknown compression type ' + c_2;
2657
+ if (!fltr || fltr({
2658
+ name: fn,
2659
+ size: sc,
2660
+ originalSize: su,
2661
+ compression: c_2
2662
+ })) {
2663
+ if (!c_2)
2664
+ files[fn] = slc(data, b, b + sc);
2665
+ else if (c_2 == 8)
2666
+ files[fn] = inflateSync(data.subarray(b, b + sc), { out: new u8(su) });
2667
+ else
2668
+ err(14, 'unknown compression type ' + c_2);
2669
+ }
2472
2670
  }
2473
2671
  return files;
2474
2672
  }