@needle-tools/three 0.154.2 → 0.160.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 (957) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +86 -84
  3. package/build/three.cjs +53679 -51654
  4. package/build/three.module.js +53263 -51253
  5. package/build/three.module.min.js +6 -6
  6. package/examples/fonts/LICENSE +13 -13
  7. package/examples/fonts/README.md +11 -11
  8. package/examples/fonts/droid/NOTICE +190 -190
  9. package/examples/fonts/droid/README.txt +18 -18
  10. package/examples/fonts/ttf/README.md +9 -9
  11. package/examples/jsm/Addons.js +294 -0
  12. package/examples/jsm/animation/AnimationClipCreator.js +116 -116
  13. package/examples/jsm/animation/CCDIKSolver.js +482 -482
  14. package/examples/jsm/animation/MMDAnimationHelper.js +1207 -1207
  15. package/examples/jsm/animation/MMDPhysics.js +1406 -1406
  16. package/examples/jsm/cameras/CinematicCamera.js +208 -208
  17. package/examples/jsm/capabilities/WebGL.js +108 -91
  18. package/examples/jsm/capabilities/WebGPU.js +57 -53
  19. package/examples/jsm/controls/ArcballControls.js +3224 -3224
  20. package/examples/jsm/controls/DragControls.js +221 -220
  21. package/examples/jsm/controls/FirstPersonControls.js +325 -325
  22. package/examples/jsm/controls/FlyControls.js +326 -300
  23. package/examples/jsm/controls/MapControls.js +28 -28
  24. package/examples/jsm/controls/OrbitControls.js +1521 -1279
  25. package/examples/jsm/controls/PointerLockControls.js +162 -162
  26. package/examples/jsm/controls/TrackballControls.js +828 -828
  27. package/examples/jsm/controls/TransformControls.js +1573 -1557
  28. package/examples/jsm/csm/CSM.js +384 -384
  29. package/examples/jsm/csm/CSMFrustum.js +152 -152
  30. package/examples/jsm/csm/CSMHelper.js +193 -193
  31. package/examples/jsm/csm/CSMShader.js +295 -252
  32. package/examples/jsm/curves/CurveExtras.js +422 -422
  33. package/examples/jsm/curves/NURBSCurve.js +80 -80
  34. package/examples/jsm/curves/NURBSSurface.js +52 -52
  35. package/examples/jsm/curves/NURBSUtils.js +487 -487
  36. package/examples/jsm/effects/AnaglyphEffect.js +154 -154
  37. package/examples/jsm/effects/AsciiEffect.js +263 -263
  38. package/examples/jsm/effects/OutlineEffect.js +539 -539
  39. package/examples/jsm/effects/ParallaxBarrierEffect.js +119 -119
  40. package/examples/jsm/effects/PeppersGhostEffect.js +153 -153
  41. package/examples/jsm/effects/StereoEffect.js +55 -55
  42. package/examples/jsm/environments/DebugEnvironment.js +52 -52
  43. package/examples/jsm/environments/RoomEnvironment.js +148 -148
  44. package/examples/jsm/exporters/DRACOExporter.js +267 -267
  45. package/examples/jsm/exporters/EXRExporter.js +579 -501
  46. package/examples/jsm/exporters/GLTFExporter.js +3311 -3163
  47. package/examples/jsm/exporters/KTX2Exporter.js +292 -292
  48. package/examples/jsm/exporters/MMDExporter.js +217 -217
  49. package/examples/jsm/exporters/OBJExporter.js +284 -284
  50. package/examples/jsm/exporters/PLYExporter.js +528 -528
  51. package/examples/jsm/exporters/STLExporter.js +199 -199
  52. package/examples/jsm/exporters/USDZExporter.js +720 -710
  53. package/examples/jsm/geometries/BoxLineGeometry.js +69 -69
  54. package/examples/jsm/geometries/ConvexGeometry.js +53 -53
  55. package/examples/jsm/geometries/DecalGeometry.js +356 -356
  56. package/examples/jsm/geometries/InstancedPointsGeometry.js +174 -0
  57. package/examples/jsm/geometries/ParametricGeometries.js +254 -254
  58. package/examples/jsm/geometries/ParametricGeometry.js +139 -139
  59. package/examples/jsm/geometries/RoundedBoxGeometry.js +155 -155
  60. package/examples/jsm/geometries/SDFGeometryGenerator.js +144 -0
  61. package/examples/jsm/geometries/TeapotGeometry.js +704 -704
  62. package/examples/jsm/geometries/TextGeometry.js +57 -57
  63. package/examples/jsm/helpers/LightProbeHelper.js +130 -130
  64. package/examples/jsm/helpers/OctreeHelper.js +73 -73
  65. package/examples/jsm/helpers/PositionalAudioHelper.js +109 -109
  66. package/examples/jsm/helpers/RectAreaLightHelper.js +85 -85
  67. package/examples/jsm/helpers/TextureHelper.js +237 -0
  68. package/examples/jsm/helpers/VertexNormalsHelper.js +96 -96
  69. package/examples/jsm/helpers/VertexTangentsHelper.js +88 -88
  70. package/examples/jsm/helpers/ViewHelper.js +333 -333
  71. package/examples/jsm/interactive/HTMLMesh.js +572 -565
  72. package/examples/jsm/interactive/InteractiveGroup.js +116 -116
  73. package/examples/jsm/interactive/SelectionBox.js +227 -227
  74. package/examples/jsm/interactive/SelectionHelper.js +104 -97
  75. package/examples/jsm/libs/ammo.wasm.js +822 -822
  76. package/examples/jsm/libs/basis/README.md +46 -46
  77. package/examples/jsm/libs/basis/basis_transcoder.js +21 -21
  78. package/examples/jsm/libs/chevrotain.module.min.js +141 -141
  79. package/examples/jsm/libs/draco/README.md +32 -32
  80. package/examples/jsm/libs/draco/draco_decoder.js +34 -34
  81. package/examples/jsm/libs/draco/draco_encoder.js +33 -33
  82. package/examples/jsm/libs/draco/draco_wasm_wrapper.js +117 -117
  83. package/examples/jsm/libs/draco/gltf/draco_decoder.js +33 -33
  84. package/examples/jsm/libs/draco/gltf/draco_encoder.js +33 -33
  85. package/examples/jsm/libs/draco/gltf/draco_wasm_wrapper.js +116 -116
  86. package/examples/jsm/libs/ecsy.module.js +1792 -1792
  87. package/examples/jsm/libs/fflate.module.js +2474 -2474
  88. package/examples/jsm/libs/ktx-parse.module.js +1 -1
  89. package/examples/jsm/libs/lil-gui.module.min.js +8 -8
  90. package/examples/jsm/libs/lottie_canvas.module.js +14849 -14844
  91. package/examples/jsm/libs/meshopt_decoder.module.js +178 -178
  92. package/examples/jsm/libs/mikktspace.module.js +128 -128
  93. package/examples/jsm/libs/mmdparser.module.js +11530 -11530
  94. package/examples/jsm/libs/motion-controllers.module.js +397 -397
  95. package/examples/jsm/libs/opentype.module.js +14506 -14568
  96. package/examples/jsm/libs/potpack.module.js +124 -124
  97. package/examples/jsm/libs/rhino3dm/rhino3dm.js +8743 -21
  98. package/examples/jsm/libs/rhino3dm/rhino3dm.module.js +8748 -15
  99. package/examples/jsm/libs/rhino3dm/rhino3dm.wasm +0 -0
  100. package/examples/jsm/libs/stats.module.js +167 -167
  101. package/examples/jsm/libs/surfaceNet.js +201 -0
  102. package/examples/jsm/libs/tween.module.js +858 -803
  103. package/examples/jsm/libs/utif.module.js +1664 -1578
  104. package/examples/jsm/libs/zstddec.module.js +1 -1
  105. package/examples/jsm/lights/IESSpotLight.js +25 -25
  106. package/examples/jsm/lights/LightProbeGenerator.js +286 -252
  107. package/examples/jsm/lights/RectAreaLightUniformsLib.js +79 -79
  108. package/examples/jsm/lines/Line2.js +19 -19
  109. package/examples/jsm/lines/LineGeometry.js +79 -79
  110. package/examples/jsm/lines/LineMaterial.js +619 -702
  111. package/examples/jsm/lines/LineSegments2.js +361 -361
  112. package/examples/jsm/lines/LineSegmentsGeometry.js +241 -241
  113. package/examples/jsm/lines/Wireframe.js +56 -56
  114. package/examples/jsm/lines/WireframeGeometry2.js +24 -24
  115. package/examples/jsm/loaders/3DMLoader.js +1772 -1497
  116. package/examples/jsm/loaders/3MFLoader.js +1478 -1478
  117. package/examples/jsm/loaders/AMFLoader.js +521 -521
  118. package/examples/jsm/loaders/BVHLoader.js +437 -437
  119. package/examples/jsm/loaders/ColladaLoader.js +4116 -4122
  120. package/examples/jsm/loaders/DDSLoader.js +318 -274
  121. package/examples/jsm/loaders/DRACOLoader.js +613 -612
  122. package/examples/jsm/loaders/EXRLoader.js +2309 -2309
  123. package/examples/jsm/loaders/FBXLoader.js +4314 -4142
  124. package/examples/jsm/loaders/FontLoader.js +183 -183
  125. package/examples/jsm/loaders/GCodeLoader.js +261 -261
  126. package/examples/jsm/loaders/GLTFLoader.js +4666 -4579
  127. package/examples/jsm/loaders/GLTFLoaderAnimationPointer.js +719 -683
  128. package/examples/jsm/loaders/HDRCubeTextureLoader.js +115 -115
  129. package/examples/jsm/loaders/IESLoader.js +337 -337
  130. package/examples/jsm/loaders/KMZLoader.js +130 -130
  131. package/examples/jsm/loaders/KTX2Loader.js +932 -868
  132. package/examples/jsm/loaders/KTXLoader.js +176 -176
  133. package/examples/jsm/loaders/LDrawLoader.js +2470 -2464
  134. package/examples/jsm/loaders/LUT3dlLoader.js +183 -151
  135. package/examples/jsm/loaders/LUTCubeLoader.js +167 -153
  136. package/examples/jsm/loaders/LUTImageLoader.js +163 -0
  137. package/examples/jsm/loaders/LWOLoader.js +1052 -1052
  138. package/examples/jsm/loaders/LogLuvLoader.js +606 -606
  139. package/examples/jsm/loaders/LottieLoader.js +77 -77
  140. package/examples/jsm/loaders/MD2Loader.js +399 -399
  141. package/examples/jsm/loaders/MDDLoader.js +102 -102
  142. package/examples/jsm/loaders/MMDLoader.js +2276 -2273
  143. package/examples/jsm/loaders/MTLLoader.js +567 -567
  144. package/examples/jsm/loaders/MaterialXLoader.js +852 -734
  145. package/examples/jsm/loaders/NRRDLoader.js +686 -699
  146. package/examples/jsm/loaders/OBJLoader.js +905 -905
  147. package/examples/jsm/loaders/PCDLoader.js +467 -467
  148. package/examples/jsm/loaders/PDBLoader.js +232 -232
  149. package/examples/jsm/loaders/PLYLoader.js +771 -771
  150. package/examples/jsm/loaders/PVRLoader.js +251 -251
  151. package/examples/jsm/loaders/RGBELoader.js +450 -468
  152. package/examples/jsm/loaders/RGBMLoader.js +1065 -1065
  153. package/examples/jsm/loaders/STLLoader.js +410 -403
  154. package/examples/jsm/loaders/SVGLoader.js +3173 -3172
  155. package/examples/jsm/loaders/TDSLoader.js +1124 -1124
  156. package/examples/jsm/loaders/TGALoader.js +517 -517
  157. package/examples/jsm/loaders/TIFFLoader.js +36 -36
  158. package/examples/jsm/loaders/TTFLoader.js +214 -214
  159. package/examples/jsm/loaders/TiltLoader.js +520 -520
  160. package/examples/jsm/loaders/USDZLoader.js +822 -633
  161. package/examples/jsm/loaders/VOXLoader.js +311 -311
  162. package/examples/jsm/loaders/VRMLLoader.js +3533 -3533
  163. package/examples/jsm/loaders/VTKLoader.js +1163 -1163
  164. package/examples/jsm/loaders/XYZLoader.js +106 -106
  165. package/examples/jsm/loaders/lwo/IFFParser.js +1214 -1218
  166. package/examples/jsm/loaders/lwo/LWO2Parser.js +414 -414
  167. package/examples/jsm/loaders/lwo/LWO3Parser.js +373 -373
  168. package/examples/jsm/materials/MeshGouraudMaterial.js +426 -420
  169. package/examples/jsm/materials/MeshPostProcessingMaterial.js +144 -0
  170. package/examples/jsm/math/Capsule.js +82 -137
  171. package/examples/jsm/math/ColorConverter.js +36 -36
  172. package/examples/jsm/math/ConvexHull.js +1271 -1271
  173. package/examples/jsm/math/ImprovedNoise.js +71 -71
  174. package/examples/jsm/math/Lut.js +204 -204
  175. package/examples/jsm/math/MeshSurfaceSampler.js +250 -250
  176. package/examples/jsm/math/OBB.js +423 -423
  177. package/examples/jsm/math/Octree.js +540 -462
  178. package/examples/jsm/math/SimplexNoise.js +444 -444
  179. package/examples/jsm/misc/ConvexObjectBreaker.js +519 -519
  180. package/examples/jsm/misc/GPUComputationRenderer.js +446 -455
  181. package/examples/jsm/misc/Gyroscope.js +66 -66
  182. package/examples/jsm/misc/MD2Character.js +276 -276
  183. package/examples/jsm/misc/MD2CharacterComplex.js +576 -576
  184. package/examples/jsm/misc/MorphAnimMesh.js +75 -75
  185. package/examples/jsm/misc/MorphBlendMesh.js +322 -322
  186. package/examples/jsm/misc/ProgressiveLightMap.js +323 -323
  187. package/examples/jsm/misc/RollerCoaster.js +566 -566
  188. package/examples/jsm/misc/Timer.js +119 -0
  189. package/examples/jsm/misc/TubePainter.js +202 -205
  190. package/examples/jsm/misc/Volume.js +473 -475
  191. package/examples/jsm/misc/VolumeSlice.js +229 -229
  192. package/examples/jsm/modifiers/CurveModifier.js +344 -326
  193. package/examples/jsm/modifiers/EdgeSplitModifier.js +279 -279
  194. package/examples/jsm/modifiers/SimplifyModifier.js +617 -525
  195. package/examples/jsm/modifiers/TessellateModifier.js +307 -307
  196. package/examples/jsm/nodes/Nodes.js +189 -172
  197. package/examples/jsm/nodes/accessors/BitangentNode.js +89 -89
  198. package/examples/jsm/nodes/accessors/BufferAttributeNode.js +127 -99
  199. package/examples/jsm/nodes/accessors/BufferNode.js +30 -30
  200. package/examples/jsm/nodes/accessors/CameraNode.js +120 -98
  201. package/examples/jsm/nodes/accessors/CubeTextureNode.js +61 -101
  202. package/examples/jsm/nodes/accessors/InstanceNode.js +71 -71
  203. package/examples/jsm/nodes/accessors/InstancedPointsMaterialNode.js +21 -0
  204. package/examples/jsm/nodes/accessors/MaterialNode.js +314 -277
  205. package/examples/jsm/nodes/accessors/MaterialReferenceNode.js +51 -39
  206. package/examples/jsm/nodes/accessors/ModelNode.js +33 -34
  207. package/examples/jsm/nodes/accessors/ModelViewProjectionNode.js +39 -29
  208. package/examples/jsm/nodes/accessors/MorphNode.js +245 -70
  209. package/examples/jsm/nodes/accessors/NormalNode.js +96 -96
  210. package/examples/jsm/nodes/accessors/Object3DNode.js +150 -150
  211. package/examples/jsm/nodes/accessors/PointUVNode.js +26 -26
  212. package/examples/jsm/nodes/accessors/PositionNode.js +104 -104
  213. package/examples/jsm/nodes/accessors/ReferenceNode.js +102 -72
  214. package/examples/jsm/nodes/accessors/ReflectVectorNode.js +35 -35
  215. package/examples/jsm/nodes/accessors/SceneNode.js +52 -46
  216. package/examples/jsm/nodes/accessors/SkinningNode.js +103 -93
  217. package/examples/jsm/nodes/accessors/StorageBufferNode.js +54 -27
  218. package/examples/jsm/nodes/accessors/TangentNode.js +103 -103
  219. package/examples/jsm/nodes/accessors/TextureBicubicNode.js +94 -94
  220. package/examples/jsm/nodes/accessors/TextureNode.js +367 -230
  221. package/examples/jsm/nodes/accessors/TextureSizeNode.js +35 -35
  222. package/examples/jsm/nodes/accessors/TextureStoreNode.js +82 -0
  223. package/examples/jsm/nodes/accessors/UVNode.js +47 -47
  224. package/examples/jsm/nodes/accessors/UserDataNode.js +29 -29
  225. package/examples/jsm/nodes/accessors/VertexColorNode.js +70 -0
  226. package/examples/jsm/nodes/code/CodeNode.js +78 -78
  227. package/examples/jsm/nodes/code/ExpressionNode.js +37 -37
  228. package/examples/jsm/nodes/code/FunctionCallNode.js +96 -96
  229. package/examples/jsm/nodes/code/FunctionNode.js +138 -127
  230. package/examples/jsm/nodes/code/ScriptableNode.js +488 -488
  231. package/examples/jsm/nodes/code/ScriptableValueNode.js +167 -167
  232. package/examples/jsm/nodes/core/ArrayUniformNode.js +26 -26
  233. package/examples/jsm/nodes/core/AssignNode.js +72 -0
  234. package/examples/jsm/nodes/core/AttributeNode.js +108 -102
  235. package/examples/jsm/nodes/core/BypassNode.js +45 -45
  236. package/examples/jsm/nodes/core/CacheNode.js +49 -46
  237. package/examples/jsm/nodes/core/ConstNode.js +32 -32
  238. package/examples/jsm/nodes/core/ContextNode.js +61 -61
  239. package/examples/jsm/nodes/core/IndexNode.js +66 -66
  240. package/examples/jsm/nodes/core/InputNode.js +83 -83
  241. package/examples/jsm/nodes/core/LightingModel.js +17 -17
  242. package/examples/jsm/nodes/core/Node.js +483 -445
  243. package/examples/jsm/nodes/core/NodeAttribute.js +15 -15
  244. package/examples/jsm/nodes/core/NodeBuilder.js +1267 -1016
  245. package/examples/jsm/nodes/core/NodeCache.js +26 -26
  246. package/examples/jsm/nodes/core/NodeCode.js +15 -15
  247. package/examples/jsm/nodes/core/NodeFrame.js +135 -110
  248. package/examples/jsm/nodes/core/NodeFunction.js +22 -22
  249. package/examples/jsm/nodes/core/NodeFunctionInput.js +17 -17
  250. package/examples/jsm/nodes/core/NodeKeywords.js +80 -80
  251. package/examples/jsm/nodes/core/NodeParser.js +11 -11
  252. package/examples/jsm/nodes/core/NodeUniform.js +40 -28
  253. package/examples/jsm/nodes/core/NodeUtils.js +210 -212
  254. package/examples/jsm/nodes/core/NodeVar.js +14 -14
  255. package/examples/jsm/nodes/core/NodeVarying.js +17 -17
  256. package/examples/jsm/nodes/core/OutputStructNode.js +62 -0
  257. package/examples/jsm/nodes/core/ParameterNode.js +33 -0
  258. package/examples/jsm/nodes/core/PropertyNode.js +72 -57
  259. package/examples/jsm/nodes/core/StackNode.js +89 -99
  260. package/examples/jsm/nodes/core/StructTypeNode.js +24 -0
  261. package/examples/jsm/nodes/core/TempNode.js +58 -58
  262. package/examples/jsm/nodes/core/UniformGroup.js +13 -0
  263. package/examples/jsm/nodes/core/UniformGroupNode.js +36 -0
  264. package/examples/jsm/nodes/core/UniformNode.js +80 -61
  265. package/examples/jsm/nodes/core/VarNode.js +60 -87
  266. package/examples/jsm/nodes/core/VaryingNode.js +65 -69
  267. package/examples/jsm/nodes/core/constants.js +27 -27
  268. package/examples/jsm/nodes/display/AfterImageNode.js +134 -0
  269. package/examples/jsm/nodes/display/BlendModeNode.js +99 -99
  270. package/examples/jsm/nodes/display/BumpMapNode.js +99 -0
  271. package/examples/jsm/nodes/display/ColorAdjustmentNode.js +96 -100
  272. package/examples/jsm/nodes/display/ColorSpaceNode.js +108 -108
  273. package/examples/jsm/nodes/display/FrontFacingNode.js +27 -27
  274. package/examples/jsm/nodes/display/GaussianBlurNode.js +177 -0
  275. package/examples/jsm/nodes/display/NormalMapNode.js +108 -106
  276. package/examples/jsm/nodes/display/PassNode.js +182 -0
  277. package/examples/jsm/nodes/display/PosterizeNode.js +32 -32
  278. package/examples/jsm/nodes/display/ToneMappingNode.js +184 -141
  279. package/examples/jsm/nodes/display/ViewportDepthNode.js +97 -69
  280. package/examples/jsm/nodes/display/ViewportDepthTextureNode.js +31 -34
  281. package/examples/jsm/nodes/display/ViewportNode.js +134 -115
  282. package/examples/jsm/nodes/display/ViewportSharedTextureNode.js +31 -31
  283. package/examples/jsm/nodes/display/ViewportTextureNode.js +75 -75
  284. package/examples/jsm/nodes/fog/FogExp2Node.js +35 -35
  285. package/examples/jsm/nodes/fog/FogNode.js +38 -37
  286. package/examples/jsm/nodes/fog/FogRangeNode.js +34 -34
  287. package/examples/jsm/nodes/functions/BSDF/BRDF_GGX.js +40 -32
  288. package/examples/jsm/nodes/functions/BSDF/BRDF_Lambert.js +9 -9
  289. package/examples/jsm/nodes/functions/BSDF/BRDF_Sheen.js +57 -43
  290. package/examples/jsm/nodes/functions/BSDF/DFGApprox.js +30 -29
  291. package/examples/jsm/nodes/functions/BSDF/D_GGX.js +23 -18
  292. package/examples/jsm/nodes/functions/BSDF/EnvironmentBRDF.js +13 -13
  293. package/examples/jsm/nodes/functions/BSDF/F_Schlick.js +16 -16
  294. package/examples/jsm/nodes/functions/BSDF/Schlick_to_F0.js +21 -0
  295. package/examples/jsm/nodes/functions/BSDF/V_GGX_SmithCorrelated.js +28 -20
  296. package/examples/jsm/nodes/functions/PhongLightingModel.js +67 -28
  297. package/examples/jsm/nodes/functions/PhysicalLightingModel.js +393 -204
  298. package/examples/jsm/nodes/functions/material/getGeometryRoughness.js +13 -13
  299. package/examples/jsm/nodes/functions/material/getRoughness.js +18 -18
  300. package/examples/jsm/nodes/geometry/RangeNode.js +104 -104
  301. package/examples/jsm/nodes/gpgpu/ComputeNode.js +85 -72
  302. package/examples/jsm/nodes/lighting/AONode.js +27 -27
  303. package/examples/jsm/nodes/lighting/AmbientLightNode.js +27 -27
  304. package/examples/jsm/nodes/lighting/AnalyticLightNode.js +238 -146
  305. package/examples/jsm/nodes/lighting/DirectionalLightNode.js +40 -43
  306. package/examples/jsm/nodes/lighting/EnvironmentNode.js +181 -181
  307. package/examples/jsm/nodes/lighting/HemisphereLightNode.js +55 -55
  308. package/examples/jsm/nodes/lighting/IESSpotLightNode.js +39 -39
  309. package/examples/jsm/nodes/lighting/LightNode.js +57 -57
  310. package/examples/jsm/nodes/lighting/LightUtils.js +17 -17
  311. package/examples/jsm/nodes/lighting/LightingContextNode.js +66 -99
  312. package/examples/jsm/nodes/lighting/LightingNode.js +21 -21
  313. package/examples/jsm/nodes/lighting/LightsNode.js +188 -128
  314. package/examples/jsm/nodes/lighting/PointLightNode.js +68 -71
  315. package/examples/jsm/nodes/lighting/SpotLightNode.js +89 -92
  316. package/examples/jsm/nodes/loaders/NodeLoader.js +108 -108
  317. package/examples/jsm/nodes/loaders/NodeMaterialLoader.js +59 -59
  318. package/examples/jsm/nodes/loaders/NodeObjectLoader.js +70 -70
  319. package/examples/jsm/nodes/materials/InstancedPointsNodeMaterial.js +162 -0
  320. package/examples/jsm/nodes/materials/Line2NodeMaterial.js +436 -0
  321. package/examples/jsm/nodes/materials/LineBasicNodeMaterial.js +28 -28
  322. package/examples/jsm/nodes/materials/LineDashedNodeMaterial.js +54 -0
  323. package/examples/jsm/nodes/materials/Materials.js +16 -11
  324. package/examples/jsm/nodes/materials/MeshBasicNodeMaterial.js +28 -27
  325. package/examples/jsm/nodes/materials/MeshLambertNodeMaterial.js +34 -0
  326. package/examples/jsm/nodes/materials/MeshNormalNodeMaterial.js +40 -38
  327. package/examples/jsm/nodes/materials/MeshPhongNodeMaterial.js +65 -65
  328. package/examples/jsm/nodes/materials/MeshPhysicalNodeMaterial.js +155 -111
  329. package/examples/jsm/nodes/materials/MeshSSSNodeMaterial.js +84 -0
  330. package/examples/jsm/nodes/materials/MeshStandardNodeMaterial.js +80 -80
  331. package/examples/jsm/nodes/materials/NodeMaterial.js +568 -510
  332. package/examples/jsm/nodes/materials/PointsNodeMaterial.js +39 -49
  333. package/examples/jsm/nodes/materials/SpriteNodeMaterial.js +96 -103
  334. package/examples/jsm/nodes/materialx/DISCLAIMER.md +199 -199
  335. package/examples/jsm/nodes/materialx/MaterialXNodes.js +68 -68
  336. package/examples/jsm/nodes/materialx/lib/mx_hsv.js +130 -56
  337. package/examples/jsm/nodes/materialx/lib/mx_noise.js +1430 -618
  338. package/examples/jsm/nodes/materialx/lib/mx_transform_color.js +29 -19
  339. package/examples/jsm/nodes/math/CondNode.js +86 -86
  340. package/examples/jsm/nodes/math/HashNode.js +34 -0
  341. package/examples/jsm/nodes/math/MathNode.js +382 -359
  342. package/examples/jsm/nodes/math/OperatorNode.js +266 -269
  343. package/examples/jsm/nodes/math/TriNoise3D.js +71 -0
  344. package/examples/jsm/nodes/parsers/GLSLNodeFunction.js +152 -152
  345. package/examples/jsm/nodes/parsers/GLSLNodeParser.js +14 -14
  346. package/examples/jsm/nodes/procedural/CheckerNode.js +42 -42
  347. package/examples/jsm/nodes/shadernode/ShaderNode.js +625 -420
  348. package/examples/jsm/nodes/utils/ArrayElementNode.js +41 -33
  349. package/examples/jsm/nodes/utils/ConvertNode.js +65 -65
  350. package/examples/jsm/nodes/utils/DiscardNode.js +27 -26
  351. package/examples/jsm/nodes/utils/EquirectUVNode.js +33 -33
  352. package/examples/jsm/nodes/utils/FunctionOverloadingNode.js +95 -0
  353. package/examples/jsm/nodes/utils/JoinNode.js +61 -51
  354. package/examples/jsm/nodes/utils/LoopNode.js +198 -186
  355. package/examples/jsm/nodes/utils/MatcapUVNode.js +30 -30
  356. package/examples/jsm/nodes/utils/MaxMipLevelNode.js +46 -46
  357. package/examples/jsm/nodes/utils/OscNode.js +81 -81
  358. package/examples/jsm/nodes/utils/PackingNode.js +55 -55
  359. package/examples/jsm/nodes/utils/RemapNode.js +42 -42
  360. package/examples/jsm/nodes/utils/RotateNode.js +43 -0
  361. package/examples/jsm/nodes/utils/RotateUVNode.js +43 -43
  362. package/examples/jsm/nodes/utils/SetNode.js +62 -0
  363. package/examples/jsm/nodes/utils/SpecularMIPLevelNode.js +37 -37
  364. package/examples/jsm/nodes/utils/SplitNode.js +112 -104
  365. package/examples/jsm/nodes/utils/SpriteSheetUVNode.js +41 -41
  366. package/examples/jsm/nodes/utils/TimerNode.js +94 -94
  367. package/examples/jsm/nodes/utils/TriplanarTexturesNode.js +62 -62
  368. package/examples/jsm/objects/GroundedSkybox.js +50 -0
  369. package/examples/jsm/objects/InstancedPoints.js +21 -0
  370. package/examples/jsm/objects/Lensflare.js +397 -377
  371. package/examples/jsm/objects/MarchingCubes.js +1176 -1176
  372. package/examples/jsm/objects/QuadMesh.js +66 -0
  373. package/examples/jsm/objects/Reflector.js +264 -272
  374. package/examples/jsm/objects/ReflectorForSSRPass.js +352 -349
  375. package/examples/jsm/objects/Refractor.js +327 -332
  376. package/examples/jsm/objects/ShadowMesh.js +80 -80
  377. package/examples/jsm/objects/Sky.js +219 -219
  378. package/examples/jsm/objects/Water.js +333 -330
  379. package/examples/jsm/objects/Water2.js +361 -358
  380. package/examples/jsm/offscreen/jank.js +45 -45
  381. package/examples/jsm/offscreen/offscreen.js +8 -8
  382. package/examples/jsm/offscreen/scene.js +86 -87
  383. package/examples/jsm/physics/AmmoPhysics.js +306 -285
  384. package/examples/jsm/physics/RapierPhysics.js +220 -199
  385. package/examples/jsm/postprocessing/AfterimagePass.js +104 -104
  386. package/examples/jsm/postprocessing/BloomPass.js +172 -172
  387. package/examples/jsm/postprocessing/BokehPass.js +141 -140
  388. package/examples/jsm/postprocessing/ClearPass.js +46 -46
  389. package/examples/jsm/postprocessing/CubeTexturePass.js +85 -85
  390. package/examples/jsm/postprocessing/DotScreenPass.js +65 -65
  391. package/examples/jsm/postprocessing/EffectComposer.js +231 -231
  392. package/examples/jsm/postprocessing/FilmPass.js +64 -66
  393. package/examples/jsm/postprocessing/GTAOPass.js +582 -0
  394. package/examples/jsm/postprocessing/GlitchPass.js +128 -128
  395. package/examples/jsm/postprocessing/HalftonePass.js +79 -79
  396. package/examples/jsm/postprocessing/LUTPass.js +174 -173
  397. package/examples/jsm/postprocessing/MaskPass.js +104 -101
  398. package/examples/jsm/postprocessing/OutlinePass.js +654 -654
  399. package/examples/jsm/postprocessing/OutputPass.js +95 -72
  400. package/examples/jsm/postprocessing/Pass.js +95 -84
  401. package/examples/jsm/postprocessing/RenderPass.js +99 -81
  402. package/examples/jsm/postprocessing/RenderPixelatedPass.js +235 -235
  403. package/examples/jsm/postprocessing/SAOPass.js +335 -411
  404. package/examples/jsm/postprocessing/SMAAPass.js +199 -201
  405. package/examples/jsm/postprocessing/SSAARenderPass.js +228 -228
  406. package/examples/jsm/postprocessing/SSAOPass.js +420 -440
  407. package/examples/jsm/postprocessing/SSRPass.js +641 -641
  408. package/examples/jsm/postprocessing/SavePass.js +79 -79
  409. package/examples/jsm/postprocessing/ShaderPass.js +77 -77
  410. package/examples/jsm/postprocessing/TAARenderPass.js +188 -189
  411. package/examples/jsm/postprocessing/TexturePass.js +67 -67
  412. package/examples/jsm/postprocessing/UnrealBloomPass.js +415 -411
  413. package/examples/jsm/renderers/CSS2DRenderer.js +215 -215
  414. package/examples/jsm/renderers/CSS3DRenderer.js +329 -335
  415. package/examples/jsm/renderers/Projector.js +918 -918
  416. package/examples/jsm/renderers/SVGRenderer.js +556 -553
  417. package/examples/jsm/renderers/common/Animation.js +47 -58
  418. package/examples/jsm/renderers/common/Attributes.js +75 -75
  419. package/examples/jsm/renderers/common/Backend.js +193 -162
  420. package/examples/jsm/renderers/common/Background.js +134 -134
  421. package/examples/jsm/renderers/common/Binding.js +25 -11
  422. package/examples/jsm/renderers/common/Bindings.js +173 -169
  423. package/examples/jsm/renderers/common/Buffer.js +38 -38
  424. package/examples/jsm/renderers/common/BufferUtils.js +33 -33
  425. package/examples/jsm/renderers/common/ChainMap.js +89 -89
  426. package/examples/jsm/renderers/common/Color4.js +37 -0
  427. package/examples/jsm/renderers/common/ComputePipeline.js +17 -17
  428. package/examples/jsm/renderers/common/Constants.js +14 -14
  429. package/examples/jsm/renderers/common/CubeRenderTarget.js +65 -65
  430. package/examples/jsm/renderers/common/DataMap.js +54 -54
  431. package/examples/jsm/renderers/common/Geometries.js +215 -215
  432. package/examples/jsm/renderers/common/Info.js +107 -73
  433. package/examples/jsm/renderers/common/Pipeline.js +13 -13
  434. package/examples/jsm/renderers/common/Pipelines.js +322 -321
  435. package/examples/jsm/renderers/common/PostProcessing.js +25 -0
  436. package/examples/jsm/renderers/common/ProgrammableStage.js +20 -18
  437. package/examples/jsm/renderers/common/RenderContext.js +41 -37
  438. package/examples/jsm/renderers/common/RenderContexts.js +74 -38
  439. package/examples/jsm/renderers/common/RenderList.js +186 -178
  440. package/examples/jsm/renderers/common/RenderLists.js +38 -38
  441. package/examples/jsm/renderers/common/RenderObject.js +178 -113
  442. package/examples/jsm/renderers/common/RenderObjects.js +91 -92
  443. package/examples/jsm/renderers/common/RenderPipeline.js +16 -16
  444. package/examples/jsm/renderers/common/Renderer.js +1062 -864
  445. package/examples/jsm/renderers/common/SampledTexture.js +83 -80
  446. package/examples/jsm/renderers/common/Sampler.js +18 -18
  447. package/examples/jsm/renderers/common/StorageBuffer.js +17 -17
  448. package/examples/jsm/renderers/common/StorageBufferAttribute.js +21 -0
  449. package/examples/jsm/renderers/common/StorageTexture.js +20 -0
  450. package/examples/jsm/renderers/common/Textures.js +354 -206
  451. package/examples/jsm/renderers/common/Uniform.js +140 -140
  452. package/examples/jsm/renderers/common/UniformBuffer.js +15 -15
  453. package/examples/jsm/renderers/common/UniformsGroup.js +299 -299
  454. package/examples/jsm/renderers/common/nodes/NodeBuilderState.js +44 -0
  455. package/examples/jsm/renderers/common/nodes/NodeSampledTexture.js +49 -39
  456. package/examples/jsm/renderers/common/nodes/NodeSampler.js +15 -21
  457. package/examples/jsm/renderers/common/nodes/NodeUniform.js +135 -135
  458. package/examples/jsm/renderers/common/nodes/NodeUniformsGroup.js +44 -0
  459. package/examples/jsm/renderers/common/nodes/Nodes.js +495 -319
  460. package/examples/jsm/renderers/webgl/WebGLBackend.js +1290 -0
  461. package/examples/jsm/renderers/webgl/nodes/GLSLNodeBuilder.js +679 -340
  462. package/examples/jsm/renderers/webgl/utils/WebGLAttributeUtils.js +252 -0
  463. package/examples/jsm/renderers/webgl/utils/WebGLCapabilities.js +36 -0
  464. package/examples/jsm/renderers/webgl/utils/WebGLConstants.js +11 -0
  465. package/examples/jsm/renderers/webgl/utils/WebGLExtensions.js +36 -0
  466. package/examples/jsm/renderers/webgl/utils/WebGLState.js +738 -0
  467. package/examples/jsm/renderers/webgl/utils/WebGLTextureUtils.js +647 -0
  468. package/examples/jsm/renderers/webgl/utils/WebGLUtils.js +284 -0
  469. package/examples/jsm/renderers/webgl-legacy/nodes/GLSL1NodeBuilder.js +320 -0
  470. package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/SlotNode.js +26 -26
  471. package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodeBuilder.js +794 -764
  472. package/examples/jsm/renderers/{webgl → webgl-legacy}/nodes/WebGLNodes.js +51 -49
  473. package/examples/jsm/renderers/webgpu/WebGPUBackend.js +1321 -847
  474. package/examples/jsm/renderers/webgpu/WebGPURenderer.js +53 -32
  475. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeBuilder.js +1098 -878
  476. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeFunction.js +104 -104
  477. package/examples/jsm/renderers/webgpu/nodes/WGSLNodeParser.js +14 -14
  478. package/examples/jsm/renderers/webgpu/utils/WebGPUAttributeUtils.js +287 -255
  479. package/examples/jsm/renderers/webgpu/utils/WebGPUBindingUtils.js +244 -145
  480. package/examples/jsm/renderers/webgpu/utils/WebGPUConstants.js +324 -322
  481. package/examples/jsm/renderers/webgpu/utils/WebGPUPipelineUtils.js +570 -580
  482. package/examples/jsm/renderers/webgpu/utils/WebGPUTexturePassUtils.js +285 -0
  483. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureUtils.js +1040 -937
  484. package/examples/jsm/renderers/webgpu/utils/WebGPUUtils.js +93 -92
  485. package/examples/jsm/shaders/ACESFilmicToneMappingShader.js +89 -87
  486. package/examples/jsm/shaders/AfterimageShader.js +58 -56
  487. package/examples/jsm/shaders/BasicShader.js +29 -27
  488. package/examples/jsm/shaders/BleachBypassShader.js +62 -62
  489. package/examples/jsm/shaders/BlendShader.js +49 -47
  490. package/examples/jsm/shaders/BokehShader.js +145 -143
  491. package/examples/jsm/shaders/BokehShader2.js +397 -393
  492. package/examples/jsm/shaders/BrightnessContrastShader.js +56 -54
  493. package/examples/jsm/shaders/ColorCorrectionShader.js +52 -50
  494. package/examples/jsm/shaders/ColorifyShader.js +51 -51
  495. package/examples/jsm/shaders/ConvolutionShader.js +103 -103
  496. package/examples/jsm/shaders/CopyShader.js +45 -45
  497. package/examples/jsm/shaders/DOFMipMapShader.js +56 -54
  498. package/examples/jsm/shaders/DepthLimitedBlurShader.js +171 -166
  499. package/examples/jsm/shaders/DigitalGlitch.js +101 -101
  500. package/examples/jsm/shaders/DotScreenShader.js +70 -70
  501. package/examples/jsm/shaders/ExposureShader.js +44 -44
  502. package/examples/jsm/shaders/FXAAShader.js +288 -286
  503. package/examples/jsm/shaders/FilmShader.js +59 -102
  504. package/examples/jsm/shaders/FocusShader.js +89 -87
  505. package/examples/jsm/shaders/FreiChenShader.js +96 -94
  506. package/examples/jsm/shaders/GTAOShader.js +424 -0
  507. package/examples/jsm/shaders/GammaCorrectionShader.js +43 -43
  508. package/examples/jsm/shaders/GodRaysShader.js +321 -313
  509. package/examples/jsm/shaders/HalftoneShader.js +312 -310
  510. package/examples/jsm/shaders/HorizontalBlurShader.js +59 -59
  511. package/examples/jsm/shaders/HorizontalTiltShiftShader.js +63 -61
  512. package/examples/jsm/shaders/HueSaturationShader.js +67 -65
  513. package/examples/jsm/shaders/KaleidoShader.js +58 -56
  514. package/examples/jsm/shaders/LuminosityHighPassShader.js +66 -64
  515. package/examples/jsm/shaders/LuminosityShader.js +48 -46
  516. package/examples/jsm/shaders/MMDToonShader.js +134 -132
  517. package/examples/jsm/shaders/MirrorShader.js +56 -54
  518. package/examples/jsm/shaders/NormalMapShader.js +55 -53
  519. package/examples/jsm/shaders/OutputShader.js +81 -61
  520. package/examples/jsm/shaders/PoissonDenoiseShader.js +226 -0
  521. package/examples/jsm/shaders/RGBShiftShader.js +54 -54
  522. package/examples/jsm/shaders/SAOShader.js +179 -188
  523. package/examples/jsm/shaders/SMAAShader.js +466 -460
  524. package/examples/jsm/shaders/SSAOShader.js +300 -288
  525. package/examples/jsm/shaders/SSRShader.js +370 -364
  526. package/examples/jsm/shaders/SepiaShader.js +52 -52
  527. package/examples/jsm/shaders/SobelOperatorShader.js +92 -90
  528. package/examples/jsm/shaders/SubsurfaceScatteringShader.js +90 -88
  529. package/examples/jsm/shaders/TechnicolorShader.js +45 -43
  530. package/examples/jsm/shaders/ToonShader.js +326 -326
  531. package/examples/jsm/shaders/TriangleBlurShader.js +74 -72
  532. package/examples/jsm/shaders/UnpackDepthRGBAShader.js +47 -45
  533. package/examples/jsm/shaders/VelocityShader.js +130 -128
  534. package/examples/jsm/shaders/VerticalBlurShader.js +59 -59
  535. package/examples/jsm/shaders/VerticalTiltShiftShader.js +63 -61
  536. package/examples/jsm/shaders/VignetteShader.js +51 -51
  537. package/examples/jsm/shaders/VolumeShader.js +289 -289
  538. package/examples/jsm/shaders/WaterRefractionShader.js +95 -93
  539. package/examples/jsm/textures/FlakesTexture.js +40 -40
  540. package/examples/jsm/transpiler/AST.js +270 -0
  541. package/examples/jsm/transpiler/GLSLDecoder.js +941 -0
  542. package/examples/jsm/transpiler/ShaderToyDecoder.js +49 -0
  543. package/examples/jsm/transpiler/TSLEncoder.js +715 -0
  544. package/examples/jsm/transpiler/Transpiler.js +18 -0
  545. package/examples/jsm/utils/BufferGeometryUtils.js +1371 -1364
  546. package/examples/jsm/utils/CameraUtils.js +73 -73
  547. package/examples/jsm/utils/GPUStatsPanel.js +128 -128
  548. package/examples/jsm/utils/GeometryCompressionUtils.js +639 -639
  549. package/examples/jsm/utils/GeometryUtils.js +221 -221
  550. package/examples/jsm/utils/LDrawUtils.js +202 -202
  551. package/examples/jsm/utils/PackedPhongMaterial.js +178 -178
  552. package/examples/jsm/utils/SceneUtils.js +254 -254
  553. package/examples/jsm/utils/ShadowMapViewer.js +210 -210
  554. package/examples/jsm/utils/SkeletonUtils.js +413 -413
  555. package/examples/jsm/utils/SortUtils.js +160 -0
  556. package/examples/jsm/utils/TextureUtils.js +98 -86
  557. package/examples/jsm/utils/UVsDebug.js +165 -165
  558. package/examples/jsm/utils/WorkerPool.js +102 -102
  559. package/examples/jsm/webxr/ARButton.js +232 -208
  560. package/examples/jsm/webxr/OculusHandModel.js +109 -109
  561. package/examples/jsm/webxr/OculusHandPointerModel.js +416 -415
  562. package/examples/jsm/webxr/Text2D.js +38 -38
  563. package/examples/jsm/webxr/VRButton.js +225 -200
  564. package/examples/jsm/webxr/XRButton.js +224 -198
  565. package/examples/jsm/webxr/XRControllerModelFactory.js +315 -310
  566. package/examples/jsm/webxr/XREstimatedLight.js +223 -223
  567. package/examples/jsm/webxr/XRHandMeshModel.js +116 -113
  568. package/examples/jsm/webxr/XRHandModelFactory.js +105 -105
  569. package/examples/jsm/webxr/XRHandPrimitiveModel.js +105 -104
  570. package/examples/jsm/webxr/XRPlanes.js +100 -100
  571. package/package.json +129 -126
  572. package/src/Three.Legacy.js +1 -1
  573. package/src/Three.js +184 -182
  574. package/src/animation/AnimationAction.js +700 -700
  575. package/src/animation/AnimationClip.js +473 -473
  576. package/src/animation/AnimationMixer.js +770 -770
  577. package/src/animation/AnimationObjectGroup.js +387 -387
  578. package/src/animation/AnimationUtils.js +356 -373
  579. package/src/animation/KeyframeTrack.js +462 -462
  580. package/src/animation/PropertyBinding.js +719 -719
  581. package/src/animation/PropertyMixer.js +318 -318
  582. package/src/animation/tracks/BooleanKeyframeTrack.js +19 -19
  583. package/src/animation/tracks/ColorKeyframeTrack.js +15 -15
  584. package/src/animation/tracks/NumberKeyframeTrack.js +12 -12
  585. package/src/animation/tracks/QuaternionKeyframeTrack.js +23 -23
  586. package/src/animation/tracks/StringKeyframeTrack.js +15 -15
  587. package/src/animation/tracks/VectorKeyframeTrack.js +12 -12
  588. package/src/audio/Audio.js +400 -396
  589. package/src/audio/AudioAnalyser.js +40 -40
  590. package/src/audio/AudioContext.js +25 -25
  591. package/src/audio/AudioListener.js +140 -137
  592. package/src/audio/PositionalAudio.js +146 -146
  593. package/src/cameras/ArrayCamera.js +17 -17
  594. package/src/cameras/Camera.js +69 -73
  595. package/src/cameras/CubeCamera.js +173 -170
  596. package/src/cameras/OrthographicCamera.js +136 -136
  597. package/src/cameras/PerspectiveCamera.js +268 -233
  598. package/src/cameras/StereoCamera.js +100 -100
  599. package/src/constants.js +216 -201
  600. package/src/core/BufferAttribute.js +650 -610
  601. package/src/core/BufferGeometry.js +1079 -1079
  602. package/src/core/Clock.js +74 -74
  603. package/src/core/EventDispatcher.js +87 -87
  604. package/src/core/GLBufferAttribute.js +60 -60
  605. package/src/core/InstancedBufferAttribute.js +39 -39
  606. package/src/core/InstancedBufferGeometry.js +40 -40
  607. package/src/core/InstancedInterleavedBuffer.js +48 -48
  608. package/src/core/InterleavedBuffer.js +166 -145
  609. package/src/core/InterleavedBufferAttribute.js +351 -331
  610. package/src/core/Layers.js +60 -60
  611. package/src/core/Object3D.js +1008 -973
  612. package/src/core/Raycaster.js +110 -110
  613. package/src/core/RenderTarget.js +131 -0
  614. package/src/core/Uniform.js +17 -17
  615. package/src/core/UniformsGroup.js +98 -92
  616. package/src/extras/DataUtils.js +176 -176
  617. package/src/extras/Earcut.js +789 -789
  618. package/src/extras/ImageUtils.js +129 -129
  619. package/src/extras/PMREMGenerator.js +910 -903
  620. package/src/extras/ShapeUtils.js +92 -92
  621. package/src/extras/core/Curve.js +416 -416
  622. package/src/extras/core/CurvePath.js +255 -252
  623. package/src/extras/core/Interpolations.js +79 -79
  624. package/src/extras/core/Path.js +196 -196
  625. package/src/extras/core/Shape.js +102 -102
  626. package/src/extras/core/ShapePath.js +291 -291
  627. package/src/extras/curves/ArcCurve.js +17 -17
  628. package/src/extras/curves/CatmullRomCurve3.js +255 -255
  629. package/src/extras/curves/CubicBezierCurve.js +78 -78
  630. package/src/extras/curves/CubicBezierCurve3.js +79 -79
  631. package/src/extras/curves/Curves.js +10 -10
  632. package/src/extras/curves/EllipseCurve.js +156 -156
  633. package/src/extras/curves/LineCurve.js +92 -92
  634. package/src/extras/curves/LineCurve3.js +92 -88
  635. package/src/extras/curves/QuadraticBezierCurve.js +74 -74
  636. package/src/extras/curves/QuadraticBezierCurve3.js +75 -75
  637. package/src/extras/curves/SplineCurve.js +97 -97
  638. package/src/geometries/BoxGeometry.js +180 -180
  639. package/src/geometries/CapsuleGeometry.js +33 -33
  640. package/src/geometries/CircleGeometry.js +101 -101
  641. package/src/geometries/ConeGeometry.js +31 -31
  642. package/src/geometries/CylinderGeometry.js +286 -286
  643. package/src/geometries/DodecahedronGeometry.js +66 -66
  644. package/src/geometries/EdgesGeometry.js +152 -152
  645. package/src/geometries/ExtrudeGeometry.js +814 -814
  646. package/src/geometries/Geometries.js +21 -21
  647. package/src/geometries/IcosahedronGeometry.js +42 -42
  648. package/src/geometries/LatheGeometry.js +189 -189
  649. package/src/geometries/OctahedronGeometry.js +37 -37
  650. package/src/geometries/PlaneGeometry.js +98 -98
  651. package/src/geometries/PolyhedronGeometry.js +319 -319
  652. package/src/geometries/RingGeometry.js +128 -128
  653. package/src/geometries/ShapeGeometry.js +195 -195
  654. package/src/geometries/SphereGeometry.js +137 -137
  655. package/src/geometries/TetrahedronGeometry.js +34 -34
  656. package/src/geometries/TorusGeometry.js +120 -120
  657. package/src/geometries/TorusKnotGeometry.js +167 -167
  658. package/src/geometries/TubeGeometry.js +203 -203
  659. package/src/geometries/WireframeGeometry.js +147 -147
  660. package/src/helpers/ArrowHelper.js +114 -114
  661. package/src/helpers/AxesHelper.js +68 -68
  662. package/src/helpers/Box3Helper.js +55 -55
  663. package/src/helpers/BoxHelper.js +113 -113
  664. package/src/helpers/CameraHelper.js +269 -269
  665. package/src/helpers/DirectionalLightHelper.js +93 -93
  666. package/src/helpers/GridHelper.js +56 -56
  667. package/src/helpers/HemisphereLightHelper.js +88 -88
  668. package/src/helpers/PlaneHelper.js +63 -63
  669. package/src/helpers/PointLightHelper.js +92 -92
  670. package/src/helpers/PolarGridHelper.js +96 -96
  671. package/src/helpers/SkeletonHelper.js +128 -128
  672. package/src/helpers/SpotLightHelper.js +94 -94
  673. package/src/lights/AmbientLight.js +17 -17
  674. package/src/lights/DirectionalLight.js +43 -43
  675. package/src/lights/DirectionalLightShadow.js +16 -16
  676. package/src/lights/HemisphereLight.js +34 -34
  677. package/src/lights/Light.js +58 -58
  678. package/src/lights/LightProbe.js +47 -47
  679. package/src/lights/LightShadow.js +147 -147
  680. package/src/lights/PointLight.js +57 -57
  681. package/src/lights/PointLightShadow.js +96 -96
  682. package/src/lights/RectAreaLight.js +56 -56
  683. package/src/lights/SpotLight.js +71 -71
  684. package/src/lights/SpotLightShadow.js +50 -50
  685. package/src/loaders/AnimationLoader.js +66 -66
  686. package/src/loaders/AudioLoader.js +66 -66
  687. package/src/loaders/BufferGeometryLoader.js +217 -224
  688. package/src/loaders/Cache.js +42 -42
  689. package/src/loaders/CompressedTextureLoader.js +134 -134
  690. package/src/loaders/CubeTextureLoader.js +58 -58
  691. package/src/loaders/DataTextureLoader.js +135 -118
  692. package/src/loaders/FileLoader.js +284 -284
  693. package/src/loaders/ImageBitmapLoader.js +123 -99
  694. package/src/loaders/ImageLoader.js +91 -91
  695. package/src/loaders/Loader.js +72 -72
  696. package/src/loaders/LoaderUtils.js +75 -75
  697. package/src/loaders/LoadingManager.js +142 -142
  698. package/src/loaders/MaterialLoader.js +372 -364
  699. package/src/loaders/ObjectLoader.js +1148 -1093
  700. package/src/loaders/TextureLoader.js +41 -41
  701. package/src/materials/LineBasicMaterial.js +53 -49
  702. package/src/materials/LineDashedMaterial.js +35 -35
  703. package/src/materials/Material.js +522 -508
  704. package/src/materials/Materials.js +39 -39
  705. package/src/materials/MeshBasicMaterial.js +85 -81
  706. package/src/materials/MeshDepthMaterial.js +54 -54
  707. package/src/materials/MeshDistanceMaterial.js +43 -43
  708. package/src/materials/MeshLambertMaterial.js +120 -116
  709. package/src/materials/MeshMatcapMaterial.js +85 -81
  710. package/src/materials/MeshNormalMaterial.js +61 -61
  711. package/src/materials/MeshPhongMaterial.js +124 -120
  712. package/src/materials/MeshPhysicalMaterial.js +224 -224
  713. package/src/materials/MeshStandardMaterial.js +128 -124
  714. package/src/materials/MeshToonMaterial.js +106 -102
  715. package/src/materials/PointsMaterial.js +54 -50
  716. package/src/materials/RawShaderMaterial.js +17 -17
  717. package/src/materials/ShaderMaterial.js +190 -187
  718. package/src/materials/ShadowMaterial.js +37 -37
  719. package/src/materials/SpriteMaterial.js +54 -54
  720. package/src/math/Box2.js +204 -204
  721. package/src/math/Box3.js +534 -517
  722. package/src/math/Color.js +623 -627
  723. package/src/math/ColorManagement.js +139 -133
  724. package/src/math/Cylindrical.js +61 -61
  725. package/src/math/Euler.js +315 -315
  726. package/src/math/Frustum.js +186 -186
  727. package/src/math/Interpolant.js +241 -241
  728. package/src/math/Line3.js +115 -115
  729. package/src/math/MathUtils.js +363 -363
  730. package/src/math/Matrix3.js +388 -388
  731. package/src/math/Matrix4.js +915 -915
  732. package/src/math/Plane.js +205 -205
  733. package/src/math/Quaternion.js +685 -684
  734. package/src/math/Ray.js +493 -493
  735. package/src/math/Sphere.js +245 -243
  736. package/src/math/Spherical.js +86 -86
  737. package/src/math/SphericalHarmonics3.js +243 -243
  738. package/src/math/Triangle.js +311 -329
  739. package/src/math/Vector2.js +480 -480
  740. package/src/math/Vector3.js +724 -725
  741. package/src/math/Vector4.js +644 -644
  742. package/src/math/interpolants/CubicInterpolant.js +150 -150
  743. package/src/math/interpolants/DiscreteInterpolant.js +26 -26
  744. package/src/math/interpolants/LinearInterpolant.js +38 -38
  745. package/src/math/interpolants/QuaternionLinearInterpolant.js +39 -39
  746. package/src/objects/BatchedMesh.js +1019 -0
  747. package/src/objects/Bone.js +17 -17
  748. package/src/objects/Group.js +17 -17
  749. package/src/objects/InstancedMesh.js +214 -214
  750. package/src/objects/LOD.js +214 -214
  751. package/src/objects/Line.js +222 -222
  752. package/src/objects/LineLoop.js +17 -17
  753. package/src/objects/LineSegments.js +55 -55
  754. package/src/objects/Mesh.js +429 -429
  755. package/src/objects/Points.js +166 -166
  756. package/src/objects/Skeleton.js +277 -279
  757. package/src/objects/SkinnedMesh.js +257 -266
  758. package/src/objects/Sprite.js +181 -181
  759. package/src/renderers/WebGL1Renderer.js +7 -7
  760. package/src/renderers/WebGL3DRenderTarget.js +22 -22
  761. package/src/renderers/WebGLArrayRenderTarget.js +22 -22
  762. package/src/renderers/WebGLCubeRenderTarget.js +155 -155
  763. package/src/renderers/WebGLMultipleRenderTargets.js +82 -84
  764. package/src/renderers/WebGLRenderTarget.js +15 -122
  765. package/src/renderers/WebGLRenderer.js +2631 -2439
  766. package/src/renderers/shaders/ShaderChunk/alphahash_fragment.glsl.js +7 -7
  767. package/src/renderers/shaders/ShaderChunk/alphahash_pars_fragment.glsl.js +68 -68
  768. package/src/renderers/shaders/ShaderChunk/alphamap_fragment.glsl.js +7 -7
  769. package/src/renderers/shaders/ShaderChunk/alphamap_pars_fragment.glsl.js +7 -7
  770. package/src/renderers/shaders/ShaderChunk/alphatest_fragment.glsl.js +16 -7
  771. package/src/renderers/shaders/ShaderChunk/alphatest_pars_fragment.glsl.js +5 -5
  772. package/src/renderers/shaders/ShaderChunk/aomap_fragment.glsl.js +26 -18
  773. package/src/renderers/shaders/ShaderChunk/aomap_pars_fragment.glsl.js +8 -8
  774. package/src/renderers/shaders/ShaderChunk/batching_pars_vertex.glsl.js +19 -0
  775. package/src/renderers/shaders/ShaderChunk/batching_vertex.glsl.js +5 -0
  776. package/src/renderers/shaders/ShaderChunk/begin_vertex.glsl.js +9 -9
  777. package/src/renderers/shaders/ShaderChunk/beginnormal_vertex.glsl.js +9 -9
  778. package/src/renderers/shaders/ShaderChunk/bsdfs.glsl.js +33 -33
  779. package/src/renderers/shaders/ShaderChunk/bumpmap_pars_fragment.glsl.js +43 -42
  780. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_begin.glsl.js +7 -7
  781. package/src/renderers/shaders/ShaderChunk/clearcoat_normal_fragment_maps.glsl.js +10 -10
  782. package/src/renderers/shaders/ShaderChunk/clearcoat_pars_fragment.glsl.js +21 -21
  783. package/src/renderers/shaders/ShaderChunk/clipping_planes_fragment.glsl.js +78 -33
  784. package/src/renderers/shaders/ShaderChunk/clipping_planes_pars_fragment.glsl.js +9 -9
  785. package/src/renderers/shaders/ShaderChunk/clipping_planes_pars_vertex.glsl.js +7 -7
  786. package/src/renderers/shaders/ShaderChunk/clipping_planes_vertex.glsl.js +7 -7
  787. package/src/renderers/shaders/ShaderChunk/color_fragment.glsl.js +11 -11
  788. package/src/renderers/shaders/ShaderChunk/color_pars_fragment.glsl.js +11 -11
  789. package/src/renderers/shaders/ShaderChunk/color_pars_vertex.glsl.js +11 -11
  790. package/src/renderers/shaders/ShaderChunk/color_vertex.glsl.js +23 -23
  791. package/src/renderers/shaders/ShaderChunk/colorspace_fragment.glsl.js +3 -3
  792. package/src/renderers/shaders/ShaderChunk/colorspace_pars_fragment.glsl.js +44 -11
  793. package/src/renderers/shaders/ShaderChunk/common.glsl.js +147 -156
  794. package/src/renderers/shaders/ShaderChunk/cube_uv_reflection_fragment.glsl.js +186 -191
  795. package/src/renderers/shaders/ShaderChunk/default_fragment.glsl.js +5 -5
  796. package/src/renderers/shaders/ShaderChunk/default_vertex.glsl.js +5 -5
  797. package/src/renderers/shaders/ShaderChunk/defaultnormal_vertex.glsl.js +63 -36
  798. package/src/renderers/shaders/ShaderChunk/displacementmap_pars_vertex.glsl.js +9 -9
  799. package/src/renderers/shaders/ShaderChunk/displacementmap_vertex.glsl.js +7 -7
  800. package/src/renderers/shaders/ShaderChunk/dithering_fragment.glsl.js +7 -7
  801. package/src/renderers/shaders/ShaderChunk/dithering_pars_fragment.glsl.js +20 -20
  802. package/src/renderers/shaders/ShaderChunk/emissivemap_fragment.glsl.js +9 -9
  803. package/src/renderers/shaders/ShaderChunk/emissivemap_pars_fragment.glsl.js +7 -7
  804. package/src/renderers/shaders/ShaderChunk/envmap_common_pars_fragment.glsl.js +14 -14
  805. package/src/renderers/shaders/ShaderChunk/envmap_fragment.glsl.js +62 -62
  806. package/src/renderers/shaders/ShaderChunk/envmap_pars_fragment.glsl.js +21 -21
  807. package/src/renderers/shaders/ShaderChunk/envmap_pars_vertex.glsl.js +22 -22
  808. package/src/renderers/shaders/ShaderChunk/envmap_physical_pars_fragment.glsl.js +69 -69
  809. package/src/renderers/shaders/ShaderChunk/envmap_vertex.glsl.js +37 -37
  810. package/src/renderers/shaders/ShaderChunk/fog_fragment.glsl.js +17 -17
  811. package/src/renderers/shaders/ShaderChunk/fog_pars_fragment.glsl.js +19 -19
  812. package/src/renderers/shaders/ShaderChunk/fog_pars_vertex.glsl.js +7 -7
  813. package/src/renderers/shaders/ShaderChunk/fog_vertex.glsl.js +7 -7
  814. package/src/renderers/shaders/ShaderChunk/gradientmap_pars_fragment.glsl.js +27 -27
  815. package/src/renderers/shaders/ShaderChunk/iridescence_fragment.glsl.js +120 -121
  816. package/src/renderers/shaders/ShaderChunk/iridescence_pars_fragment.glsl.js +14 -14
  817. package/src/renderers/shaders/ShaderChunk/lightmap_fragment.glsl.js +10 -10
  818. package/src/renderers/shaders/ShaderChunk/lightmap_pars_fragment.glsl.js +8 -8
  819. package/src/renderers/shaders/ShaderChunk/lights_fragment_begin.glsl.js +202 -198
  820. package/src/renderers/shaders/ShaderChunk/lights_fragment_end.glsl.js +13 -13
  821. package/src/renderers/shaders/ShaderChunk/lights_fragment_maps.glsl.js +40 -40
  822. package/src/renderers/shaders/ShaderChunk/lights_lambert_fragment.glsl.js +5 -5
  823. package/src/renderers/shaders/ShaderChunk/lights_lambert_pars_fragment.glsl.js +28 -28
  824. package/src/renderers/shaders/ShaderChunk/lights_pars_begin.glsl.js +228 -223
  825. package/src/renderers/shaders/ShaderChunk/lights_phong_fragment.glsl.js +7 -7
  826. package/src/renderers/shaders/ShaderChunk/lights_phong_pars_fragment.glsl.js +32 -32
  827. package/src/renderers/shaders/ShaderChunk/lights_physical_fragment.glsl.js +151 -146
  828. package/src/renderers/shaders/ShaderChunk/lights_physical_pars_fragment.glsl.js +562 -560
  829. package/src/renderers/shaders/ShaderChunk/lights_toon_fragment.glsl.js +4 -4
  830. package/src/renderers/shaders/ShaderChunk/lights_toon_pars_fragment.glsl.js +26 -26
  831. package/src/renderers/shaders/ShaderChunk/logdepthbuf_fragment.glsl.js +9 -9
  832. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_fragment.glsl.js +9 -9
  833. package/src/renderers/shaders/ShaderChunk/logdepthbuf_pars_vertex.glsl.js +16 -16
  834. package/src/renderers/shaders/ShaderChunk/logdepthbuf_vertex.glsl.js +22 -22
  835. package/src/renderers/shaders/ShaderChunk/map_fragment.glsl.js +21 -13
  836. package/src/renderers/shaders/ShaderChunk/map_pars_fragment.glsl.js +11 -11
  837. package/src/renderers/shaders/ShaderChunk/map_particle_fragment.glsl.js +27 -27
  838. package/src/renderers/shaders/ShaderChunk/map_particle_pars_fragment.glsl.js +27 -27
  839. package/src/renderers/shaders/ShaderChunk/metalnessmap_fragment.glsl.js +12 -12
  840. package/src/renderers/shaders/ShaderChunk/metalnessmap_pars_fragment.glsl.js +7 -7
  841. package/src/renderers/shaders/ShaderChunk/morphcolor_vertex.glsl.js +24 -24
  842. package/src/renderers/shaders/ShaderChunk/morphnormal_vertex.glsl.js +27 -27
  843. package/src/renderers/shaders/ShaderChunk/morphtarget_pars_vertex.glsl.js +38 -38
  844. package/src/renderers/shaders/ShaderChunk/morphtarget_vertex.glsl.js +36 -36
  845. package/src/renderers/shaders/ShaderChunk/normal_fragment_begin.glsl.js +76 -76
  846. package/src/renderers/shaders/ShaderChunk/normal_fragment_maps.glsl.js +33 -33
  847. package/src/renderers/shaders/ShaderChunk/normal_pars_fragment.glsl.js +14 -14
  848. package/src/renderers/shaders/ShaderChunk/normal_pars_vertex.glsl.js +14 -14
  849. package/src/renderers/shaders/ShaderChunk/normal_vertex.glsl.js +14 -14
  850. package/src/renderers/shaders/ShaderChunk/normalmap_pars_fragment.glsl.js +43 -43
  851. package/src/renderers/shaders/ShaderChunk/occlusion_fragment.glsl.js +20 -0
  852. package/src/renderers/shaders/ShaderChunk/occlusion_pars_fragment.glsl.js +97 -0
  853. package/src/renderers/shaders/ShaderChunk/opaque_fragment.glsl.js +11 -11
  854. package/src/renderers/shaders/ShaderChunk/packing.glsl.js +68 -68
  855. package/src/renderers/shaders/ShaderChunk/premultiplied_alpha_fragment.glsl.js +8 -8
  856. package/src/renderers/shaders/ShaderChunk/project_vertex.glsl.js +19 -13
  857. package/src/renderers/shaders/ShaderChunk/roughnessmap_fragment.glsl.js +12 -12
  858. package/src/renderers/shaders/ShaderChunk/roughnessmap_pars_fragment.glsl.js +7 -7
  859. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_fragment.glsl.js +314 -314
  860. package/src/renderers/shaders/ShaderChunk/shadowmap_pars_vertex.glsl.js +68 -68
  861. package/src/renderers/shaders/ShaderChunk/shadowmap_vertex.glsl.js +68 -68
  862. package/src/renderers/shaders/ShaderChunk/shadowmask_pars_fragment.glsl.js +66 -66
  863. package/src/renderers/shaders/ShaderChunk/skinbase_vertex.glsl.js +10 -10
  864. package/src/renderers/shaders/ShaderChunk/skinning_pars_vertex.glsl.js +25 -33
  865. package/src/renderers/shaders/ShaderChunk/skinning_vertex.glsl.js +15 -15
  866. package/src/renderers/shaders/ShaderChunk/skinnormal_vertex.glsl.js +20 -20
  867. package/src/renderers/shaders/ShaderChunk/specularmap_fragment.glsl.js +14 -14
  868. package/src/renderers/shaders/ShaderChunk/specularmap_pars_fragment.glsl.js +7 -7
  869. package/src/renderers/shaders/ShaderChunk/tonemapping_fragment.glsl.js +7 -7
  870. package/src/renderers/shaders/ShaderChunk/tonemapping_pars_fragment.glsl.js +169 -77
  871. package/src/renderers/shaders/ShaderChunk/transmission_fragment.glsl.js +36 -36
  872. package/src/renderers/shaders/ShaderChunk/transmission_pars_fragment.glsl.js +201 -201
  873. package/src/renderers/shaders/ShaderChunk/uv_pars_fragment.glsl.js +119 -119
  874. package/src/renderers/shaders/ShaderChunk/uv_pars_vertex.glsl.js +145 -145
  875. package/src/renderers/shaders/ShaderChunk/uv_vertex.glsl.js +122 -122
  876. package/src/renderers/shaders/ShaderChunk/worldpos_vertex.glsl.js +21 -15
  877. package/src/renderers/shaders/ShaderChunk.js +274 -266
  878. package/src/renderers/shaders/ShaderLib/background.glsl.js +40 -32
  879. package/src/renderers/shaders/ShaderLib/backgroundCube.glsl.js +62 -62
  880. package/src/renderers/shaders/ShaderLib/cube.glsl.js +36 -36
  881. package/src/renderers/shaders/ShaderLib/depth.glsl.js +95 -94
  882. package/src/renderers/shaders/ShaderLib/distanceRGBA.glsl.js +76 -75
  883. package/src/renderers/shaders/ShaderLib/equirect.glsl.js +35 -35
  884. package/src/renderers/shaders/ShaderLib/linedashed.glsl.js +77 -75
  885. package/src/renderers/shaders/ShaderLib/meshbasic.glsl.js +117 -114
  886. package/src/renderers/shaders/ShaderLib/meshlambert.glsl.js +126 -122
  887. package/src/renderers/shaders/ShaderLib/meshmatcap.glsl.js +113 -109
  888. package/src/renderers/shaders/ShaderLib/meshnormal.glsl.js +89 -82
  889. package/src/renderers/shaders/ShaderLib/meshphong.glsl.js +128 -124
  890. package/src/renderers/shaders/ShaderLib/meshphysical.glsl.js +226 -222
  891. package/src/renderers/shaders/ShaderLib/meshtoon.glsl.js +120 -116
  892. package/src/renderers/shaders/ShaderLib/points.glsl.js +88 -86
  893. package/src/renderers/shaders/ShaderLib/shadow.glsl.js +57 -54
  894. package/src/renderers/shaders/ShaderLib/sprite.glsl.js +81 -81
  895. package/src/renderers/shaders/ShaderLib/vsm.glsl.js +53 -53
  896. package/src/renderers/shaders/ShaderLib.js +367 -359
  897. package/src/renderers/shaders/UniformsLib.js +236 -230
  898. package/src/renderers/shaders/UniformsUtils.js +104 -104
  899. package/src/renderers/webgl/WebGLAnimation.js +53 -53
  900. package/src/renderers/webgl/WebGLAttributes.js +229 -195
  901. package/src/renderers/webgl/WebGLBackground.js +239 -247
  902. package/src/renderers/webgl/WebGLBindingStates.js +631 -631
  903. package/src/renderers/webgl/WebGLBufferRenderer.js +92 -61
  904. package/src/renderers/webgl/WebGLCapabilities.js +120 -120
  905. package/src/renderers/webgl/WebGLClipping.js +171 -171
  906. package/src/renderers/webgl/WebGLCubeMaps.js +99 -99
  907. package/src/renderers/webgl/WebGLCubeUVMaps.js +132 -130
  908. package/src/renderers/webgl/WebGLExtensions.js +97 -96
  909. package/src/renderers/webgl/WebGLGeometries.js +211 -207
  910. package/src/renderers/webgl/WebGLIndexedBufferRenderer.js +102 -71
  911. package/src/renderers/webgl/WebGLInfo.js +71 -71
  912. package/src/renderers/webgl/WebGLLights.js +590 -570
  913. package/src/renderers/webgl/WebGLMaterials.js +576 -567
  914. package/src/renderers/webgl/WebGLMorphtargets.js +300 -300
  915. package/src/renderers/webgl/WebGLObjects.js +92 -92
  916. package/src/renderers/webgl/WebGLProgram.js +1112 -1002
  917. package/src/renderers/webgl/WebGLPrograms.js +663 -625
  918. package/src/renderers/webgl/WebGLProperties.js +48 -48
  919. package/src/renderers/webgl/WebGLRenderLists.js +238 -238
  920. package/src/renderers/webgl/WebGLRenderStates.js +107 -107
  921. package/src/renderers/webgl/WebGLShader.js +12 -12
  922. package/src/renderers/webgl/WebGLShaderCache.js +124 -124
  923. package/src/renderers/webgl/WebGLShadowMap.js +424 -389
  924. package/src/renderers/webgl/WebGLState.js +1328 -1307
  925. package/src/renderers/webgl/WebGLTextures.js +2117 -2017
  926. package/src/renderers/webgl/WebGLUniforms.js +1156 -1146
  927. package/src/renderers/webgl/WebGLUniformsGroups.js +392 -413
  928. package/src/renderers/webgl/WebGLUtils.js +283 -278
  929. package/src/renderers/webxr/WebXRController.js +343 -343
  930. package/src/renderers/webxr/WebXRManager.js +840 -770
  931. package/src/scenes/Fog.js +38 -37
  932. package/src/scenes/FogExp2.js +35 -34
  933. package/src/scenes/Scene.js +63 -63
  934. package/src/textures/CanvasTexture.js +17 -17
  935. package/src/textures/CompressedArrayTexture.js +18 -18
  936. package/src/textures/CompressedCubeTexture.js +19 -0
  937. package/src/textures/CompressedTexture.js +28 -28
  938. package/src/textures/CubeTexture.js +33 -33
  939. package/src/textures/Data3DTexture.js +35 -35
  940. package/src/textures/DataArrayTexture.js +27 -27
  941. package/src/textures/DataTexture.js +22 -22
  942. package/src/textures/DepthTexture.js +58 -58
  943. package/src/textures/FramebufferTexture.js +23 -23
  944. package/src/textures/Source.js +127 -127
  945. package/src/textures/Texture.js +338 -338
  946. package/src/textures/VideoTexture.js +55 -55
  947. package/src/utils.js +91 -83
  948. package/build/three.js +0 -51661
  949. package/build/three.min.js +0 -7
  950. package/examples/jsm/nodes/accessors/ExtendedMaterialNode.js +0 -64
  951. package/examples/jsm/nodes/functions/BSDF/BRDF_BlinnPhong.js +0 -30
  952. package/examples/jsm/objects/GroundProjectedSkybox.js +0 -172
  953. package/examples/jsm/renderers/common/RenderTarget.js +0 -15
  954. package/examples/jsm/renderers/common/nodes/NodeRender.js +0 -302
  955. package/examples/jsm/renderers/webgpu/utils/WebGPUTextureMipmapUtils.js +0 -163
  956. package/src/lights/AmbientLightProbe.js +0 -21
  957. package/src/lights/HemisphereLightProbe.js +0 -30
@@ -1,2474 +1,2474 @@
1
- /*!
2
- fflate - fast JavaScript compression/decompression
3
- <https://101arrowz.github.io/fflate>
4
- Licensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE
5
- version 0.6.9
6
- */
7
-
8
- // DEFLATE is a complex format; to read this code, you should probably check the RFC first:
9
- // https://tools.ietf.org/html/rfc1951
10
- // You may also wish to take a look at the guide I made about this program:
11
- // https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad
12
- // Some of the following code is similar to that of UZIP.js:
13
- // https://github.com/photopea/UZIP.js
14
- // However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.
15
- // Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint
16
- // is better for memory in most engines (I *think*).
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
- 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); };
33
- w.postMessage(msg, transfer);
34
- return w;
35
- });
36
-
37
- // aliases for shorter compressed code (most minifers don't do this)
38
- var u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;
39
- // fixed length extra bits
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
- // fixed distance extra bits
42
- // see fleb note
43
- 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
- // code length index map
45
- var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
46
- // get base, reverse index map from extra bits
47
- var freb = function (eb, start) {
48
- var b = new u16(31);
49
- for (var i = 0; i < 31; ++i) {
50
- b[i] = start += 1 << eb[i - 1];
51
- }
52
- // numbers here are at max 18 bits
53
- var r = new u32(b[30]);
54
- for (var i = 1; i < 30; ++i) {
55
- for (var j = b[i]; j < b[i + 1]; ++j) {
56
- r[j] = ((j - b[i]) << 5) | i;
57
- }
58
- }
59
- return [b, r];
60
- };
61
- var _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];
62
- // we can ignore the fact that the other numbers are wrong; they never happen anyway
63
- fl[28] = 258, revfl[258] = 28;
64
- var _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1];
65
- // map of value to reverse (assuming 16 bits)
66
- var rev = new u16(32768);
67
- for (var i = 0; i < 32768; ++i) {
68
- // 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;
73
- }
74
- // create huffman tree from u8 "map": index -> code length for code index
75
- // mb (max bits) must be at most 15
76
- // TODO: optimize/split up?
77
- var hMap = (function (cd, mb, r) {
78
- var s = cd.length;
79
- // index
80
- var i = 0;
81
- // u16 "map": index -> # of codes with bit length = index
82
- var l = new u16(mb);
83
- // length of cd must be 288 (total # of codes)
84
- for (; i < s; ++i)
85
- ++l[cd[i] - 1];
86
- // u16 "map": index -> minimum code for bit length = index
87
- var le = new u16(mb);
88
- for (i = 0; i < mb; ++i) {
89
- le[i] = (le[i - 1] + l[i - 1]) << 1;
90
- }
91
- var co;
92
- if (r) {
93
- // u16 "map": index -> number of actual bits, symbol for code
94
- co = new u16(1 << mb);
95
- // bits to remove for reverser
96
- var rvb = 15 - mb;
97
- for (i = 0; i < s; ++i) {
98
- // ignore 0 lengths
99
- if (cd[i]) {
100
- // num encoding both symbol and bits read
101
- var sv = (i << 4) | cd[i];
102
- // free bits
103
- var r_1 = mb - cd[i];
104
- // start value
105
- var v = le[cd[i] - 1]++ << r_1;
106
- // m is end value
107
- for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {
108
- // every 16 bit value starting with the code yields the same result
109
- co[rev[v] >>> rvb] = sv;
110
- }
111
- }
112
- }
113
- }
114
- else {
115
- co = new u16(s);
116
- for (i = 0; i < s; ++i) {
117
- if (cd[i]) {
118
- co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]);
119
- }
120
- }
121
- }
122
- return co;
123
- });
124
- // fixed length tree
125
- var flt = new u8(288);
126
- for (var i = 0; i < 144; ++i)
127
- flt[i] = 8;
128
- for (var i = 144; i < 256; ++i)
129
- flt[i] = 9;
130
- for (var i = 256; i < 280; ++i)
131
- flt[i] = 7;
132
- for (var i = 280; i < 288; ++i)
133
- flt[i] = 8;
134
- // fixed distance tree
135
- var fdt = new u8(32);
136
- for (var i = 0; i < 32; ++i)
137
- fdt[i] = 5;
138
- // fixed length map
139
- var flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);
140
- // fixed distance map
141
- var fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);
142
- // find max of array
143
- var max = function (a) {
144
- var m = a[0];
145
- for (var i = 1; i < a.length; ++i) {
146
- if (a[i] > m)
147
- m = a[i];
148
- }
149
- return m;
150
- };
151
- // read d, starting at bit p and mask with m
152
- var bits = function (d, p, m) {
153
- var o = (p / 8) | 0;
154
- return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;
155
- };
156
- // read d, starting at bit p continuing for at least 16 bits
157
- var bits16 = function (d, p) {
158
- var o = (p / 8) | 0;
159
- return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));
160
- };
161
- // get end of byte
162
- var shft = function (p) { return ((p / 8) | 0) + (p & 7 && 1); };
163
- // typed array slice - allows garbage collector to free original reference,
164
- // while being more compatible than .slice
165
- var slc = function (v, s, e) {
166
- if (s == null || s < 0)
167
- s = 0;
168
- if (e == null || e > v.length)
169
- e = v.length;
170
- // 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;
174
- };
175
- // 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))
180
- return buf || new u8(0);
181
- // have to estimate size
182
- var noBuf = !buf || st;
183
- // no state
184
- var noSt = !st || st.i;
185
- if (!st)
186
- st = {};
187
- // Assumes roughly 33% compression ratio average
188
- if (!buf)
189
- buf = new u8(sl * 3);
190
- // ensure buffer can fit at least l elements
191
- var cbuf = function (l) {
192
- var bl = buf.length;
193
- // need to increase size to fit
194
- if (l > bl) {
195
- // Double or set to necessary, whichever is greater
196
- var nbuf = new u8(Math.max(bl * 2, l));
197
- nbuf.set(buf);
198
- buf = nbuf;
199
- }
200
- };
201
- // last chunk bitpos bytes
202
- var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;
203
- // total bits
204
- var tbts = sl * 8;
205
- do {
206
- if (!lm) {
207
- // BFINAL - this is only 1 when last chunk is next
208
- st.f = final = bits(dat, pos, 1);
209
- // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman
210
- var type = bits(dat, pos + 1, 3);
211
- pos += 3;
212
- if (!type) {
213
- // go to end of byte boundary
214
- var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;
215
- if (t > sl) {
216
- if (noSt)
217
- throw 'unexpected EOF';
218
- break;
219
- }
220
- // ensure size
221
- if (noBuf)
222
- cbuf(bt + l);
223
- // Copy over uncompressed data
224
- buf.set(dat.subarray(s, t), bt);
225
- // Get new bitpos, update byte count
226
- st.b = bt += l, st.p = pos = t * 8;
227
- continue;
228
- }
229
- else if (type == 1)
230
- lm = flrm, dm = fdrm, lbt = 9, dbt = 5;
231
- else if (type == 2) {
232
- // literal lengths
233
- var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;
234
- var tl = hLit + bits(dat, pos + 5, 31) + 1;
235
- pos += 14;
236
- // length+distance tree
237
- var ldt = new u8(tl);
238
- // code length tree
239
- var clt = new u8(19);
240
- for (var i = 0; i < hcLen; ++i) {
241
- // use index map to get real code
242
- clt[clim[i]] = bits(dat, pos + i * 3, 7);
243
- }
244
- pos += hcLen * 3;
245
- // code lengths bits
246
- var clb = max(clt), clbmsk = (1 << clb) - 1;
247
- // code lengths map
248
- var clm = hMap(clt, clb, 1);
249
- for (var i = 0; i < tl;) {
250
- var r = clm[bits(dat, pos, clbmsk)];
251
- // bits read
252
- pos += r & 15;
253
- // symbol
254
- var s = r >>> 4;
255
- // code length to copy
256
- if (s < 16) {
257
- ldt[i++] = s;
258
- }
259
- else {
260
- // copy count
261
- var c = 0, n = 0;
262
- if (s == 16)
263
- n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];
264
- else if (s == 17)
265
- n = 3 + bits(dat, pos, 7), pos += 3;
266
- else if (s == 18)
267
- n = 11 + bits(dat, pos, 127), pos += 7;
268
- while (n--)
269
- ldt[i++] = c;
270
- }
271
- }
272
- // length tree distance tree
273
- var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);
274
- // max length bits
275
- lbt = max(lt);
276
- // max dist bits
277
- dbt = max(dt);
278
- lm = hMap(lt, lbt, 1);
279
- dm = hMap(dt, dbt, 1);
280
- }
281
- else
282
- throw 'invalid block type';
283
- if (pos > tbts) {
284
- if (noSt)
285
- throw 'unexpected EOF';
286
- break;
287
- }
288
- }
289
- // Make sure the buffer can hold this + the largest possible addition
290
- // Maximum chunk size (practically, theoretically infinite) is 2^17;
291
- if (noBuf)
292
- cbuf(bt + 131072);
293
- var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
294
- var lpos = pos;
295
- for (;; lpos = pos) {
296
- // bits read, code
297
- var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;
298
- pos += c & 15;
299
- if (pos > tbts) {
300
- if (noSt)
301
- throw 'unexpected EOF';
302
- break;
303
- }
304
- if (!c)
305
- throw 'invalid length/literal';
306
- if (sym < 256)
307
- buf[bt++] = sym;
308
- else if (sym == 256) {
309
- lpos = pos, lm = null;
310
- break;
311
- }
312
- else {
313
- var add = sym - 254;
314
- // no extra bits needed if less
315
- if (sym > 264) {
316
- // index
317
- var i = sym - 257, b = fleb[i];
318
- add = bits(dat, pos, (1 << b) - 1) + fl[i];
319
- pos += b;
320
- }
321
- // dist
322
- var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;
323
- if (!d)
324
- throw 'invalid distance';
325
- pos += d & 15;
326
- var dt = fd[dsym];
327
- if (dsym > 3) {
328
- var b = fdeb[dsym];
329
- dt += bits16(dat, pos) & ((1 << b) - 1), pos += b;
330
- }
331
- if (pos > tbts) {
332
- if (noSt)
333
- throw 'unexpected EOF';
334
- break;
335
- }
336
- if (noBuf)
337
- cbuf(bt + 131072);
338
- 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];
344
- }
345
- bt = end;
346
- }
347
- }
348
- st.l = lm, st.p = lpos, st.b = bt;
349
- if (lm)
350
- final = 1, st.m = lbt, st.d = dm, st.n = dbt;
351
- } while (!final);
352
- return bt == buf.length ? buf : slc(buf, 0, bt);
353
- };
354
- // starting at p, write the minimum number of bits that can hold v to d
355
- var wbits = function (d, p, v) {
356
- v <<= p & 7;
357
- var o = (p / 8) | 0;
358
- d[o] |= v;
359
- d[o + 1] |= v >>> 8;
360
- };
361
- // starting at p, write the minimum number of bits (>8) that can hold v to d
362
- var wbits16 = function (d, p, v) {
363
- v <<= p & 7;
364
- var o = (p / 8) | 0;
365
- d[o] |= v;
366
- d[o + 1] |= v >>> 8;
367
- d[o + 2] |= v >>> 16;
368
- };
369
- // creates code lengths from a frequency table
370
- var hTree = function (d, mb) {
371
- // Need extra info to make a tree
372
- var t = [];
373
- for (var i = 0; i < d.length; ++i) {
374
- if (d[i])
375
- t.push({ s: i, f: d[i] });
376
- }
377
- var s = t.length;
378
- var t2 = t.slice();
379
- if (!s)
380
- return [et, 0];
381
- if (s == 1) {
382
- var v = new u8(t[0].s + 1);
383
- v[t[0].s] = 1;
384
- return [v, 1];
385
- }
386
- t.sort(function (a, b) { return a.f - b.f; });
387
- // after i2 reaches last ind, will be stopped
388
- // freq must be greater than largest possible number of symbols
389
- t.push({ s: -1, f: 25001 });
390
- var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;
391
- t[0] = { s: -1, f: l.f + r.f, l: l, r: r };
392
- // efficient algorithm from UZIP.js
393
- // i0 is lookbehind, i2 is lookahead - after processing two low-freq
394
- // symbols that combined have high freq, will start processing i2 (high-freq,
395
- // non-composite) symbols instead
396
- // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/
397
- while (i1 != s - 1) {
398
- l = t[t[i0].f < t[i2].f ? i0++ : i2++];
399
- r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];
400
- t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };
401
- }
402
- var maxSym = t2[0].s;
403
- for (var i = 1; i < s; ++i) {
404
- if (t2[i].s > maxSym)
405
- maxSym = t2[i].s;
406
- }
407
- // code lengths
408
- var tr = new u16(maxSym + 1);
409
- // max bits in tree
410
- var mbt = ln(t[i1 - 1], tr, 0);
411
- if (mbt > mb) {
412
- // more algorithms from UZIP.js
413
- // TODO: find out how this code works (debt)
414
- // ind debt
415
- var i = 0, dt = 0;
416
- // left cost
417
- var lft = mbt - mb, cst = 1 << lft;
418
- t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });
419
- for (; i < s; ++i) {
420
- var i2_1 = t2[i].s;
421
- if (tr[i2_1] > mb) {
422
- dt += cst - (1 << (mbt - tr[i2_1]));
423
- tr[i2_1] = mb;
424
- }
425
- else
426
- break;
427
- }
428
- dt >>>= lft;
429
- while (dt > 0) {
430
- var i2_2 = t2[i].s;
431
- if (tr[i2_2] < mb)
432
- dt -= 1 << (mb - tr[i2_2]++ - 1);
433
- else
434
- ++i;
435
- }
436
- for (; i >= 0 && dt; --i) {
437
- var i2_3 = t2[i].s;
438
- if (tr[i2_3] == mb) {
439
- --tr[i2_3];
440
- ++dt;
441
- }
442
- }
443
- mbt = mb;
444
- }
445
- return [new u8(tr), mbt];
446
- };
447
- // get the max length and assign length codes
448
- var ln = function (n, l, d) {
449
- return n.s == -1
450
- ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))
451
- : (l[n.s] = d);
452
- };
453
- // length codes generation
454
- var lc = function (c) {
455
- var s = c.length;
456
- // Note that the semicolon was intentional
457
- while (s && !c[--s])
458
- ;
459
- var cl = new u16(++s);
460
- // ind num streak
461
- var cli = 0, cln = c[0], cls = 1;
462
- var w = function (v) { cl[cli++] = v; };
463
- for (var i = 1; i <= s; ++i) {
464
- if (c[i] == cln && i != s)
465
- ++cls;
466
- else {
467
- if (!cln && cls > 2) {
468
- for (; cls > 138; cls -= 138)
469
- w(32754);
470
- if (cls > 2) {
471
- w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);
472
- cls = 0;
473
- }
474
- }
475
- else if (cls > 3) {
476
- w(cln), --cls;
477
- for (; cls > 6; cls -= 6)
478
- w(8304);
479
- if (cls > 2)
480
- w(((cls - 3) << 5) | 8208), cls = 0;
481
- }
482
- while (cls--)
483
- w(cln);
484
- cls = 1;
485
- cln = c[i];
486
- }
487
- }
488
- return [cl.subarray(0, cli), s];
489
- };
490
- // calculate the length of output from tree, code lengths
491
- var clen = function (cf, cl) {
492
- var l = 0;
493
- for (var i = 0; i < cl.length; ++i)
494
- l += cf[i] * cl[i];
495
- return l;
496
- };
497
- // writes a fixed block
498
- // returns the new bit pos
499
- var wfblk = function (out, pos, dat) {
500
- // no need to write 00 as type: TypedArray defaults to 0
501
- var s = dat.length;
502
- var o = shft(pos + 2);
503
- out[o] = s & 255;
504
- out[o + 1] = s >>> 8;
505
- out[o + 2] = out[o] ^ 255;
506
- out[o + 3] = out[o + 1] ^ 255;
507
- for (var i = 0; i < s; ++i)
508
- out[o + i + 4] = dat[i];
509
- return (o + 4 + s) * 8;
510
- };
511
- // writes a block
512
- var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {
513
- wbits(out, p++, final);
514
- ++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];
519
- var lcfreq = new u16(19);
520
- for (var i = 0; i < lclt.length; ++i)
521
- lcfreq[lclt[i] & 31]++;
522
- 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];
525
- var nlcc = 19;
526
- for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)
527
- ;
528
- var flen = (bl + 5) << 3;
529
- 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)
532
- return wfblk(out, p, dat.subarray(bs, bs + bl));
533
- var lm, ll, dm, dl;
534
- wbits(out, p, 1 + (dtlen < ftlen)), p += 2;
535
- if (dtlen < ftlen) {
536
- lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;
537
- var llm = hMap(lct, mlcb, 0);
538
- wbits(out, p, nlc - 257);
539
- wbits(out, p + 5, ndc - 1);
540
- wbits(out, p + 10, nlcc - 4);
541
- p += 14;
542
- for (var i = 0; i < nlcc; ++i)
543
- wbits(out, p + 3 * i, lct[clim[i]]);
544
- p += 3 * nlcc;
545
- var lcts = [lclt, lcdt];
546
- for (var it = 0; it < 2; ++it) {
547
- var clct = lcts[it];
548
- for (var i = 0; i < clct.length; ++i) {
549
- var len = clct[i] & 31;
550
- wbits(out, p, llm[len]), p += lct[len];
551
- if (len > 15)
552
- wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12;
553
- }
554
- }
555
- }
556
- else {
557
- lm = flm, ll = flt, dm = fdm, dl = fdt;
558
- }
559
- for (var i = 0; i < li; ++i) {
560
- if (syms[i] > 255) {
561
- var len = (syms[i] >>> 18) & 31;
562
- wbits16(out, p, lm[len + 257]), p += ll[len + 257];
563
- if (len > 7)
564
- wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len];
565
- var dst = syms[i] & 31;
566
- wbits16(out, p, dm[dst]), p += dl[dst];
567
- if (dst > 3)
568
- wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst];
569
- }
570
- else {
571
- wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];
572
- }
573
- }
574
- wbits16(out, p, lm[256]);
575
- return p + ll[256];
576
- };
577
- // deflate options (nice << 13) | chain
578
- var deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);
579
- // empty
580
- var et = /*#__PURE__*/ new u8(0);
581
- // compresses data into a raw DEFLATE buffer
582
- var dflt = function (dat, lvl, plvl, pre, post, lst) {
583
- var s = dat.length;
584
- var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);
585
- // writing to this writes to the output buffer
586
- 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 {
604
- var opt = deo[lvl - 1];
605
- var n = opt >>> 13, c = opt & 8191;
606
- var msk_1 = (1 << plvl) - 1;
607
- // prev 2-byte val map curr 2-byte val map
608
- var prev = new u16(32768), head = new u16(msk_1 + 1);
609
- var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;
610
- var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };
611
- // 24576 is an arbitrary number of maximum symbols per block
612
- // 424 buffer for last block
613
- var syms = new u32(25000);
614
- // length/literal freq distance freq
615
- 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) {
619
- // hash value
620
- // deopt when i > s - 3 - at end, deopt acceptable
621
- var hv = hsh(i);
622
- // index mod 32768 previous index mod
623
- var imod = i & 32767, pimod = head[hv];
624
- prev[imod] = pimod;
625
- head[hv] = imod;
626
- // We always should modify head and prev, but only add symbols if
627
- // this data is not yet processed ("wait" for wait index)
628
- if (wi <= i) {
629
- // bytes remaining
630
- var rem = s - i;
631
- if ((lc_1 > 7000 || li > 24576) && rem > 423) {
632
- pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);
633
- li = lc_1 = eb = 0, bs = i;
634
- for (var j = 0; j < 286; ++j)
635
- lf[j] = 0;
636
- for (var j = 0; j < 30; ++j)
637
- df[j] = 0;
638
- }
639
- // len dist chain
640
- var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767;
641
- if (rem > 2 && hv == hsh(i - dif)) {
642
- var maxn = Math.min(n, rem) - 1;
643
- var maxd = Math.min(32767, i);
644
- // max possible length
645
- // not capped at dif because decompressors implement "rolling" index population
646
- var ml = Math.min(258, rem);
647
- while (dif <= maxd && --ch_1 && imod != pimod) {
648
- if (dat[i + l] == dat[i + l - dif]) {
649
- var nl = 0;
650
- for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)
651
- ;
652
- if (nl > l) {
653
- l = nl, d = dif;
654
- // break out early when we reach "nice" (we are satisfied enough)
655
- if (nl > maxn)
656
- break;
657
- // now, find the rarest 2-byte sequence within this
658
- // length of literals and search for that instead.
659
- // Much faster than just using the start
660
- var mmd = Math.min(dif, nl - 2);
661
- var md = 0;
662
- for (var j = 0; j < mmd; ++j) {
663
- var ti = (i - dif + j + 32768) & 32767;
664
- var pti = prev[ti];
665
- var cd = (ti - pti + 32768) & 32767;
666
- if (cd > md)
667
- md = cd, pimod = ti;
668
- }
669
- }
670
- }
671
- // check the previous match
672
- imod = pimod, pimod = prev[imod];
673
- dif += (imod - pimod + 32768) & 32767;
674
- }
675
- }
676
- // d will be nonzero only when a match was found
677
- if (d) {
678
- // store both dist and len data in one Uint32
679
- // Make sure this is recognized as a len/dist with 28th bit (2^28)
680
- syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];
681
- var lin = revfl[l] & 31, din = revfd[d] & 31;
682
- eb += fleb[lin] + fdeb[din];
683
- ++lf[257 + lin];
684
- ++df[din];
685
- wi = i + l;
686
- ++lc_1;
687
- }
688
- else {
689
- syms[li++] = dat[i];
690
- ++lf[dat[i]];
691
- }
692
- }
693
- }
694
- 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);
698
- }
699
- return slc(o, 0, pre + shft(pos) + post);
700
- };
701
- // CRC32 table
702
- var crct = /*#__PURE__*/ (function () {
703
- var t = new u32(256);
704
- for (var i = 0; i < 256; ++i) {
705
- var c = i, k = 9;
706
- while (--k)
707
- c = ((c & 1) && 0xEDB88320) ^ (c >>> 1);
708
- t[i] = c;
709
- }
710
- return t;
711
- })();
712
- // CRC32
713
- var crc = function () {
714
- var c = -1;
715
- return {
716
- p: function (d) {
717
- // closures have awful performance
718
- var cr = c;
719
- for (var i = 0; i < d.length; ++i)
720
- cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);
721
- c = cr;
722
- },
723
- d: function () { return ~c; }
724
- };
725
- };
726
- // Alder32
727
- var adler = function () {
728
- var a = 1, b = 0;
729
- return {
730
- p: function (d) {
731
- // closures have awful performance
732
- var n = a, m = b;
733
- var l = d.length;
734
- for (var i = 0; i != l;) {
735
- var e = Math.min(i + 2655, l);
736
- for (; i < e; ++i)
737
- m += n += d[i];
738
- n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);
739
- }
740
- a = n, b = m;
741
- },
742
- d: function () {
743
- a %= 65521, b %= 65521;
744
- return (a & 255) << 24 | (a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8);
745
- }
746
- };
747
- };
748
- ;
749
- // deflate with opts
750
- 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);
752
- };
753
- // Walmart object spread
754
- var mrg = function (a, b) {
755
- var o = {};
756
- for (var k in a)
757
- o[k] = a[k];
758
- for (var k in b)
759
- o[k] = b[k];
760
- return o;
761
- };
762
- // worker clone
763
- // This is possibly the craziest part of the entire codebase, despite how simple it may seem.
764
- // The only parameter to this function is a closure that returns an array of variables outside of the function scope.
765
- // We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.
766
- // We will return an object mapping of true variable name to value (basically, the current scope as a JS object).
767
- // The reason we can't just use the original variable names is minifiers mangling the toplevel scope.
768
- // This took me three weeks to figure out how to do.
769
- var wcln = function (fn, fnStr, td) {
770
- var dt = fn();
771
- var st = fn.toString();
772
- var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/ /g, '').split(',');
773
- for (var i = 0; i < dt.length; ++i) {
774
- var v = dt[i], k = ks[i];
775
- if (typeof v == 'function') {
776
- fnStr += ';' + k + '=';
777
- var st_1 = v.toString();
778
- if (v.prototype) {
779
- // for global objects
780
- if (st_1.indexOf('[native code]') != -1) {
781
- var spInd = st_1.indexOf(' ', 8) + 1;
782
- fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));
783
- }
784
- else {
785
- fnStr += st_1;
786
- for (var t in v.prototype)
787
- fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();
788
- }
789
- }
790
- else
791
- fnStr += st_1;
792
- }
793
- else
794
- td[k] = v;
795
- }
796
- return [fnStr, td];
797
- };
798
- var ch = [];
799
- // clone bufs
800
- var cbfs = function (v) {
801
- var tl = [];
802
- for (var k in v) {
803
- if (v[k] instanceof u8 || v[k] instanceof u16 || v[k] instanceof u32)
804
- tl.push((v[k] = new v[k].constructor(v[k])).buffer);
805
- }
806
- return tl;
807
- };
808
- // use a worker to execute code
809
- var wrkr = function (fns, init, id, cb) {
810
- var _a;
811
- if (!ch[id]) {
812
- var fnStr = '', td_1 = {}, m = fns.length - 1;
813
- 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);
816
- }
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);
819
- };
820
- // 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]; };
823
- // gzip extra
824
- var gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };
825
- // gunzip extra
826
- var guze = function () { return [gzs, gzl]; };
827
- // zlib extra
828
- var zle = function () { return [zlh, wbytes, adler]; };
829
- // unzlib extra
830
- var zule = function () { return [zlv]; };
831
- // post buf
832
- 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); };
835
- // async helper
836
- var cbify = function (dat, opts, fns, init, id, cb) {
837
- var w = wrkr(fns, init, id, function (err, dat) {
838
- w.terminate();
839
- cb(err, dat);
840
- });
841
- w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);
842
- return function () { w.terminate(); };
843
- };
844
- // auto stream
845
- var astrm = function (strm) {
846
- strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };
847
- return function (ev) { return strm.push(ev.data[0], ev.data[1]); };
848
- };
849
- // async stream attach
850
- var astrmify = function (fns, strm, opts, init, id) {
851
- var t;
852
- var w = wrkr(fns, init, id, function (err, dat) {
853
- if (err)
854
- w.terminate(), strm.ondata.call(strm, err);
855
- else {
856
- if (dat[1])
857
- w.terminate();
858
- strm.ondata.call(strm, err, dat[0], dat[1]);
859
- }
860
- });
861
- w.postMessage(opts);
862
- strm.push = function (d, f) {
863
- if (t)
864
- throw 'stream finished';
865
- if (!strm.ondata)
866
- throw 'no stream handler';
867
- w.postMessage([d, t = f], [d.buffer]);
868
- };
869
- strm.terminate = function () { w.terminate(); };
870
- };
871
- // read 2 bytes
872
- var b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };
873
- // read 4 bytes
874
- var b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };
875
- var b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };
876
- // write bytes
877
- var wbytes = function (d, b, v) {
878
- for (; v; ++b)
879
- d[b] = v, v >>>= 8;
880
- };
881
- // gzip header
882
- var gzh = function (c, o) {
883
- var fn = o.filename;
884
- c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix
885
- if (o.mtime != 0)
886
- wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));
887
- if (fn) {
888
- c[3] = 8;
889
- for (var i = 0; i <= fn.length; ++i)
890
- c[i + 10] = fn.charCodeAt(i);
891
- }
892
- };
893
- // gzip footer: -8 to -4 = CRC, -4 to -0 is length
894
- // gzip start
895
- var gzs = function (d) {
896
- if (d[0] != 31 || d[1] != 139 || d[2] != 8)
897
- throw 'invalid gzip data';
898
- var flg = d[3];
899
- var st = 10;
900
- if (flg & 4)
901
- st += d[10] | (d[11] << 8) + 2;
902
- for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])
903
- ;
904
- return st + (flg & 2);
905
- };
906
- // gzip length
907
- var gzl = function (d) {
908
- var l = d.length;
909
- return ((d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) | (d[l - 1] << 24)) >>> 0;
910
- };
911
- // gzip header length
912
- var gzhl = function (o) { return 10 + ((o.filename && (o.filename.length + 1)) || 0); };
913
- // zlib header
914
- var zlh = function (c, o) {
915
- 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);
917
- };
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';
924
- };
925
- function AsyncCmpStrm(opts, cb) {
926
- if (!cb && typeof opts == 'function')
927
- cb = opts, opts = {};
928
- this.ondata = cb;
929
- return opts;
930
- }
931
- // zlib footer: -4 to -0 is Adler32
932
- /**
933
- * Streaming DEFLATE compression
934
- */
935
- var Deflate = /*#__PURE__*/ (function () {
936
- function Deflate(opts, cb) {
937
- if (!cb && typeof opts == 'function')
938
- cb = opts, opts = {};
939
- this.ondata = cb;
940
- this.o = opts || {};
941
- }
942
- Deflate.prototype.p = function (c, f) {
943
- this.ondata(dopt(c, this.o, 0, 0, !f), f);
944
- };
945
- /**
946
- * Pushes a chunk to be deflated
947
- * @param chunk The chunk to push
948
- * @param final Whether this is the last chunk
949
- */
950
- Deflate.prototype.push = function (chunk, final) {
951
- if (this.d)
952
- throw 'stream finished';
953
- if (!this.ondata)
954
- throw 'no stream handler';
955
- this.d = final;
956
- this.p(chunk, final || false);
957
- };
958
- return Deflate;
959
- }());
960
- export { Deflate };
961
- /**
962
- * Asynchronous streaming DEFLATE compression
963
- */
964
- var AsyncDeflate = /*#__PURE__*/ (function () {
965
- function AsyncDeflate(opts, cb) {
966
- astrmify([
967
- bDflt,
968
- function () { return [astrm, Deflate]; }
969
- ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {
970
- var strm = new Deflate(ev.data);
971
- onmessage = astrm(strm);
972
- }, 6);
973
- }
974
- return AsyncDeflate;
975
- }());
976
- export { AsyncDeflate };
977
- export function deflate(data, opts, cb) {
978
- if (!cb)
979
- cb = opts, opts = {};
980
- if (typeof cb != 'function')
981
- throw 'no callback';
982
- return cbify(data, opts, [
983
- bDflt,
984
- ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);
985
- }
986
- /**
987
- * Compresses data with DEFLATE without any wrapper
988
- * @param data The data to compress
989
- * @param opts The compression options
990
- * @returns The deflated version of the data
991
- */
992
- export function deflateSync(data, opts) {
993
- return dopt(data, opts || {}, 0, 0);
994
- }
995
- /**
996
- * Streaming DEFLATE decompression
997
- */
998
- 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);
1006
- this.ondata = cb;
1007
- }
1008
- Inflate.prototype.e = function (c) {
1009
- if (this.d)
1010
- throw 'stream finished';
1011
- 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;
1016
- };
1017
- Inflate.prototype.c = function (final) {
1018
- this.d = this.s.i = final || false;
1019
- var bts = this.s.b;
1020
- var dt = inflt(this.p, this.o, this.s);
1021
- this.ondata(slc(dt, bts, this.s.b), this.d);
1022
- this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;
1023
- this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;
1024
- };
1025
- /**
1026
- * Pushes a chunk to be inflated
1027
- * @param chunk The chunk to push
1028
- * @param final Whether this is the final chunk
1029
- */
1030
- Inflate.prototype.push = function (chunk, final) {
1031
- this.e(chunk), this.c(final);
1032
- };
1033
- return Inflate;
1034
- }());
1035
- export { Inflate };
1036
- /**
1037
- * Asynchronous streaming DEFLATE decompression
1038
- */
1039
- 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;
1046
- astrmify([
1047
- bInflt,
1048
- function () { return [astrm, Inflate]; }
1049
- ], this, 0, function () {
1050
- var strm = new Inflate();
1051
- onmessage = astrm(strm);
1052
- }, 7);
1053
- }
1054
- return AsyncInflate;
1055
- }());
1056
- export { AsyncInflate };
1057
- export function inflate(data, opts, cb) {
1058
- if (!cb)
1059
- cb = opts, opts = {};
1060
- if (typeof cb != 'function')
1061
- throw 'no callback';
1062
- return cbify(data, opts, [
1063
- bInflt
1064
- ], function (ev) { return pbf(inflateSync(ev.data[0], gu8(ev.data[1]))); }, 1, cb);
1065
- }
1066
- /**
1067
- * Expands DEFLATE data with no wrapper
1068
- * @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.
1070
- * @returns The decompressed version of the data
1071
- */
1072
- export function inflateSync(data, out) {
1073
- return inflt(data, out);
1074
- }
1075
- // before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.
1076
- /**
1077
- * Streaming GZIP compression
1078
- */
1079
- var Gzip = /*#__PURE__*/ (function () {
1080
- function Gzip(opts, cb) {
1081
- this.c = crc();
1082
- this.l = 0;
1083
- this.v = 1;
1084
- Deflate.call(this, opts, cb);
1085
- }
1086
- /**
1087
- * Pushes a chunk to be GZIPped
1088
- * @param chunk The chunk to push
1089
- * @param final Whether this is the last chunk
1090
- */
1091
- Gzip.prototype.push = function (chunk, final) {
1092
- Deflate.prototype.push.call(this, chunk, final);
1093
- };
1094
- 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);
1098
- if (this.v)
1099
- gzh(raw, this.o), this.v = 0;
1100
- if (f)
1101
- wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);
1102
- this.ondata(raw, f);
1103
- };
1104
- return Gzip;
1105
- }());
1106
- export { Gzip };
1107
- /**
1108
- * Asynchronous streaming GZIP compression
1109
- */
1110
- var AsyncGzip = /*#__PURE__*/ (function () {
1111
- function AsyncGzip(opts, cb) {
1112
- astrmify([
1113
- bDflt,
1114
- gze,
1115
- function () { return [astrm, Deflate, Gzip]; }
1116
- ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {
1117
- var strm = new Gzip(ev.data);
1118
- onmessage = astrm(strm);
1119
- }, 8);
1120
- }
1121
- return AsyncGzip;
1122
- }());
1123
- export { AsyncGzip };
1124
- export function gzip(data, opts, cb) {
1125
- if (!cb)
1126
- cb = opts, opts = {};
1127
- if (typeof cb != 'function')
1128
- throw 'no callback';
1129
- return cbify(data, opts, [
1130
- bDflt,
1131
- gze,
1132
- function () { return [gzipSync]; }
1133
- ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);
1134
- }
1135
- /**
1136
- * Compresses data with GZIP
1137
- * @param data The data to compress
1138
- * @param opts The compression options
1139
- * @returns The gzipped version of the data
1140
- */
1141
- export function gzipSync(data, opts) {
1142
- if (!opts)
1143
- opts = {};
1144
- var c = crc(), l = data.length;
1145
- c.p(data);
1146
- var d = dopt(data, opts, gzhl(opts), 8), s = d.length;
1147
- return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;
1148
- }
1149
- /**
1150
- * Streaming GZIP decompression
1151
- */
1152
- 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) {
1158
- this.v = 1;
1159
- Inflate.call(this, cb);
1160
- }
1161
- /**
1162
- * Pushes a chunk to be GUNZIPped
1163
- * @param chunk The chunk to push
1164
- * @param final Whether this is the last chunk
1165
- */
1166
- Gunzip.prototype.push = function (chunk, final) {
1167
- Inflate.prototype.e.call(this, chunk);
1168
- 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);
1178
- }
1179
- // necessary to prevent TS from using the closure value
1180
- // This allows for workerization to function correctly
1181
- Inflate.prototype.c.call(this, final);
1182
- };
1183
- return Gunzip;
1184
- }());
1185
- export { Gunzip };
1186
- /**
1187
- * Asynchronous streaming GZIP decompression
1188
- */
1189
- 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;
1196
- astrmify([
1197
- bInflt,
1198
- guze,
1199
- function () { return [astrm, Inflate, Gunzip]; }
1200
- ], this, 0, function () {
1201
- var strm = new Gunzip();
1202
- onmessage = astrm(strm);
1203
- }, 9);
1204
- }
1205
- return AsyncGunzip;
1206
- }());
1207
- export { AsyncGunzip };
1208
- export function gunzip(data, opts, cb) {
1209
- if (!cb)
1210
- cb = opts, opts = {};
1211
- if (typeof cb != 'function')
1212
- throw 'no callback';
1213
- return cbify(data, opts, [
1214
- bInflt,
1215
- guze,
1216
- function () { return [gunzipSync]; }
1217
- ], function (ev) { return pbf(gunzipSync(ev.data[0])); }, 3, cb);
1218
- }
1219
- /**
1220
- * Expands GZIP data
1221
- * @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.
1223
- * @returns The decompressed version of the data
1224
- */
1225
- export function gunzipSync(data, out) {
1226
- return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));
1227
- }
1228
- /**
1229
- * Streaming Zlib compression
1230
- */
1231
- var Zlib = /*#__PURE__*/ (function () {
1232
- function Zlib(opts, cb) {
1233
- this.c = adler();
1234
- this.v = 1;
1235
- Deflate.call(this, opts, cb);
1236
- }
1237
- /**
1238
- * Pushes a chunk to be zlibbed
1239
- * @param chunk The chunk to push
1240
- * @param final Whether this is the last chunk
1241
- */
1242
- Zlib.prototype.push = function (chunk, final) {
1243
- Deflate.prototype.push.call(this, chunk, final);
1244
- };
1245
- Zlib.prototype.p = function (c, f) {
1246
- this.c.p(c);
1247
- var raw = dopt(c, this.o, this.v && 2, f && 4, !f);
1248
- if (this.v)
1249
- zlh(raw, this.o), this.v = 0;
1250
- if (f)
1251
- wbytes(raw, raw.length - 4, this.c.d());
1252
- this.ondata(raw, f);
1253
- };
1254
- return Zlib;
1255
- }());
1256
- export { Zlib };
1257
- /**
1258
- * Asynchronous streaming Zlib compression
1259
- */
1260
- var AsyncZlib = /*#__PURE__*/ (function () {
1261
- function AsyncZlib(opts, cb) {
1262
- astrmify([
1263
- bDflt,
1264
- zle,
1265
- function () { return [astrm, Deflate, Zlib]; }
1266
- ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {
1267
- var strm = new Zlib(ev.data);
1268
- onmessage = astrm(strm);
1269
- }, 10);
1270
- }
1271
- return AsyncZlib;
1272
- }());
1273
- export { AsyncZlib };
1274
- export function zlib(data, opts, cb) {
1275
- if (!cb)
1276
- cb = opts, opts = {};
1277
- if (typeof cb != 'function')
1278
- throw 'no callback';
1279
- return cbify(data, opts, [
1280
- bDflt,
1281
- zle,
1282
- function () { return [zlibSync]; }
1283
- ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);
1284
- }
1285
- /**
1286
- * Compress data with Zlib
1287
- * @param data The data to compress
1288
- * @param opts The compression options
1289
- * @returns The zlib-compressed version of the data
1290
- */
1291
- export function zlibSync(data, opts) {
1292
- if (!opts)
1293
- opts = {};
1294
- var a = adler();
1295
- a.p(data);
1296
- var d = dopt(data, opts, 2, 4);
1297
- return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;
1298
- }
1299
- /**
1300
- * Streaming Zlib decompression
1301
- */
1302
- 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);
1310
- }
1311
- /**
1312
- * Pushes a chunk to be unzlibbed
1313
- * @param chunk The chunk to push
1314
- * @param final Whether this is the last chunk
1315
- */
1316
- Unzlib.prototype.push = function (chunk, final) {
1317
- Inflate.prototype.e.call(this, chunk);
1318
- if (this.v) {
1319
- if (this.p.length < 2 && !final)
1320
- return;
1321
- this.p = this.p.subarray(2), this.v = 0;
1322
- }
1323
- if (final) {
1324
- if (this.p.length < 4)
1325
- throw 'invalid zlib stream';
1326
- this.p = this.p.subarray(0, -4);
1327
- }
1328
- // necessary to prevent TS from using the closure value
1329
- // This allows for workerization to function correctly
1330
- Inflate.prototype.c.call(this, final);
1331
- };
1332
- return Unzlib;
1333
- }());
1334
- export { Unzlib };
1335
- /**
1336
- * Asynchronous streaming Zlib decompression
1337
- */
1338
- 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;
1345
- astrmify([
1346
- bInflt,
1347
- zule,
1348
- function () { return [astrm, Inflate, Unzlib]; }
1349
- ], this, 0, function () {
1350
- var strm = new Unzlib();
1351
- onmessage = astrm(strm);
1352
- }, 11);
1353
- }
1354
- return AsyncUnzlib;
1355
- }());
1356
- export { AsyncUnzlib };
1357
- export function unzlib(data, opts, cb) {
1358
- if (!cb)
1359
- cb = opts, opts = {};
1360
- if (typeof cb != 'function')
1361
- throw 'no callback';
1362
- return cbify(data, opts, [
1363
- bInflt,
1364
- zule,
1365
- function () { return [unzlibSync]; }
1366
- ], function (ev) { return pbf(unzlibSync(ev.data[0], gu8(ev.data[1]))); }, 5, cb);
1367
- }
1368
- /**
1369
- * Expands Zlib data
1370
- * @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.
1372
- * @returns The decompressed version of the data
1373
- */
1374
- export function unzlibSync(data, out) {
1375
- return inflt((zlv(data), data.subarray(2, -4)), out);
1376
- }
1377
- // Default algorithm for compression (used because having a known output size allows faster decompression)
1378
- export { gzip as compress, AsyncGzip as AsyncCompress };
1379
- // Default algorithm for compression (used because having a known output size allows faster decompression)
1380
- export { gzipSync as compressSync, Gzip as Compress };
1381
- /**
1382
- * Streaming GZIP, Zlib, or raw DEFLATE decompression
1383
- */
1384
- 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) {
1390
- this.G = Gunzip;
1391
- this.I = Inflate;
1392
- this.Z = Unzlib;
1393
- this.ondata = cb;
1394
- }
1395
- /**
1396
- * Pushes a chunk to be decompressed
1397
- * @param chunk The chunk to push
1398
- * @param final Whether this is the last chunk
1399
- */
1400
- Decompress.prototype.push = function (chunk, final) {
1401
- if (!this.ondata)
1402
- throw 'no stream handler';
1403
- if (!this.s) {
1404
- if (this.p && this.p.length) {
1405
- var n = new u8(this.p.length + chunk.length);
1406
- n.set(this.p), n.set(chunk, this.p.length);
1407
- }
1408
- else
1409
- this.p = chunk;
1410
- if (this.p.length > 2) {
1411
- var _this_1 = this;
1412
- var cb = function () { _this_1.ondata.apply(_this_1, arguments); };
1413
- this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)
1414
- ? new this.G(cb)
1415
- : ((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);
1418
- this.s.push(this.p, final);
1419
- this.p = null;
1420
- }
1421
- }
1422
- else
1423
- this.s.push(chunk, final);
1424
- };
1425
- return Decompress;
1426
- }());
1427
- export { Decompress };
1428
- /**
1429
- * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression
1430
- */
1431
- 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) {
1437
- this.G = AsyncGunzip;
1438
- this.I = AsyncInflate;
1439
- this.Z = AsyncUnzlib;
1440
- this.ondata = cb;
1441
- }
1442
- /**
1443
- * Pushes a chunk to be decompressed
1444
- * @param chunk The chunk to push
1445
- * @param final Whether this is the last chunk
1446
- */
1447
- AsyncDecompress.prototype.push = function (chunk, final) {
1448
- Decompress.prototype.push.call(this, chunk, final);
1449
- };
1450
- return AsyncDecompress;
1451
- }());
1452
- export { AsyncDecompress };
1453
- export function decompress(data, opts, cb) {
1454
- if (!cb)
1455
- cb = opts, opts = {};
1456
- if (typeof cb != 'function')
1457
- throw 'no callback';
1458
- return (data[0] == 31 && data[1] == 139 && data[2] == 8)
1459
- ? gunzip(data, opts, cb)
1460
- : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))
1461
- ? inflate(data, opts, cb)
1462
- : unzlib(data, opts, cb);
1463
- }
1464
- /**
1465
- * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
1466
- * @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.
1468
- * @returns The decompressed version of the data
1469
- */
1470
- export function decompressSync(data, out) {
1471
- return (data[0] == 31 && data[1] == 139 && data[2] == 8)
1472
- ? gunzipSync(data, out)
1473
- : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))
1474
- ? inflateSync(data, out)
1475
- : unzlibSync(data, out);
1476
- }
1477
- // flatten a directory structure
1478
- var fltn = function (d, p, t, o) {
1479
- for (var k in d) {
1480
- var val = d[k], n = p + k;
1481
- 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);
1487
- }
1488
- };
1489
- // text encoder
1490
- var te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();
1491
- // text decoder
1492
- var td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();
1493
- // text decoder stream
1494
- var tds = 0;
1495
- try {
1496
- td.decode(et, { stream: true });
1497
- tds = 1;
1498
- }
1499
- catch (e) { }
1500
- // decode UTF8
1501
- var dutf8 = function (d) {
1502
- for (var r = '', i = 0;;) {
1503
- var c = d[i++];
1504
- var eb = (c > 127) + (c > 223) + (c > 239);
1505
- if (i + eb > d.length)
1506
- return [r, slc(d, i - 1)];
1507
- if (!eb)
1508
- r += String.fromCharCode(c);
1509
- else if (eb == 3) {
1510
- c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,
1511
- r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));
1512
- }
1513
- else if (eb & 1)
1514
- r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));
1515
- else
1516
- r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));
1517
- }
1518
- };
1519
- /**
1520
- * Streaming UTF-8 decoding
1521
- */
1522
- var DecodeUTF8 = /*#__PURE__*/ (function () {
1523
- /**
1524
- * Creates a UTF-8 decoding stream
1525
- * @param cb The callback to call whenever data is decoded
1526
- */
1527
- function DecodeUTF8(cb) {
1528
- this.ondata = cb;
1529
- if (tds)
1530
- this.t = new TextDecoder();
1531
- else
1532
- this.p = et;
1533
- }
1534
- /**
1535
- * Pushes a chunk to be decoded from UTF-8 binary
1536
- * @param chunk The chunk to push
1537
- * @param final Whether this is the last chunk
1538
- */
1539
- DecodeUTF8.prototype.push = function (chunk, final) {
1540
- if (!this.ondata)
1541
- throw 'no callback';
1542
- final = !!final;
1543
- if (this.t) {
1544
- this.ondata(this.t.decode(chunk, { stream: true }), final);
1545
- if (final) {
1546
- if (this.t.decode().length)
1547
- throw 'invalid utf-8 data';
1548
- this.t = null;
1549
- }
1550
- return;
1551
- }
1552
- if (!this.p)
1553
- throw 'stream finished';
1554
- var dat = new u8(this.p.length + chunk.length);
1555
- dat.set(this.p);
1556
- dat.set(chunk, this.p.length);
1557
- var _a = dutf8(dat), ch = _a[0], np = _a[1];
1558
- if (final) {
1559
- if (np.length)
1560
- throw 'invalid utf-8 data';
1561
- this.p = null;
1562
- }
1563
- else
1564
- this.p = np;
1565
- this.ondata(ch, final);
1566
- };
1567
- return DecodeUTF8;
1568
- }());
1569
- export { DecodeUTF8 };
1570
- /**
1571
- * Streaming UTF-8 encoding
1572
- */
1573
- var EncodeUTF8 = /*#__PURE__*/ (function () {
1574
- /**
1575
- * Creates a UTF-8 decoding stream
1576
- * @param cb The callback to call whenever data is encoded
1577
- */
1578
- function EncodeUTF8(cb) {
1579
- this.ondata = cb;
1580
- }
1581
- /**
1582
- * Pushes a chunk to be encoded to UTF-8
1583
- * @param chunk The string data to push
1584
- * @param final Whether this is the last chunk
1585
- */
1586
- EncodeUTF8.prototype.push = function (chunk, final) {
1587
- if (!this.ondata)
1588
- throw 'no callback';
1589
- if (this.d)
1590
- throw 'stream finished';
1591
- this.ondata(strToU8(chunk), this.d = final || false);
1592
- };
1593
- return EncodeUTF8;
1594
- }());
1595
- export { EncodeUTF8 };
1596
- /**
1597
- * Converts a string into a Uint8Array for use with compression/decompression methods
1598
- * @param str The string to encode
1599
- * @param latin1 Whether or not to interpret the data as Latin-1. This should
1600
- * not need to be true unless decoding a binary string.
1601
- * @returns The string encoded in UTF-8/Latin-1 binary
1602
- */
1603
- export function strToU8(str, latin1) {
1604
- if (latin1) {
1605
- var ar_1 = new u8(str.length);
1606
- for (var i = 0; i < str.length; ++i)
1607
- ar_1[i] = str.charCodeAt(i);
1608
- return ar_1;
1609
- }
1610
- if (te)
1611
- return te.encode(str);
1612
- var l = str.length;
1613
- var ar = new u8(str.length + (str.length >> 1));
1614
- var ai = 0;
1615
- var w = function (v) { ar[ai++] = v; };
1616
- for (var i = 0; i < l; ++i) {
1617
- if (ai + 5 > ar.length) {
1618
- var n = new u8(ai + 8 + ((l - i) << 1));
1619
- n.set(ar);
1620
- ar = n;
1621
- }
1622
- var c = str.charCodeAt(i);
1623
- if (c < 128 || latin1)
1624
- w(c);
1625
- else if (c < 2048)
1626
- w(192 | (c >> 6)), w(128 | (c & 63));
1627
- else if (c > 55295 && c < 57344)
1628
- c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),
1629
- w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));
1630
- else
1631
- w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));
1632
- }
1633
- return slc(ar, 0, ai);
1634
- }
1635
- /**
1636
- * Converts a Uint8Array to a string
1637
- * @param dat The data to decode to string
1638
- * @param latin1 Whether or not to interpret the data as Latin-1. This should
1639
- * not need to be true unless encoding to binary string.
1640
- * @returns The original UTF-8/Latin-1 string
1641
- */
1642
- export function strFromU8(dat, latin1) {
1643
- if (latin1) {
1644
- var r = '';
1645
- for (var i = 0; i < dat.length; i += 16384)
1646
- r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));
1647
- return r;
1648
- }
1649
- else if (td)
1650
- return td.decode(dat);
1651
- 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;
1656
- }
1657
- }
1658
- ;
1659
- // deflate bit flag
1660
- var dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };
1661
- // skip local zip header
1662
- var slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };
1663
- // read zip header
1664
- var zh = function (d, b, z) {
1665
- var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);
1666
- var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];
1667
- return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];
1668
- };
1669
- // read zip64 extra field
1670
- var z64e = function (d, b) {
1671
- for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))
1672
- ;
1673
- return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];
1674
- };
1675
- // extra field length
1676
- var exfl = function (ex) {
1677
- var le = 0;
1678
- if (ex) {
1679
- for (var k in ex) {
1680
- var l = ex[k].length;
1681
- if (l > 65535)
1682
- throw 'extra field too long';
1683
- le += l + 4;
1684
- }
1685
- }
1686
- return le;
1687
- };
1688
- // write zip header
1689
- var wzh = function (d, b, f, fn, u, c, ce, co) {
1690
- var fl = fn.length, ex = f.extra, col = co && co.length;
1691
- var exl = exfl(ex);
1692
- wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;
1693
- if (ce != null)
1694
- d[b++] = 20, d[b++] = f.os;
1695
- d[b] = 20, b += 2; // spec compliance? what's that?
1696
- d[b++] = (f.flag << 1) | (c == null && 8), d[b++] = u && 8;
1697
- d[b++] = f.compression & 255, d[b++] = f.compression >> 8;
1698
- var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;
1699
- 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) {
1703
- wbytes(d, b, f.crc);
1704
- wbytes(d, b + 4, c);
1705
- wbytes(d, b + 8, f.size);
1706
- }
1707
- wbytes(d, b + 12, fl);
1708
- wbytes(d, b + 14, exl), b += 16;
1709
- if (ce != null) {
1710
- wbytes(d, b, col);
1711
- wbytes(d, b + 6, f.attrs);
1712
- wbytes(d, b + 10, ce), b += 14;
1713
- }
1714
- d.set(fn, b);
1715
- b += fl;
1716
- if (exl) {
1717
- for (var k in ex) {
1718
- var exf = ex[k], l = exf.length;
1719
- wbytes(d, b, +k);
1720
- wbytes(d, b + 2, l);
1721
- d.set(exf, b + 4), b += 4 + l;
1722
- }
1723
- }
1724
- if (col)
1725
- d.set(co, b), b += col;
1726
- return b;
1727
- };
1728
- // write zip footer (end of central directory)
1729
- var wzf = function (o, b, c, d, e) {
1730
- wbytes(o, b, 0x6054B50); // skip disk
1731
- wbytes(o, b + 8, c);
1732
- wbytes(o, b + 10, c);
1733
- wbytes(o, b + 12, d);
1734
- wbytes(o, b + 16, e);
1735
- };
1736
- /**
1737
- * A pass-through stream to keep data uncompressed in a ZIP archive.
1738
- */
1739
- var ZipPassThrough = /*#__PURE__*/ (function () {
1740
- /**
1741
- * Creates a pass-through stream that can be added to ZIP archives
1742
- * @param filename The filename to associate with this data stream
1743
- */
1744
- function ZipPassThrough(filename) {
1745
- this.filename = filename;
1746
- this.c = crc();
1747
- this.size = 0;
1748
- this.compression = 0;
1749
- }
1750
- /**
1751
- * Processes a chunk and pushes to the output stream. You can override this
1752
- * method in a subclass for custom behavior, but by default this passes
1753
- * the data through. You must call this.ondata(err, chunk, final) at some
1754
- * point in this method.
1755
- * @param chunk The chunk to process
1756
- * @param final Whether this is the last chunk
1757
- */
1758
- ZipPassThrough.prototype.process = function (chunk, final) {
1759
- this.ondata(null, chunk, final);
1760
- };
1761
- /**
1762
- * Pushes a chunk to be added. If you are subclassing this with a custom
1763
- * compression algorithm, note that you must push data from the source
1764
- * file only, pre-compression.
1765
- * @param chunk The chunk to push
1766
- * @param final Whether this is the last chunk
1767
- */
1768
- ZipPassThrough.prototype.push = function (chunk, final) {
1769
- if (!this.ondata)
1770
- throw 'no callback - add to ZIP archive before pushing';
1771
- this.c.p(chunk);
1772
- this.size += chunk.length;
1773
- if (final)
1774
- this.crc = this.c.d();
1775
- this.process(chunk, final || false);
1776
- };
1777
- return ZipPassThrough;
1778
- }());
1779
- export { ZipPassThrough };
1780
- // I don't extend because TypeScript extension adds 1kB of runtime bloat
1781
- /**
1782
- * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate
1783
- * for better performance
1784
- */
1785
- var ZipDeflate = /*#__PURE__*/ (function () {
1786
- /**
1787
- * Creates a DEFLATE stream that can be added to ZIP archives
1788
- * @param filename The filename to associate with this data stream
1789
- * @param opts The compression options
1790
- */
1791
- function ZipDeflate(filename, opts) {
1792
- var _this_1 = this;
1793
- if (!opts)
1794
- opts = {};
1795
- ZipPassThrough.call(this, filename);
1796
- this.d = new Deflate(opts, function (dat, final) {
1797
- _this_1.ondata(null, dat, final);
1798
- });
1799
- this.compression = 8;
1800
- this.flag = dbf(opts.level);
1801
- }
1802
- ZipDeflate.prototype.process = function (chunk, final) {
1803
- try {
1804
- this.d.push(chunk, final);
1805
- }
1806
- catch (e) {
1807
- this.ondata(e, null, final);
1808
- }
1809
- };
1810
- /**
1811
- * Pushes a chunk to be deflated
1812
- * @param chunk The chunk to push
1813
- * @param final Whether this is the last chunk
1814
- */
1815
- ZipDeflate.prototype.push = function (chunk, final) {
1816
- ZipPassThrough.prototype.push.call(this, chunk, final);
1817
- };
1818
- return ZipDeflate;
1819
- }());
1820
- export { ZipDeflate };
1821
- /**
1822
- * Asynchronous streaming DEFLATE compression for ZIP archives
1823
- */
1824
- var AsyncZipDeflate = /*#__PURE__*/ (function () {
1825
- /**
1826
- * Creates a DEFLATE stream that can be added to ZIP archives
1827
- * @param filename The filename to associate with this data stream
1828
- * @param opts The compression options
1829
- */
1830
- function AsyncZipDeflate(filename, opts) {
1831
- var _this_1 = this;
1832
- if (!opts)
1833
- opts = {};
1834
- ZipPassThrough.call(this, filename);
1835
- this.d = new AsyncDeflate(opts, function (err, dat, final) {
1836
- _this_1.ondata(err, dat, final);
1837
- });
1838
- this.compression = 8;
1839
- this.flag = dbf(opts.level);
1840
- this.terminate = this.d.terminate;
1841
- }
1842
- AsyncZipDeflate.prototype.process = function (chunk, final) {
1843
- this.d.push(chunk, final);
1844
- };
1845
- /**
1846
- * Pushes a chunk to be deflated
1847
- * @param chunk The chunk to push
1848
- * @param final Whether this is the last chunk
1849
- */
1850
- AsyncZipDeflate.prototype.push = function (chunk, final) {
1851
- ZipPassThrough.prototype.push.call(this, chunk, final);
1852
- };
1853
- return AsyncZipDeflate;
1854
- }());
1855
- export { AsyncZipDeflate };
1856
- // TODO: Better tree shaking
1857
- /**
1858
- * A zippable archive to which files can incrementally be added
1859
- */
1860
- var Zip = /*#__PURE__*/ (function () {
1861
- /**
1862
- * Creates an empty ZIP archive to which files can be added
1863
- * @param cb The callback to call whenever data for the generated ZIP archive
1864
- * is available
1865
- */
1866
- function Zip(cb) {
1867
- this.ondata = cb;
1868
- this.u = [];
1869
- this.d = 1;
1870
- }
1871
- /**
1872
- * Adds a file to the ZIP archive
1873
- * @param file The file stream to add
1874
- */
1875
- Zip.prototype.add = function (file) {
1876
- var _this_1 = this;
1877
- 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;
1914
- }
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;
1938
- }
1939
- else if (tr)
1940
- pAll();
1941
- }
1942
- };
1943
- this.u.push(uf);
1944
- };
1945
- /**
1946
- * Ends the process of adding files and prepares to emit the final chunks.
1947
- * This *must* be called after adding all desired files for the resulting
1948
- * ZIP file to work properly.
1949
- */
1950
- Zip.prototype.end = function () {
1951
- var _this_1 = this;
1952
- if (this.d & 2) {
1953
- if (this.d & 1)
1954
- throw 'stream finishing';
1955
- throw 'stream finished';
1956
- }
1957
- if (this.d)
1958
- this.e();
1959
- else
1960
- this.u.push({
1961
- r: function () {
1962
- if (!(_this_1.d & 1))
1963
- return;
1964
- _this_1.u.splice(-1, 1);
1965
- _this_1.e();
1966
- },
1967
- t: function () { }
1968
- });
1969
- this.d = 3;
1970
- };
1971
- Zip.prototype.e = function () {
1972
- var bt = 0, l = 0, tl = 0;
1973
- for (var _i = 0, _a = this.u; _i < _a.length; _i++) {
1974
- var f = _a[_i];
1975
- tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);
1976
- }
1977
- var out = new u8(tl + 22);
1978
- for (var _b = 0, _c = this.u; _b < _c.length; _b++) {
1979
- var f = _c[_b];
1980
- wzh(out, bt, f, f.f, f.u, f.c, l, f.o);
1981
- bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;
1982
- }
1983
- wzf(out, bt, this.u.length, tl, l);
1984
- this.ondata(null, out, true);
1985
- this.d = 2;
1986
- };
1987
- /**
1988
- * A method to terminate any internal workers used by the stream. Subsequent
1989
- * calls to add() will fail.
1990
- */
1991
- Zip.prototype.terminate = function () {
1992
- for (var _i = 0, _a = this.u; _i < _a.length; _i++) {
1993
- var f = _a[_i];
1994
- f.t();
1995
- }
1996
- this.d = 2;
1997
- };
1998
- return Zip;
1999
- }());
2000
- export { Zip };
2001
- export function zip(data, opts, cb) {
2002
- if (!cb)
2003
- cb = opts, opts = {};
2004
- if (typeof cb != 'function')
2005
- throw 'no callback';
2006
- var r = {};
2007
- fltn(data, '', r, opts);
2008
- var k = Object.keys(r);
2009
- var lft = k.length, o = 0, tot = 0;
2010
- var slft = lft, files = new Array(lft);
2011
- var term = [];
2012
- var tAll = function () {
2013
- for (var i = 0; i < term.length; ++i)
2014
- term[i]();
2015
- };
2016
- var cbf = function () {
2017
- var out = new u8(tot + 22), oe = o, cdl = tot - o;
2018
- tot = 0;
2019
- for (var i = 0; i < slft; ++i) {
2020
- var f = files[i];
2021
- try {
2022
- var l = f.c.length;
2023
- wzh(out, tot, f, f.f, f.u, l);
2024
- var badd = 30 + f.f.length + exfl(f.extra);
2025
- var loc = tot + badd;
2026
- out.set(f.c, loc);
2027
- 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
- }
2029
- catch (e) {
2030
- return cb(e, null);
2031
- }
2032
- }
2033
- wzf(out, o, files.length, cdl, oe);
2034
- cb(null, out);
2035
- };
2036
- if (!lft)
2037
- cbf();
2038
- var _loop_1 = function (i) {
2039
- var fn = k[i];
2040
- var _a = r[fn], file = _a[0], p = _a[1];
2041
- var c = crc(), size = file.length;
2042
- c.p(file);
2043
- var f = strToU8(fn), s = f.length;
2044
- var com = p.comment, m = com && strToU8(com), ms = m && m.length;
2045
- var exl = exfl(p.extra);
2046
- var compression = p.level == 0 ? 0 : 8;
2047
- var cbl = function (e, d) {
2048
- if (e) {
2049
- tAll();
2050
- cb(e, null);
2051
- }
2052
- else {
2053
- var l = d.length;
2054
- files[i] = mrg(p, {
2055
- size: size,
2056
- crc: c.d(),
2057
- c: d,
2058
- f: f,
2059
- m: m,
2060
- u: s != fn.length || (m && (com.length != ms)),
2061
- compression: compression
2062
- });
2063
- o += 30 + s + exl + l;
2064
- tot += 76 + 2 * (s + exl) + (ms || 0) + l;
2065
- if (!--lft)
2066
- cbf();
2067
- }
2068
- };
2069
- if (s > 65535)
2070
- cbl('filename too long', null);
2071
- if (!compression)
2072
- cbl(null, file);
2073
- else if (size < 160000) {
2074
- try {
2075
- cbl(null, deflateSync(file, p));
2076
- }
2077
- catch (e) {
2078
- cbl(e, null);
2079
- }
2080
- }
2081
- else
2082
- term.push(deflate(file, p, cbl));
2083
- };
2084
- // Cannot use lft because it can decrease
2085
- for (var i = 0; i < slft; ++i) {
2086
- _loop_1(i);
2087
- }
2088
- return tAll;
2089
- }
2090
- /**
2091
- * Synchronously creates a ZIP file. Prefer using `zip` for better performance
2092
- * with more than one file.
2093
- * @param data The directory structure for the ZIP archive
2094
- * @param opts The main options, merged with per-file options
2095
- * @returns The generated ZIP archive
2096
- */
2097
- export function zipSync(data, opts) {
2098
- if (!opts)
2099
- opts = {};
2100
- var r = {};
2101
- var files = [];
2102
- fltn(data, '', r, opts);
2103
- var o = 0;
2104
- var tot = 0;
2105
- for (var fn in r) {
2106
- var _a = r[fn], file = _a[0], p = _a[1];
2107
- var compression = p.level == 0 ? 0 : 8;
2108
- var f = strToU8(fn), s = f.length;
2109
- var com = p.comment, m = com && strToU8(com), ms = m && m.length;
2110
- var exl = exfl(p.extra);
2111
- if (s > 65535)
2112
- throw 'filename too long';
2113
- var d = compression ? deflateSync(file, p) : file, l = d.length;
2114
- var c = crc();
2115
- c.p(file);
2116
- files.push(mrg(p, {
2117
- size: file.length,
2118
- crc: c.d(),
2119
- c: d,
2120
- f: f,
2121
- m: m,
2122
- u: s != fn.length || (m && (com.length != ms)),
2123
- o: o,
2124
- compression: compression
2125
- }));
2126
- o += 30 + s + exl + l;
2127
- tot += 76 + 2 * (s + exl) + (ms || 0) + l;
2128
- }
2129
- var out = new u8(tot + 22), oe = o, cdl = tot - o;
2130
- for (var i = 0; i < files.length; ++i) {
2131
- var f = files[i];
2132
- wzh(out, f.o, f, f.f, f.u, f.c.length);
2133
- var badd = 30 + f.f.length + exfl(f.extra);
2134
- out.set(f.c, f.o + badd);
2135
- wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);
2136
- }
2137
- wzf(out, o, files.length, cdl, oe);
2138
- return out;
2139
- }
2140
- /**
2141
- * Streaming pass-through decompression for ZIP archives
2142
- */
2143
- var UnzipPassThrough = /*#__PURE__*/ (function () {
2144
- function UnzipPassThrough() {
2145
- }
2146
- UnzipPassThrough.prototype.push = function (data, final) {
2147
- this.ondata(null, data, final);
2148
- };
2149
- UnzipPassThrough.compression = 0;
2150
- return UnzipPassThrough;
2151
- }());
2152
- export { UnzipPassThrough };
2153
- /**
2154
- * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for
2155
- * better performance.
2156
- */
2157
- var UnzipInflate = /*#__PURE__*/ (function () {
2158
- /**
2159
- * Creates a DEFLATE decompression that can be used in ZIP archives
2160
- */
2161
- function UnzipInflate() {
2162
- var _this_1 = this;
2163
- this.i = new Inflate(function (dat, final) {
2164
- _this_1.ondata(null, dat, final);
2165
- });
2166
- }
2167
- UnzipInflate.prototype.push = function (data, final) {
2168
- try {
2169
- this.i.push(data, final);
2170
- }
2171
- catch (e) {
2172
- this.ondata(e, data, final);
2173
- }
2174
- };
2175
- UnzipInflate.compression = 8;
2176
- return UnzipInflate;
2177
- }());
2178
- export { UnzipInflate };
2179
- /**
2180
- * Asynchronous streaming DEFLATE decompression for ZIP archives
2181
- */
2182
- var AsyncUnzipInflate = /*#__PURE__*/ (function () {
2183
- /**
2184
- * Creates a DEFLATE decompression that can be used in ZIP archives
2185
- */
2186
- function AsyncUnzipInflate(_, sz) {
2187
- var _this_1 = this;
2188
- if (sz < 320000) {
2189
- this.i = new Inflate(function (dat, final) {
2190
- _this_1.ondata(null, dat, final);
2191
- });
2192
- }
2193
- else {
2194
- this.i = new AsyncInflate(function (err, dat, final) {
2195
- _this_1.ondata(err, dat, final);
2196
- });
2197
- this.terminate = this.i.terminate;
2198
- }
2199
- }
2200
- AsyncUnzipInflate.prototype.push = function (data, final) {
2201
- if (this.i.terminate)
2202
- data = slc(data, 0);
2203
- this.i.push(data, final);
2204
- };
2205
- AsyncUnzipInflate.compression = 8;
2206
- return AsyncUnzipInflate;
2207
- }());
2208
- export { AsyncUnzipInflate };
2209
- /**
2210
- * A ZIP archive decompression stream that emits files as they are discovered
2211
- */
2212
- var Unzip = /*#__PURE__*/ (function () {
2213
- /**
2214
- * Creates a ZIP decompression stream
2215
- * @param cb The callback to call whenever a file in the ZIP archive is found
2216
- */
2217
- function Unzip(cb) {
2218
- this.onfile = cb;
2219
- this.k = [];
2220
- this.o = {
2221
- 0: UnzipPassThrough
2222
- };
2223
- this.p = et;
2224
- }
2225
- /**
2226
- * Pushes a chunk to be unzipped
2227
- * @param chunk The chunk to push
2228
- * @param final Whether this is the last chunk
2229
- */
2230
- Unzip.prototype.push = function (chunk, final) {
2231
- var _this_1 = this;
2232
- if (!this.onfile)
2233
- throw 'no callback';
2234
- if (!this.p)
2235
- throw 'stream finished';
2236
- if (this.c > 0) {
2237
- var len = Math.min(this.c, chunk.length);
2238
- var toAdd = chunk.subarray(0, len);
2239
- this.c -= len;
2240
- if (this.d)
2241
- this.d.push(toAdd, !this.c);
2242
- else
2243
- this.k[0].push(toAdd);
2244
- chunk = chunk.subarray(len);
2245
- if (chunk.length)
2246
- return this.push(chunk, final);
2247
- }
2248
- else {
2249
- var f = 0, i = 0, is = void 0, buf = void 0;
2250
- if (!this.p.length)
2251
- buf = chunk;
2252
- else if (!chunk.length)
2253
- buf = this.p;
2254
- else {
2255
- buf = new u8(this.p.length + chunk.length);
2256
- buf.set(this.p), buf.set(chunk, this.p.length);
2257
- }
2258
- var l = buf.length, oc = this.c, add = oc && this.d;
2259
- var _loop_2 = function () {
2260
- var _a;
2261
- var sig = b4(buf, i);
2262
- if (sig == 0x4034B50) {
2263
- f = 1, is = i;
2264
- this_1.d = null;
2265
- this_1.c = 0;
2266
- 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
- if (l > i + 30 + fnl + es) {
2268
- var chks_2 = [];
2269
- this_1.k.unshift(chks_2);
2270
- f = 2;
2271
- var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);
2272
- var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);
2273
- if (sc_1 == 4294967295) {
2274
- _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];
2275
- }
2276
- else if (dd)
2277
- sc_1 = -1;
2278
- i += es;
2279
- this_1.c = sc_1;
2280
- var d_1;
2281
- var file_1 = {
2282
- name: fn_1,
2283
- compression: cmp_1,
2284
- start: function () {
2285
- if (!file_1.ondata)
2286
- throw 'no callback';
2287
- if (!sc_1)
2288
- file_1.ondata(null, et, true);
2289
- else {
2290
- var ctr = _this_1.o[cmp_1];
2291
- if (!ctr)
2292
- throw 'unknown compression type ' + cmp_1;
2293
- d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);
2294
- 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];
2297
- d_1.push(dat, false);
2298
- }
2299
- if (_this_1.k[0] == chks_2 && _this_1.c)
2300
- _this_1.d = d_1;
2301
- else
2302
- d_1.push(et, true);
2303
- }
2304
- },
2305
- terminate: function () {
2306
- if (d_1 && d_1.terminate)
2307
- d_1.terminate();
2308
- }
2309
- };
2310
- if (sc_1 >= 0)
2311
- file_1.size = sc_1, file_1.originalSize = su_1;
2312
- this_1.onfile(file_1);
2313
- }
2314
- return "break";
2315
- }
2316
- else if (oc) {
2317
- if (sig == 0x8074B50) {
2318
- is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;
2319
- return "break";
2320
- }
2321
- else if (sig == 0x2014B50) {
2322
- is = i -= 4, f = 3, this_1.c = 0;
2323
- return "break";
2324
- }
2325
- }
2326
- };
2327
- var this_1 = this;
2328
- for (; i < l - 4; ++i) {
2329
- var state_1 = _loop_2();
2330
- if (state_1 === "break")
2331
- break;
2332
- }
2333
- this.p = et;
2334
- if (oc < 0) {
2335
- var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);
2336
- if (add)
2337
- add.push(dat, !!f);
2338
- else
2339
- this.k[+(f == 2)].push(dat);
2340
- }
2341
- if (f & 2)
2342
- return this.push(buf.subarray(i), final);
2343
- this.p = buf.subarray(i);
2344
- }
2345
- if (final) {
2346
- if (this.c)
2347
- throw 'invalid zip file';
2348
- this.p = null;
2349
- }
2350
- };
2351
- /**
2352
- * Registers a decoder with the stream, allowing for files compressed with
2353
- * the compression type provided to be expanded correctly
2354
- * @param decoder The decoder constructor
2355
- */
2356
- Unzip.prototype.register = function (decoder) {
2357
- this.o[decoder.compression] = decoder;
2358
- };
2359
- return Unzip;
2360
- }());
2361
- 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) {
2369
- if (typeof cb != 'function')
2370
- throw 'no callback';
2371
- var term = [];
2372
- var tAll = function () {
2373
- for (var i = 0; i < term.length; ++i)
2374
- term[i]();
2375
- };
2376
- var files = {};
2377
- var e = data.length - 22;
2378
- for (; b4(data, e) != 0x6054B50; --e) {
2379
- if (!e || data.length - e > 65558) {
2380
- cb('invalid zip file', null);
2381
- return;
2382
- }
2383
- }
2384
- ;
2385
- 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);
2407
- }
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)));
2421
- }
2422
- catch (e) {
2423
- cbl(e, null);
2424
- }
2425
- }
2426
- else
2427
- term.push(inflate(infl, { size: su }, cbl));
2428
- }
2429
- else
2430
- cbl('unknown compression type ' + c_1, null);
2431
- };
2432
- for (var i = 0; i < c; ++i) {
2433
- _loop_3(i);
2434
- }
2435
- return tAll;
2436
- }
2437
- /**
2438
- * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better
2439
- * performance with more than one file.
2440
- * @param data The raw compressed ZIP file
2441
- * @returns The decompressed files
2442
- */
2443
- export function unzipSync(data) {
2444
- var files = {};
2445
- var e = data.length - 22;
2446
- for (; b4(data, e) != 0x6054B50; --e) {
2447
- if (!e || data.length - e > 65558)
2448
- throw 'invalid zip file';
2449
- }
2450
- ;
2451
- var c = b2(data, e + 8);
2452
- if (!c)
2453
- return {};
2454
- var o = b4(data, e + 16);
2455
- var z = o == 4294967295;
2456
- 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);
2462
- }
2463
- for (var i = 0; i < c; ++i) {
2464
- 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
- 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;
2472
- }
2473
- return files;
2474
- }
1
+ /*!
2
+ fflate - fast JavaScript compression/decompression
3
+ <https://101arrowz.github.io/fflate>
4
+ Licensed under MIT. https://github.com/101arrowz/fflate/blob/master/LICENSE
5
+ version 0.6.9
6
+ */
7
+
8
+ // DEFLATE is a complex format; to read this code, you should probably check the RFC first:
9
+ // https://tools.ietf.org/html/rfc1951
10
+ // You may also wish to take a look at the guide I made about this program:
11
+ // https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad
12
+ // Some of the following code is similar to that of UZIP.js:
13
+ // https://github.com/photopea/UZIP.js
14
+ // However, the vast majority of the codebase has diverged from UZIP.js to increase performance and reduce bundle size.
15
+ // Sometimes 0 will appear where -1 would be more appropriate. This is because using a uint
16
+ // is better for memory in most engines (I *think*).
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
+ 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); };
33
+ w.postMessage(msg, transfer);
34
+ return w;
35
+ });
36
+
37
+ // aliases for shorter compressed code (most minifers don't do this)
38
+ var u8 = Uint8Array, u16 = Uint16Array, u32 = Uint32Array;
39
+ // fixed length extra bits
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
+ // fixed distance extra bits
42
+ // see fleb note
43
+ 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
+ // code length index map
45
+ var clim = new u8([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]);
46
+ // get base, reverse index map from extra bits
47
+ var freb = function (eb, start) {
48
+ var b = new u16(31);
49
+ for (var i = 0; i < 31; ++i) {
50
+ b[i] = start += 1 << eb[i - 1];
51
+ }
52
+ // numbers here are at max 18 bits
53
+ var r = new u32(b[30]);
54
+ for (var i = 1; i < 30; ++i) {
55
+ for (var j = b[i]; j < b[i + 1]; ++j) {
56
+ r[j] = ((j - b[i]) << 5) | i;
57
+ }
58
+ }
59
+ return [b, r];
60
+ };
61
+ var _a = freb(fleb, 2), fl = _a[0], revfl = _a[1];
62
+ // we can ignore the fact that the other numbers are wrong; they never happen anyway
63
+ fl[28] = 258, revfl[258] = 28;
64
+ var _b = freb(fdeb, 0), fd = _b[0], revfd = _b[1];
65
+ // map of value to reverse (assuming 16 bits)
66
+ var rev = new u16(32768);
67
+ for (var i = 0; i < 32768; ++i) {
68
+ // 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;
73
+ }
74
+ // create huffman tree from u8 "map": index -> code length for code index
75
+ // mb (max bits) must be at most 15
76
+ // TODO: optimize/split up?
77
+ var hMap = (function (cd, mb, r) {
78
+ var s = cd.length;
79
+ // index
80
+ var i = 0;
81
+ // u16 "map": index -> # of codes with bit length = index
82
+ var l = new u16(mb);
83
+ // length of cd must be 288 (total # of codes)
84
+ for (; i < s; ++i)
85
+ ++l[cd[i] - 1];
86
+ // u16 "map": index -> minimum code for bit length = index
87
+ var le = new u16(mb);
88
+ for (i = 0; i < mb; ++i) {
89
+ le[i] = (le[i - 1] + l[i - 1]) << 1;
90
+ }
91
+ var co;
92
+ if (r) {
93
+ // u16 "map": index -> number of actual bits, symbol for code
94
+ co = new u16(1 << mb);
95
+ // bits to remove for reverser
96
+ var rvb = 15 - mb;
97
+ for (i = 0; i < s; ++i) {
98
+ // ignore 0 lengths
99
+ if (cd[i]) {
100
+ // num encoding both symbol and bits read
101
+ var sv = (i << 4) | cd[i];
102
+ // free bits
103
+ var r_1 = mb - cd[i];
104
+ // start value
105
+ var v = le[cd[i] - 1]++ << r_1;
106
+ // m is end value
107
+ for (var m = v | ((1 << r_1) - 1); v <= m; ++v) {
108
+ // every 16 bit value starting with the code yields the same result
109
+ co[rev[v] >>> rvb] = sv;
110
+ }
111
+ }
112
+ }
113
+ }
114
+ else {
115
+ co = new u16(s);
116
+ for (i = 0; i < s; ++i) {
117
+ if (cd[i]) {
118
+ co[i] = rev[le[cd[i] - 1]++] >>> (15 - cd[i]);
119
+ }
120
+ }
121
+ }
122
+ return co;
123
+ });
124
+ // fixed length tree
125
+ var flt = new u8(288);
126
+ for (var i = 0; i < 144; ++i)
127
+ flt[i] = 8;
128
+ for (var i = 144; i < 256; ++i)
129
+ flt[i] = 9;
130
+ for (var i = 256; i < 280; ++i)
131
+ flt[i] = 7;
132
+ for (var i = 280; i < 288; ++i)
133
+ flt[i] = 8;
134
+ // fixed distance tree
135
+ var fdt = new u8(32);
136
+ for (var i = 0; i < 32; ++i)
137
+ fdt[i] = 5;
138
+ // fixed length map
139
+ var flm = /*#__PURE__*/ hMap(flt, 9, 0), flrm = /*#__PURE__*/ hMap(flt, 9, 1);
140
+ // fixed distance map
141
+ var fdm = /*#__PURE__*/ hMap(fdt, 5, 0), fdrm = /*#__PURE__*/ hMap(fdt, 5, 1);
142
+ // find max of array
143
+ var max = function (a) {
144
+ var m = a[0];
145
+ for (var i = 1; i < a.length; ++i) {
146
+ if (a[i] > m)
147
+ m = a[i];
148
+ }
149
+ return m;
150
+ };
151
+ // read d, starting at bit p and mask with m
152
+ var bits = function (d, p, m) {
153
+ var o = (p / 8) | 0;
154
+ return ((d[o] | (d[o + 1] << 8)) >> (p & 7)) & m;
155
+ };
156
+ // read d, starting at bit p continuing for at least 16 bits
157
+ var bits16 = function (d, p) {
158
+ var o = (p / 8) | 0;
159
+ return ((d[o] | (d[o + 1] << 8) | (d[o + 2] << 16)) >> (p & 7));
160
+ };
161
+ // get end of byte
162
+ var shft = function (p) { return ((p / 8) | 0) + (p & 7 && 1); };
163
+ // typed array slice - allows garbage collector to free original reference,
164
+ // while being more compatible than .slice
165
+ var slc = function (v, s, e) {
166
+ if (s == null || s < 0)
167
+ s = 0;
168
+ if (e == null || e > v.length)
169
+ e = v.length;
170
+ // 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;
174
+ };
175
+ // 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))
180
+ return buf || new u8(0);
181
+ // have to estimate size
182
+ var noBuf = !buf || st;
183
+ // no state
184
+ var noSt = !st || st.i;
185
+ if (!st)
186
+ st = {};
187
+ // Assumes roughly 33% compression ratio average
188
+ if (!buf)
189
+ buf = new u8(sl * 3);
190
+ // ensure buffer can fit at least l elements
191
+ var cbuf = function (l) {
192
+ var bl = buf.length;
193
+ // need to increase size to fit
194
+ if (l > bl) {
195
+ // Double or set to necessary, whichever is greater
196
+ var nbuf = new u8(Math.max(bl * 2, l));
197
+ nbuf.set(buf);
198
+ buf = nbuf;
199
+ }
200
+ };
201
+ // last chunk bitpos bytes
202
+ var final = st.f || 0, pos = st.p || 0, bt = st.b || 0, lm = st.l, dm = st.d, lbt = st.m, dbt = st.n;
203
+ // total bits
204
+ var tbts = sl * 8;
205
+ do {
206
+ if (!lm) {
207
+ // BFINAL - this is only 1 when last chunk is next
208
+ st.f = final = bits(dat, pos, 1);
209
+ // type: 0 = no compression, 1 = fixed huffman, 2 = dynamic huffman
210
+ var type = bits(dat, pos + 1, 3);
211
+ pos += 3;
212
+ if (!type) {
213
+ // go to end of byte boundary
214
+ var s = shft(pos) + 4, l = dat[s - 4] | (dat[s - 3] << 8), t = s + l;
215
+ if (t > sl) {
216
+ if (noSt)
217
+ throw 'unexpected EOF';
218
+ break;
219
+ }
220
+ // ensure size
221
+ if (noBuf)
222
+ cbuf(bt + l);
223
+ // Copy over uncompressed data
224
+ buf.set(dat.subarray(s, t), bt);
225
+ // Get new bitpos, update byte count
226
+ st.b = bt += l, st.p = pos = t * 8;
227
+ continue;
228
+ }
229
+ else if (type == 1)
230
+ lm = flrm, dm = fdrm, lbt = 9, dbt = 5;
231
+ else if (type == 2) {
232
+ // literal lengths
233
+ var hLit = bits(dat, pos, 31) + 257, hcLen = bits(dat, pos + 10, 15) + 4;
234
+ var tl = hLit + bits(dat, pos + 5, 31) + 1;
235
+ pos += 14;
236
+ // length+distance tree
237
+ var ldt = new u8(tl);
238
+ // code length tree
239
+ var clt = new u8(19);
240
+ for (var i = 0; i < hcLen; ++i) {
241
+ // use index map to get real code
242
+ clt[clim[i]] = bits(dat, pos + i * 3, 7);
243
+ }
244
+ pos += hcLen * 3;
245
+ // code lengths bits
246
+ var clb = max(clt), clbmsk = (1 << clb) - 1;
247
+ // code lengths map
248
+ var clm = hMap(clt, clb, 1);
249
+ for (var i = 0; i < tl;) {
250
+ var r = clm[bits(dat, pos, clbmsk)];
251
+ // bits read
252
+ pos += r & 15;
253
+ // symbol
254
+ var s = r >>> 4;
255
+ // code length to copy
256
+ if (s < 16) {
257
+ ldt[i++] = s;
258
+ }
259
+ else {
260
+ // copy count
261
+ var c = 0, n = 0;
262
+ if (s == 16)
263
+ n = 3 + bits(dat, pos, 3), pos += 2, c = ldt[i - 1];
264
+ else if (s == 17)
265
+ n = 3 + bits(dat, pos, 7), pos += 3;
266
+ else if (s == 18)
267
+ n = 11 + bits(dat, pos, 127), pos += 7;
268
+ while (n--)
269
+ ldt[i++] = c;
270
+ }
271
+ }
272
+ // length tree distance tree
273
+ var lt = ldt.subarray(0, hLit), dt = ldt.subarray(hLit);
274
+ // max length bits
275
+ lbt = max(lt);
276
+ // max dist bits
277
+ dbt = max(dt);
278
+ lm = hMap(lt, lbt, 1);
279
+ dm = hMap(dt, dbt, 1);
280
+ }
281
+ else
282
+ throw 'invalid block type';
283
+ if (pos > tbts) {
284
+ if (noSt)
285
+ throw 'unexpected EOF';
286
+ break;
287
+ }
288
+ }
289
+ // Make sure the buffer can hold this + the largest possible addition
290
+ // Maximum chunk size (practically, theoretically infinite) is 2^17;
291
+ if (noBuf)
292
+ cbuf(bt + 131072);
293
+ var lms = (1 << lbt) - 1, dms = (1 << dbt) - 1;
294
+ var lpos = pos;
295
+ for (;; lpos = pos) {
296
+ // bits read, code
297
+ var c = lm[bits16(dat, pos) & lms], sym = c >>> 4;
298
+ pos += c & 15;
299
+ if (pos > tbts) {
300
+ if (noSt)
301
+ throw 'unexpected EOF';
302
+ break;
303
+ }
304
+ if (!c)
305
+ throw 'invalid length/literal';
306
+ if (sym < 256)
307
+ buf[bt++] = sym;
308
+ else if (sym == 256) {
309
+ lpos = pos, lm = null;
310
+ break;
311
+ }
312
+ else {
313
+ var add = sym - 254;
314
+ // no extra bits needed if less
315
+ if (sym > 264) {
316
+ // index
317
+ var i = sym - 257, b = fleb[i];
318
+ add = bits(dat, pos, (1 << b) - 1) + fl[i];
319
+ pos += b;
320
+ }
321
+ // dist
322
+ var d = dm[bits16(dat, pos) & dms], dsym = d >>> 4;
323
+ if (!d)
324
+ throw 'invalid distance';
325
+ pos += d & 15;
326
+ var dt = fd[dsym];
327
+ if (dsym > 3) {
328
+ var b = fdeb[dsym];
329
+ dt += bits16(dat, pos) & ((1 << b) - 1), pos += b;
330
+ }
331
+ if (pos > tbts) {
332
+ if (noSt)
333
+ throw 'unexpected EOF';
334
+ break;
335
+ }
336
+ if (noBuf)
337
+ cbuf(bt + 131072);
338
+ 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];
344
+ }
345
+ bt = end;
346
+ }
347
+ }
348
+ st.l = lm, st.p = lpos, st.b = bt;
349
+ if (lm)
350
+ final = 1, st.m = lbt, st.d = dm, st.n = dbt;
351
+ } while (!final);
352
+ return bt == buf.length ? buf : slc(buf, 0, bt);
353
+ };
354
+ // starting at p, write the minimum number of bits that can hold v to d
355
+ var wbits = function (d, p, v) {
356
+ v <<= p & 7;
357
+ var o = (p / 8) | 0;
358
+ d[o] |= v;
359
+ d[o + 1] |= v >>> 8;
360
+ };
361
+ // starting at p, write the minimum number of bits (>8) that can hold v to d
362
+ var wbits16 = function (d, p, v) {
363
+ v <<= p & 7;
364
+ var o = (p / 8) | 0;
365
+ d[o] |= v;
366
+ d[o + 1] |= v >>> 8;
367
+ d[o + 2] |= v >>> 16;
368
+ };
369
+ // creates code lengths from a frequency table
370
+ var hTree = function (d, mb) {
371
+ // Need extra info to make a tree
372
+ var t = [];
373
+ for (var i = 0; i < d.length; ++i) {
374
+ if (d[i])
375
+ t.push({ s: i, f: d[i] });
376
+ }
377
+ var s = t.length;
378
+ var t2 = t.slice();
379
+ if (!s)
380
+ return [et, 0];
381
+ if (s == 1) {
382
+ var v = new u8(t[0].s + 1);
383
+ v[t[0].s] = 1;
384
+ return [v, 1];
385
+ }
386
+ t.sort(function (a, b) { return a.f - b.f; });
387
+ // after i2 reaches last ind, will be stopped
388
+ // freq must be greater than largest possible number of symbols
389
+ t.push({ s: -1, f: 25001 });
390
+ var l = t[0], r = t[1], i0 = 0, i1 = 1, i2 = 2;
391
+ t[0] = { s: -1, f: l.f + r.f, l: l, r: r };
392
+ // efficient algorithm from UZIP.js
393
+ // i0 is lookbehind, i2 is lookahead - after processing two low-freq
394
+ // symbols that combined have high freq, will start processing i2 (high-freq,
395
+ // non-composite) symbols instead
396
+ // see https://reddit.com/r/photopea/comments/ikekht/uzipjs_questions/
397
+ while (i1 != s - 1) {
398
+ l = t[t[i0].f < t[i2].f ? i0++ : i2++];
399
+ r = t[i0 != i1 && t[i0].f < t[i2].f ? i0++ : i2++];
400
+ t[i1++] = { s: -1, f: l.f + r.f, l: l, r: r };
401
+ }
402
+ var maxSym = t2[0].s;
403
+ for (var i = 1; i < s; ++i) {
404
+ if (t2[i].s > maxSym)
405
+ maxSym = t2[i].s;
406
+ }
407
+ // code lengths
408
+ var tr = new u16(maxSym + 1);
409
+ // max bits in tree
410
+ var mbt = ln(t[i1 - 1], tr, 0);
411
+ if (mbt > mb) {
412
+ // more algorithms from UZIP.js
413
+ // TODO: find out how this code works (debt)
414
+ // ind debt
415
+ var i = 0, dt = 0;
416
+ // left cost
417
+ var lft = mbt - mb, cst = 1 << lft;
418
+ t2.sort(function (a, b) { return tr[b.s] - tr[a.s] || a.f - b.f; });
419
+ for (; i < s; ++i) {
420
+ var i2_1 = t2[i].s;
421
+ if (tr[i2_1] > mb) {
422
+ dt += cst - (1 << (mbt - tr[i2_1]));
423
+ tr[i2_1] = mb;
424
+ }
425
+ else
426
+ break;
427
+ }
428
+ dt >>>= lft;
429
+ while (dt > 0) {
430
+ var i2_2 = t2[i].s;
431
+ if (tr[i2_2] < mb)
432
+ dt -= 1 << (mb - tr[i2_2]++ - 1);
433
+ else
434
+ ++i;
435
+ }
436
+ for (; i >= 0 && dt; --i) {
437
+ var i2_3 = t2[i].s;
438
+ if (tr[i2_3] == mb) {
439
+ --tr[i2_3];
440
+ ++dt;
441
+ }
442
+ }
443
+ mbt = mb;
444
+ }
445
+ return [new u8(tr), mbt];
446
+ };
447
+ // get the max length and assign length codes
448
+ var ln = function (n, l, d) {
449
+ return n.s == -1
450
+ ? Math.max(ln(n.l, l, d + 1), ln(n.r, l, d + 1))
451
+ : (l[n.s] = d);
452
+ };
453
+ // length codes generation
454
+ var lc = function (c) {
455
+ var s = c.length;
456
+ // Note that the semicolon was intentional
457
+ while (s && !c[--s])
458
+ ;
459
+ var cl = new u16(++s);
460
+ // ind num streak
461
+ var cli = 0, cln = c[0], cls = 1;
462
+ var w = function (v) { cl[cli++] = v; };
463
+ for (var i = 1; i <= s; ++i) {
464
+ if (c[i] == cln && i != s)
465
+ ++cls;
466
+ else {
467
+ if (!cln && cls > 2) {
468
+ for (; cls > 138; cls -= 138)
469
+ w(32754);
470
+ if (cls > 2) {
471
+ w(cls > 10 ? ((cls - 11) << 5) | 28690 : ((cls - 3) << 5) | 12305);
472
+ cls = 0;
473
+ }
474
+ }
475
+ else if (cls > 3) {
476
+ w(cln), --cls;
477
+ for (; cls > 6; cls -= 6)
478
+ w(8304);
479
+ if (cls > 2)
480
+ w(((cls - 3) << 5) | 8208), cls = 0;
481
+ }
482
+ while (cls--)
483
+ w(cln);
484
+ cls = 1;
485
+ cln = c[i];
486
+ }
487
+ }
488
+ return [cl.subarray(0, cli), s];
489
+ };
490
+ // calculate the length of output from tree, code lengths
491
+ var clen = function (cf, cl) {
492
+ var l = 0;
493
+ for (var i = 0; i < cl.length; ++i)
494
+ l += cf[i] * cl[i];
495
+ return l;
496
+ };
497
+ // writes a fixed block
498
+ // returns the new bit pos
499
+ var wfblk = function (out, pos, dat) {
500
+ // no need to write 00 as type: TypedArray defaults to 0
501
+ var s = dat.length;
502
+ var o = shft(pos + 2);
503
+ out[o] = s & 255;
504
+ out[o + 1] = s >>> 8;
505
+ out[o + 2] = out[o] ^ 255;
506
+ out[o + 3] = out[o + 1] ^ 255;
507
+ for (var i = 0; i < s; ++i)
508
+ out[o + i + 4] = dat[i];
509
+ return (o + 4 + s) * 8;
510
+ };
511
+ // writes a block
512
+ var wblk = function (dat, out, final, syms, lf, df, eb, li, bs, bl, p) {
513
+ wbits(out, p++, final);
514
+ ++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];
519
+ var lcfreq = new u16(19);
520
+ for (var i = 0; i < lclt.length; ++i)
521
+ lcfreq[lclt[i] & 31]++;
522
+ 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];
525
+ var nlcc = 19;
526
+ for (; nlcc > 4 && !lct[clim[nlcc - 1]]; --nlcc)
527
+ ;
528
+ var flen = (bl + 5) << 3;
529
+ 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)
532
+ return wfblk(out, p, dat.subarray(bs, bs + bl));
533
+ var lm, ll, dm, dl;
534
+ wbits(out, p, 1 + (dtlen < ftlen)), p += 2;
535
+ if (dtlen < ftlen) {
536
+ lm = hMap(dlt, mlb, 0), ll = dlt, dm = hMap(ddt, mdb, 0), dl = ddt;
537
+ var llm = hMap(lct, mlcb, 0);
538
+ wbits(out, p, nlc - 257);
539
+ wbits(out, p + 5, ndc - 1);
540
+ wbits(out, p + 10, nlcc - 4);
541
+ p += 14;
542
+ for (var i = 0; i < nlcc; ++i)
543
+ wbits(out, p + 3 * i, lct[clim[i]]);
544
+ p += 3 * nlcc;
545
+ var lcts = [lclt, lcdt];
546
+ for (var it = 0; it < 2; ++it) {
547
+ var clct = lcts[it];
548
+ for (var i = 0; i < clct.length; ++i) {
549
+ var len = clct[i] & 31;
550
+ wbits(out, p, llm[len]), p += lct[len];
551
+ if (len > 15)
552
+ wbits(out, p, (clct[i] >>> 5) & 127), p += clct[i] >>> 12;
553
+ }
554
+ }
555
+ }
556
+ else {
557
+ lm = flm, ll = flt, dm = fdm, dl = fdt;
558
+ }
559
+ for (var i = 0; i < li; ++i) {
560
+ if (syms[i] > 255) {
561
+ var len = (syms[i] >>> 18) & 31;
562
+ wbits16(out, p, lm[len + 257]), p += ll[len + 257];
563
+ if (len > 7)
564
+ wbits(out, p, (syms[i] >>> 23) & 31), p += fleb[len];
565
+ var dst = syms[i] & 31;
566
+ wbits16(out, p, dm[dst]), p += dl[dst];
567
+ if (dst > 3)
568
+ wbits16(out, p, (syms[i] >>> 5) & 8191), p += fdeb[dst];
569
+ }
570
+ else {
571
+ wbits16(out, p, lm[syms[i]]), p += ll[syms[i]];
572
+ }
573
+ }
574
+ wbits16(out, p, lm[256]);
575
+ return p + ll[256];
576
+ };
577
+ // deflate options (nice << 13) | chain
578
+ var deo = /*#__PURE__*/ new u32([65540, 131080, 131088, 131104, 262176, 1048704, 1048832, 2114560, 2117632]);
579
+ // empty
580
+ var et = /*#__PURE__*/ new u8(0);
581
+ // compresses data into a raw DEFLATE buffer
582
+ var dflt = function (dat, lvl, plvl, pre, post, lst) {
583
+ var s = dat.length;
584
+ var o = new u8(pre + s + 5 * (1 + Math.ceil(s / 7000)) + post);
585
+ // writing to this writes to the output buffer
586
+ 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 {
604
+ var opt = deo[lvl - 1];
605
+ var n = opt >>> 13, c = opt & 8191;
606
+ var msk_1 = (1 << plvl) - 1;
607
+ // prev 2-byte val map curr 2-byte val map
608
+ var prev = new u16(32768), head = new u16(msk_1 + 1);
609
+ var bs1_1 = Math.ceil(plvl / 3), bs2_1 = 2 * bs1_1;
610
+ var hsh = function (i) { return (dat[i] ^ (dat[i + 1] << bs1_1) ^ (dat[i + 2] << bs2_1)) & msk_1; };
611
+ // 24576 is an arbitrary number of maximum symbols per block
612
+ // 424 buffer for last block
613
+ var syms = new u32(25000);
614
+ // length/literal freq distance freq
615
+ 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) {
619
+ // hash value
620
+ // deopt when i > s - 3 - at end, deopt acceptable
621
+ var hv = hsh(i);
622
+ // index mod 32768 previous index mod
623
+ var imod = i & 32767, pimod = head[hv];
624
+ prev[imod] = pimod;
625
+ head[hv] = imod;
626
+ // We always should modify head and prev, but only add symbols if
627
+ // this data is not yet processed ("wait" for wait index)
628
+ if (wi <= i) {
629
+ // bytes remaining
630
+ var rem = s - i;
631
+ if ((lc_1 > 7000 || li > 24576) && rem > 423) {
632
+ pos = wblk(dat, w, 0, syms, lf, df, eb, li, bs, i - bs, pos);
633
+ li = lc_1 = eb = 0, bs = i;
634
+ for (var j = 0; j < 286; ++j)
635
+ lf[j] = 0;
636
+ for (var j = 0; j < 30; ++j)
637
+ df[j] = 0;
638
+ }
639
+ // len dist chain
640
+ var l = 2, d = 0, ch_1 = c, dif = (imod - pimod) & 32767;
641
+ if (rem > 2 && hv == hsh(i - dif)) {
642
+ var maxn = Math.min(n, rem) - 1;
643
+ var maxd = Math.min(32767, i);
644
+ // max possible length
645
+ // not capped at dif because decompressors implement "rolling" index population
646
+ var ml = Math.min(258, rem);
647
+ while (dif <= maxd && --ch_1 && imod != pimod) {
648
+ if (dat[i + l] == dat[i + l - dif]) {
649
+ var nl = 0;
650
+ for (; nl < ml && dat[i + nl] == dat[i + nl - dif]; ++nl)
651
+ ;
652
+ if (nl > l) {
653
+ l = nl, d = dif;
654
+ // break out early when we reach "nice" (we are satisfied enough)
655
+ if (nl > maxn)
656
+ break;
657
+ // now, find the rarest 2-byte sequence within this
658
+ // length of literals and search for that instead.
659
+ // Much faster than just using the start
660
+ var mmd = Math.min(dif, nl - 2);
661
+ var md = 0;
662
+ for (var j = 0; j < mmd; ++j) {
663
+ var ti = (i - dif + j + 32768) & 32767;
664
+ var pti = prev[ti];
665
+ var cd = (ti - pti + 32768) & 32767;
666
+ if (cd > md)
667
+ md = cd, pimod = ti;
668
+ }
669
+ }
670
+ }
671
+ // check the previous match
672
+ imod = pimod, pimod = prev[imod];
673
+ dif += (imod - pimod + 32768) & 32767;
674
+ }
675
+ }
676
+ // d will be nonzero only when a match was found
677
+ if (d) {
678
+ // store both dist and len data in one Uint32
679
+ // Make sure this is recognized as a len/dist with 28th bit (2^28)
680
+ syms[li++] = 268435456 | (revfl[l] << 18) | revfd[d];
681
+ var lin = revfl[l] & 31, din = revfd[d] & 31;
682
+ eb += fleb[lin] + fdeb[din];
683
+ ++lf[257 + lin];
684
+ ++df[din];
685
+ wi = i + l;
686
+ ++lc_1;
687
+ }
688
+ else {
689
+ syms[li++] = dat[i];
690
+ ++lf[dat[i]];
691
+ }
692
+ }
693
+ }
694
+ 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);
698
+ }
699
+ return slc(o, 0, pre + shft(pos) + post);
700
+ };
701
+ // CRC32 table
702
+ var crct = /*#__PURE__*/ (function () {
703
+ var t = new u32(256);
704
+ for (var i = 0; i < 256; ++i) {
705
+ var c = i, k = 9;
706
+ while (--k)
707
+ c = ((c & 1) && 0xEDB88320) ^ (c >>> 1);
708
+ t[i] = c;
709
+ }
710
+ return t;
711
+ })();
712
+ // CRC32
713
+ var crc = function () {
714
+ var c = -1;
715
+ return {
716
+ p: function (d) {
717
+ // closures have awful performance
718
+ var cr = c;
719
+ for (var i = 0; i < d.length; ++i)
720
+ cr = crct[(cr & 255) ^ d[i]] ^ (cr >>> 8);
721
+ c = cr;
722
+ },
723
+ d: function () { return ~c; }
724
+ };
725
+ };
726
+ // Alder32
727
+ var adler = function () {
728
+ var a = 1, b = 0;
729
+ return {
730
+ p: function (d) {
731
+ // closures have awful performance
732
+ var n = a, m = b;
733
+ var l = d.length;
734
+ for (var i = 0; i != l;) {
735
+ var e = Math.min(i + 2655, l);
736
+ for (; i < e; ++i)
737
+ m += n += d[i];
738
+ n = (n & 65535) + 15 * (n >> 16), m = (m & 65535) + 15 * (m >> 16);
739
+ }
740
+ a = n, b = m;
741
+ },
742
+ d: function () {
743
+ a %= 65521, b %= 65521;
744
+ return (a & 255) << 24 | (a >>> 8) << 16 | (b & 255) << 8 | (b >>> 8);
745
+ }
746
+ };
747
+ };
748
+ ;
749
+ // deflate with opts
750
+ 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);
752
+ };
753
+ // Walmart object spread
754
+ var mrg = function (a, b) {
755
+ var o = {};
756
+ for (var k in a)
757
+ o[k] = a[k];
758
+ for (var k in b)
759
+ o[k] = b[k];
760
+ return o;
761
+ };
762
+ // worker clone
763
+ // This is possibly the craziest part of the entire codebase, despite how simple it may seem.
764
+ // The only parameter to this function is a closure that returns an array of variables outside of the function scope.
765
+ // We're going to try to figure out the variable names used in the closure as strings because that is crucial for workerization.
766
+ // We will return an object mapping of true variable name to value (basically, the current scope as a JS object).
767
+ // The reason we can't just use the original variable names is minifiers mangling the toplevel scope.
768
+ // This took me three weeks to figure out how to do.
769
+ var wcln = function (fn, fnStr, td) {
770
+ var dt = fn();
771
+ var st = fn.toString();
772
+ var ks = st.slice(st.indexOf('[') + 1, st.lastIndexOf(']')).replace(/ /g, '').split(',');
773
+ for (var i = 0; i < dt.length; ++i) {
774
+ var v = dt[i], k = ks[i];
775
+ if (typeof v == 'function') {
776
+ fnStr += ';' + k + '=';
777
+ var st_1 = v.toString();
778
+ if (v.prototype) {
779
+ // for global objects
780
+ if (st_1.indexOf('[native code]') != -1) {
781
+ var spInd = st_1.indexOf(' ', 8) + 1;
782
+ fnStr += st_1.slice(spInd, st_1.indexOf('(', spInd));
783
+ }
784
+ else {
785
+ fnStr += st_1;
786
+ for (var t in v.prototype)
787
+ fnStr += ';' + k + '.prototype.' + t + '=' + v.prototype[t].toString();
788
+ }
789
+ }
790
+ else
791
+ fnStr += st_1;
792
+ }
793
+ else
794
+ td[k] = v;
795
+ }
796
+ return [fnStr, td];
797
+ };
798
+ var ch = [];
799
+ // clone bufs
800
+ var cbfs = function (v) {
801
+ var tl = [];
802
+ for (var k in v) {
803
+ if (v[k] instanceof u8 || v[k] instanceof u16 || v[k] instanceof u32)
804
+ tl.push((v[k] = new v[k].constructor(v[k])).buffer);
805
+ }
806
+ return tl;
807
+ };
808
+ // use a worker to execute code
809
+ var wrkr = function (fns, init, id, cb) {
810
+ var _a;
811
+ if (!ch[id]) {
812
+ var fnStr = '', td_1 = {}, m = fns.length - 1;
813
+ 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);
816
+ }
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);
819
+ };
820
+ // 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]; };
823
+ // gzip extra
824
+ var gze = function () { return [gzh, gzhl, wbytes, crc, crct]; };
825
+ // gunzip extra
826
+ var guze = function () { return [gzs, gzl]; };
827
+ // zlib extra
828
+ var zle = function () { return [zlh, wbytes, adler]; };
829
+ // unzlib extra
830
+ var zule = function () { return [zlv]; };
831
+ // post buf
832
+ 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); };
835
+ // async helper
836
+ var cbify = function (dat, opts, fns, init, id, cb) {
837
+ var w = wrkr(fns, init, id, function (err, dat) {
838
+ w.terminate();
839
+ cb(err, dat);
840
+ });
841
+ w.postMessage([dat, opts], opts.consume ? [dat.buffer] : []);
842
+ return function () { w.terminate(); };
843
+ };
844
+ // auto stream
845
+ var astrm = function (strm) {
846
+ strm.ondata = function (dat, final) { return postMessage([dat, final], [dat.buffer]); };
847
+ return function (ev) { return strm.push(ev.data[0], ev.data[1]); };
848
+ };
849
+ // async stream attach
850
+ var astrmify = function (fns, strm, opts, init, id) {
851
+ var t;
852
+ var w = wrkr(fns, init, id, function (err, dat) {
853
+ if (err)
854
+ w.terminate(), strm.ondata.call(strm, err);
855
+ else {
856
+ if (dat[1])
857
+ w.terminate();
858
+ strm.ondata.call(strm, err, dat[0], dat[1]);
859
+ }
860
+ });
861
+ w.postMessage(opts);
862
+ strm.push = function (d, f) {
863
+ if (t)
864
+ throw 'stream finished';
865
+ if (!strm.ondata)
866
+ throw 'no stream handler';
867
+ w.postMessage([d, t = f], [d.buffer]);
868
+ };
869
+ strm.terminate = function () { w.terminate(); };
870
+ };
871
+ // read 2 bytes
872
+ var b2 = function (d, b) { return d[b] | (d[b + 1] << 8); };
873
+ // read 4 bytes
874
+ var b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };
875
+ var b8 = function (d, b) { return b4(d, b) + (b4(d, b + 4) * 4294967296); };
876
+ // write bytes
877
+ var wbytes = function (d, b, v) {
878
+ for (; v; ++b)
879
+ d[b] = v, v >>>= 8;
880
+ };
881
+ // gzip header
882
+ var gzh = function (c, o) {
883
+ var fn = o.filename;
884
+ c[0] = 31, c[1] = 139, c[2] = 8, c[8] = o.level < 2 ? 4 : o.level == 9 ? 2 : 0, c[9] = 3; // assume Unix
885
+ if (o.mtime != 0)
886
+ wbytes(c, 4, Math.floor(new Date(o.mtime || Date.now()) / 1000));
887
+ if (fn) {
888
+ c[3] = 8;
889
+ for (var i = 0; i <= fn.length; ++i)
890
+ c[i + 10] = fn.charCodeAt(i);
891
+ }
892
+ };
893
+ // gzip footer: -8 to -4 = CRC, -4 to -0 is length
894
+ // gzip start
895
+ var gzs = function (d) {
896
+ if (d[0] != 31 || d[1] != 139 || d[2] != 8)
897
+ throw 'invalid gzip data';
898
+ var flg = d[3];
899
+ var st = 10;
900
+ if (flg & 4)
901
+ st += d[10] | (d[11] << 8) + 2;
902
+ for (var zs = (flg >> 3 & 1) + (flg >> 4 & 1); zs > 0; zs -= !d[st++])
903
+ ;
904
+ return st + (flg & 2);
905
+ };
906
+ // gzip length
907
+ var gzl = function (d) {
908
+ var l = d.length;
909
+ return ((d[l - 4] | d[l - 3] << 8 | d[l - 2] << 16) | (d[l - 1] << 24)) >>> 0;
910
+ };
911
+ // gzip header length
912
+ var gzhl = function (o) { return 10 + ((o.filename && (o.filename.length + 1)) || 0); };
913
+ // zlib header
914
+ var zlh = function (c, o) {
915
+ 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);
917
+ };
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';
924
+ };
925
+ function AsyncCmpStrm(opts, cb) {
926
+ if (!cb && typeof opts == 'function')
927
+ cb = opts, opts = {};
928
+ this.ondata = cb;
929
+ return opts;
930
+ }
931
+ // zlib footer: -4 to -0 is Adler32
932
+ /**
933
+ * Streaming DEFLATE compression
934
+ */
935
+ var Deflate = /*#__PURE__*/ (function () {
936
+ function Deflate(opts, cb) {
937
+ if (!cb && typeof opts == 'function')
938
+ cb = opts, opts = {};
939
+ this.ondata = cb;
940
+ this.o = opts || {};
941
+ }
942
+ Deflate.prototype.p = function (c, f) {
943
+ this.ondata(dopt(c, this.o, 0, 0, !f), f);
944
+ };
945
+ /**
946
+ * Pushes a chunk to be deflated
947
+ * @param chunk The chunk to push
948
+ * @param final Whether this is the last chunk
949
+ */
950
+ Deflate.prototype.push = function (chunk, final) {
951
+ if (this.d)
952
+ throw 'stream finished';
953
+ if (!this.ondata)
954
+ throw 'no stream handler';
955
+ this.d = final;
956
+ this.p(chunk, final || false);
957
+ };
958
+ return Deflate;
959
+ }());
960
+ export { Deflate };
961
+ /**
962
+ * Asynchronous streaming DEFLATE compression
963
+ */
964
+ var AsyncDeflate = /*#__PURE__*/ (function () {
965
+ function AsyncDeflate(opts, cb) {
966
+ astrmify([
967
+ bDflt,
968
+ function () { return [astrm, Deflate]; }
969
+ ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {
970
+ var strm = new Deflate(ev.data);
971
+ onmessage = astrm(strm);
972
+ }, 6);
973
+ }
974
+ return AsyncDeflate;
975
+ }());
976
+ export { AsyncDeflate };
977
+ export function deflate(data, opts, cb) {
978
+ if (!cb)
979
+ cb = opts, opts = {};
980
+ if (typeof cb != 'function')
981
+ throw 'no callback';
982
+ return cbify(data, opts, [
983
+ bDflt,
984
+ ], function (ev) { return pbf(deflateSync(ev.data[0], ev.data[1])); }, 0, cb);
985
+ }
986
+ /**
987
+ * Compresses data with DEFLATE without any wrapper
988
+ * @param data The data to compress
989
+ * @param opts The compression options
990
+ * @returns The deflated version of the data
991
+ */
992
+ export function deflateSync(data, opts) {
993
+ return dopt(data, opts || {}, 0, 0);
994
+ }
995
+ /**
996
+ * Streaming DEFLATE decompression
997
+ */
998
+ 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);
1006
+ this.ondata = cb;
1007
+ }
1008
+ Inflate.prototype.e = function (c) {
1009
+ if (this.d)
1010
+ throw 'stream finished';
1011
+ 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;
1016
+ };
1017
+ Inflate.prototype.c = function (final) {
1018
+ this.d = this.s.i = final || false;
1019
+ var bts = this.s.b;
1020
+ var dt = inflt(this.p, this.o, this.s);
1021
+ this.ondata(slc(dt, bts, this.s.b), this.d);
1022
+ this.o = slc(dt, this.s.b - 32768), this.s.b = this.o.length;
1023
+ this.p = slc(this.p, (this.s.p / 8) | 0), this.s.p &= 7;
1024
+ };
1025
+ /**
1026
+ * Pushes a chunk to be inflated
1027
+ * @param chunk The chunk to push
1028
+ * @param final Whether this is the final chunk
1029
+ */
1030
+ Inflate.prototype.push = function (chunk, final) {
1031
+ this.e(chunk), this.c(final);
1032
+ };
1033
+ return Inflate;
1034
+ }());
1035
+ export { Inflate };
1036
+ /**
1037
+ * Asynchronous streaming DEFLATE decompression
1038
+ */
1039
+ 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;
1046
+ astrmify([
1047
+ bInflt,
1048
+ function () { return [astrm, Inflate]; }
1049
+ ], this, 0, function () {
1050
+ var strm = new Inflate();
1051
+ onmessage = astrm(strm);
1052
+ }, 7);
1053
+ }
1054
+ return AsyncInflate;
1055
+ }());
1056
+ export { AsyncInflate };
1057
+ export function inflate(data, opts, cb) {
1058
+ if (!cb)
1059
+ cb = opts, opts = {};
1060
+ if (typeof cb != 'function')
1061
+ throw 'no callback';
1062
+ return cbify(data, opts, [
1063
+ bInflt
1064
+ ], function (ev) { return pbf(inflateSync(ev.data[0], gu8(ev.data[1]))); }, 1, cb);
1065
+ }
1066
+ /**
1067
+ * Expands DEFLATE data with no wrapper
1068
+ * @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.
1070
+ * @returns The decompressed version of the data
1071
+ */
1072
+ export function inflateSync(data, out) {
1073
+ return inflt(data, out);
1074
+ }
1075
+ // before you yell at me for not just using extends, my reason is that TS inheritance is hard to workerize.
1076
+ /**
1077
+ * Streaming GZIP compression
1078
+ */
1079
+ var Gzip = /*#__PURE__*/ (function () {
1080
+ function Gzip(opts, cb) {
1081
+ this.c = crc();
1082
+ this.l = 0;
1083
+ this.v = 1;
1084
+ Deflate.call(this, opts, cb);
1085
+ }
1086
+ /**
1087
+ * Pushes a chunk to be GZIPped
1088
+ * @param chunk The chunk to push
1089
+ * @param final Whether this is the last chunk
1090
+ */
1091
+ Gzip.prototype.push = function (chunk, final) {
1092
+ Deflate.prototype.push.call(this, chunk, final);
1093
+ };
1094
+ 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);
1098
+ if (this.v)
1099
+ gzh(raw, this.o), this.v = 0;
1100
+ if (f)
1101
+ wbytes(raw, raw.length - 8, this.c.d()), wbytes(raw, raw.length - 4, this.l);
1102
+ this.ondata(raw, f);
1103
+ };
1104
+ return Gzip;
1105
+ }());
1106
+ export { Gzip };
1107
+ /**
1108
+ * Asynchronous streaming GZIP compression
1109
+ */
1110
+ var AsyncGzip = /*#__PURE__*/ (function () {
1111
+ function AsyncGzip(opts, cb) {
1112
+ astrmify([
1113
+ bDflt,
1114
+ gze,
1115
+ function () { return [astrm, Deflate, Gzip]; }
1116
+ ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {
1117
+ var strm = new Gzip(ev.data);
1118
+ onmessage = astrm(strm);
1119
+ }, 8);
1120
+ }
1121
+ return AsyncGzip;
1122
+ }());
1123
+ export { AsyncGzip };
1124
+ export function gzip(data, opts, cb) {
1125
+ if (!cb)
1126
+ cb = opts, opts = {};
1127
+ if (typeof cb != 'function')
1128
+ throw 'no callback';
1129
+ return cbify(data, opts, [
1130
+ bDflt,
1131
+ gze,
1132
+ function () { return [gzipSync]; }
1133
+ ], function (ev) { return pbf(gzipSync(ev.data[0], ev.data[1])); }, 2, cb);
1134
+ }
1135
+ /**
1136
+ * Compresses data with GZIP
1137
+ * @param data The data to compress
1138
+ * @param opts The compression options
1139
+ * @returns The gzipped version of the data
1140
+ */
1141
+ export function gzipSync(data, opts) {
1142
+ if (!opts)
1143
+ opts = {};
1144
+ var c = crc(), l = data.length;
1145
+ c.p(data);
1146
+ var d = dopt(data, opts, gzhl(opts), 8), s = d.length;
1147
+ return gzh(d, opts), wbytes(d, s - 8, c.d()), wbytes(d, s - 4, l), d;
1148
+ }
1149
+ /**
1150
+ * Streaming GZIP decompression
1151
+ */
1152
+ 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) {
1158
+ this.v = 1;
1159
+ Inflate.call(this, cb);
1160
+ }
1161
+ /**
1162
+ * Pushes a chunk to be GUNZIPped
1163
+ * @param chunk The chunk to push
1164
+ * @param final Whether this is the last chunk
1165
+ */
1166
+ Gunzip.prototype.push = function (chunk, final) {
1167
+ Inflate.prototype.e.call(this, chunk);
1168
+ 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);
1178
+ }
1179
+ // necessary to prevent TS from using the closure value
1180
+ // This allows for workerization to function correctly
1181
+ Inflate.prototype.c.call(this, final);
1182
+ };
1183
+ return Gunzip;
1184
+ }());
1185
+ export { Gunzip };
1186
+ /**
1187
+ * Asynchronous streaming GZIP decompression
1188
+ */
1189
+ 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;
1196
+ astrmify([
1197
+ bInflt,
1198
+ guze,
1199
+ function () { return [astrm, Inflate, Gunzip]; }
1200
+ ], this, 0, function () {
1201
+ var strm = new Gunzip();
1202
+ onmessage = astrm(strm);
1203
+ }, 9);
1204
+ }
1205
+ return AsyncGunzip;
1206
+ }());
1207
+ export { AsyncGunzip };
1208
+ export function gunzip(data, opts, cb) {
1209
+ if (!cb)
1210
+ cb = opts, opts = {};
1211
+ if (typeof cb != 'function')
1212
+ throw 'no callback';
1213
+ return cbify(data, opts, [
1214
+ bInflt,
1215
+ guze,
1216
+ function () { return [gunzipSync]; }
1217
+ ], function (ev) { return pbf(gunzipSync(ev.data[0])); }, 3, cb);
1218
+ }
1219
+ /**
1220
+ * Expands GZIP data
1221
+ * @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.
1223
+ * @returns The decompressed version of the data
1224
+ */
1225
+ export function gunzipSync(data, out) {
1226
+ return inflt(data.subarray(gzs(data), -8), out || new u8(gzl(data)));
1227
+ }
1228
+ /**
1229
+ * Streaming Zlib compression
1230
+ */
1231
+ var Zlib = /*#__PURE__*/ (function () {
1232
+ function Zlib(opts, cb) {
1233
+ this.c = adler();
1234
+ this.v = 1;
1235
+ Deflate.call(this, opts, cb);
1236
+ }
1237
+ /**
1238
+ * Pushes a chunk to be zlibbed
1239
+ * @param chunk The chunk to push
1240
+ * @param final Whether this is the last chunk
1241
+ */
1242
+ Zlib.prototype.push = function (chunk, final) {
1243
+ Deflate.prototype.push.call(this, chunk, final);
1244
+ };
1245
+ Zlib.prototype.p = function (c, f) {
1246
+ this.c.p(c);
1247
+ var raw = dopt(c, this.o, this.v && 2, f && 4, !f);
1248
+ if (this.v)
1249
+ zlh(raw, this.o), this.v = 0;
1250
+ if (f)
1251
+ wbytes(raw, raw.length - 4, this.c.d());
1252
+ this.ondata(raw, f);
1253
+ };
1254
+ return Zlib;
1255
+ }());
1256
+ export { Zlib };
1257
+ /**
1258
+ * Asynchronous streaming Zlib compression
1259
+ */
1260
+ var AsyncZlib = /*#__PURE__*/ (function () {
1261
+ function AsyncZlib(opts, cb) {
1262
+ astrmify([
1263
+ bDflt,
1264
+ zle,
1265
+ function () { return [astrm, Deflate, Zlib]; }
1266
+ ], this, AsyncCmpStrm.call(this, opts, cb), function (ev) {
1267
+ var strm = new Zlib(ev.data);
1268
+ onmessage = astrm(strm);
1269
+ }, 10);
1270
+ }
1271
+ return AsyncZlib;
1272
+ }());
1273
+ export { AsyncZlib };
1274
+ export function zlib(data, opts, cb) {
1275
+ if (!cb)
1276
+ cb = opts, opts = {};
1277
+ if (typeof cb != 'function')
1278
+ throw 'no callback';
1279
+ return cbify(data, opts, [
1280
+ bDflt,
1281
+ zle,
1282
+ function () { return [zlibSync]; }
1283
+ ], function (ev) { return pbf(zlibSync(ev.data[0], ev.data[1])); }, 4, cb);
1284
+ }
1285
+ /**
1286
+ * Compress data with Zlib
1287
+ * @param data The data to compress
1288
+ * @param opts The compression options
1289
+ * @returns The zlib-compressed version of the data
1290
+ */
1291
+ export function zlibSync(data, opts) {
1292
+ if (!opts)
1293
+ opts = {};
1294
+ var a = adler();
1295
+ a.p(data);
1296
+ var d = dopt(data, opts, 2, 4);
1297
+ return zlh(d, opts), wbytes(d, d.length - 4, a.d()), d;
1298
+ }
1299
+ /**
1300
+ * Streaming Zlib decompression
1301
+ */
1302
+ 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);
1310
+ }
1311
+ /**
1312
+ * Pushes a chunk to be unzlibbed
1313
+ * @param chunk The chunk to push
1314
+ * @param final Whether this is the last chunk
1315
+ */
1316
+ Unzlib.prototype.push = function (chunk, final) {
1317
+ Inflate.prototype.e.call(this, chunk);
1318
+ if (this.v) {
1319
+ if (this.p.length < 2 && !final)
1320
+ return;
1321
+ this.p = this.p.subarray(2), this.v = 0;
1322
+ }
1323
+ if (final) {
1324
+ if (this.p.length < 4)
1325
+ throw 'invalid zlib stream';
1326
+ this.p = this.p.subarray(0, -4);
1327
+ }
1328
+ // necessary to prevent TS from using the closure value
1329
+ // This allows for workerization to function correctly
1330
+ Inflate.prototype.c.call(this, final);
1331
+ };
1332
+ return Unzlib;
1333
+ }());
1334
+ export { Unzlib };
1335
+ /**
1336
+ * Asynchronous streaming Zlib decompression
1337
+ */
1338
+ 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;
1345
+ astrmify([
1346
+ bInflt,
1347
+ zule,
1348
+ function () { return [astrm, Inflate, Unzlib]; }
1349
+ ], this, 0, function () {
1350
+ var strm = new Unzlib();
1351
+ onmessage = astrm(strm);
1352
+ }, 11);
1353
+ }
1354
+ return AsyncUnzlib;
1355
+ }());
1356
+ export { AsyncUnzlib };
1357
+ export function unzlib(data, opts, cb) {
1358
+ if (!cb)
1359
+ cb = opts, opts = {};
1360
+ if (typeof cb != 'function')
1361
+ throw 'no callback';
1362
+ return cbify(data, opts, [
1363
+ bInflt,
1364
+ zule,
1365
+ function () { return [unzlibSync]; }
1366
+ ], function (ev) { return pbf(unzlibSync(ev.data[0], gu8(ev.data[1]))); }, 5, cb);
1367
+ }
1368
+ /**
1369
+ * Expands Zlib data
1370
+ * @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.
1372
+ * @returns The decompressed version of the data
1373
+ */
1374
+ export function unzlibSync(data, out) {
1375
+ return inflt((zlv(data), data.subarray(2, -4)), out);
1376
+ }
1377
+ // Default algorithm for compression (used because having a known output size allows faster decompression)
1378
+ export { gzip as compress, AsyncGzip as AsyncCompress };
1379
+ // Default algorithm for compression (used because having a known output size allows faster decompression)
1380
+ export { gzipSync as compressSync, Gzip as Compress };
1381
+ /**
1382
+ * Streaming GZIP, Zlib, or raw DEFLATE decompression
1383
+ */
1384
+ 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) {
1390
+ this.G = Gunzip;
1391
+ this.I = Inflate;
1392
+ this.Z = Unzlib;
1393
+ this.ondata = cb;
1394
+ }
1395
+ /**
1396
+ * Pushes a chunk to be decompressed
1397
+ * @param chunk The chunk to push
1398
+ * @param final Whether this is the last chunk
1399
+ */
1400
+ Decompress.prototype.push = function (chunk, final) {
1401
+ if (!this.ondata)
1402
+ throw 'no stream handler';
1403
+ if (!this.s) {
1404
+ if (this.p && this.p.length) {
1405
+ var n = new u8(this.p.length + chunk.length);
1406
+ n.set(this.p), n.set(chunk, this.p.length);
1407
+ }
1408
+ else
1409
+ this.p = chunk;
1410
+ if (this.p.length > 2) {
1411
+ var _this_1 = this;
1412
+ var cb = function () { _this_1.ondata.apply(_this_1, arguments); };
1413
+ this.s = (this.p[0] == 31 && this.p[1] == 139 && this.p[2] == 8)
1414
+ ? new this.G(cb)
1415
+ : ((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);
1418
+ this.s.push(this.p, final);
1419
+ this.p = null;
1420
+ }
1421
+ }
1422
+ else
1423
+ this.s.push(chunk, final);
1424
+ };
1425
+ return Decompress;
1426
+ }());
1427
+ export { Decompress };
1428
+ /**
1429
+ * Asynchronous streaming GZIP, Zlib, or raw DEFLATE decompression
1430
+ */
1431
+ 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) {
1437
+ this.G = AsyncGunzip;
1438
+ this.I = AsyncInflate;
1439
+ this.Z = AsyncUnzlib;
1440
+ this.ondata = cb;
1441
+ }
1442
+ /**
1443
+ * Pushes a chunk to be decompressed
1444
+ * @param chunk The chunk to push
1445
+ * @param final Whether this is the last chunk
1446
+ */
1447
+ AsyncDecompress.prototype.push = function (chunk, final) {
1448
+ Decompress.prototype.push.call(this, chunk, final);
1449
+ };
1450
+ return AsyncDecompress;
1451
+ }());
1452
+ export { AsyncDecompress };
1453
+ export function decompress(data, opts, cb) {
1454
+ if (!cb)
1455
+ cb = opts, opts = {};
1456
+ if (typeof cb != 'function')
1457
+ throw 'no callback';
1458
+ return (data[0] == 31 && data[1] == 139 && data[2] == 8)
1459
+ ? gunzip(data, opts, cb)
1460
+ : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))
1461
+ ? inflate(data, opts, cb)
1462
+ : unzlib(data, opts, cb);
1463
+ }
1464
+ /**
1465
+ * Expands compressed GZIP, Zlib, or raw DEFLATE data, automatically detecting the format
1466
+ * @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.
1468
+ * @returns The decompressed version of the data
1469
+ */
1470
+ export function decompressSync(data, out) {
1471
+ return (data[0] == 31 && data[1] == 139 && data[2] == 8)
1472
+ ? gunzipSync(data, out)
1473
+ : ((data[0] & 15) != 8 || (data[0] >> 4) > 7 || ((data[0] << 8 | data[1]) % 31))
1474
+ ? inflateSync(data, out)
1475
+ : unzlibSync(data, out);
1476
+ }
1477
+ // flatten a directory structure
1478
+ var fltn = function (d, p, t, o) {
1479
+ for (var k in d) {
1480
+ var val = d[k], n = p + k;
1481
+ 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);
1487
+ }
1488
+ };
1489
+ // text encoder
1490
+ var te = typeof TextEncoder != 'undefined' && /*#__PURE__*/ new TextEncoder();
1491
+ // text decoder
1492
+ var td = typeof TextDecoder != 'undefined' && /*#__PURE__*/ new TextDecoder();
1493
+ // text decoder stream
1494
+ var tds = 0;
1495
+ try {
1496
+ td.decode(et, { stream: true });
1497
+ tds = 1;
1498
+ }
1499
+ catch (e) { }
1500
+ // decode UTF8
1501
+ var dutf8 = function (d) {
1502
+ for (var r = '', i = 0;;) {
1503
+ var c = d[i++];
1504
+ var eb = (c > 127) + (c > 223) + (c > 239);
1505
+ if (i + eb > d.length)
1506
+ return [r, slc(d, i - 1)];
1507
+ if (!eb)
1508
+ r += String.fromCharCode(c);
1509
+ else if (eb == 3) {
1510
+ c = ((c & 15) << 18 | (d[i++] & 63) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63)) - 65536,
1511
+ r += String.fromCharCode(55296 | (c >> 10), 56320 | (c & 1023));
1512
+ }
1513
+ else if (eb & 1)
1514
+ r += String.fromCharCode((c & 31) << 6 | (d[i++] & 63));
1515
+ else
1516
+ r += String.fromCharCode((c & 15) << 12 | (d[i++] & 63) << 6 | (d[i++] & 63));
1517
+ }
1518
+ };
1519
+ /**
1520
+ * Streaming UTF-8 decoding
1521
+ */
1522
+ var DecodeUTF8 = /*#__PURE__*/ (function () {
1523
+ /**
1524
+ * Creates a UTF-8 decoding stream
1525
+ * @param cb The callback to call whenever data is decoded
1526
+ */
1527
+ function DecodeUTF8(cb) {
1528
+ this.ondata = cb;
1529
+ if (tds)
1530
+ this.t = new TextDecoder();
1531
+ else
1532
+ this.p = et;
1533
+ }
1534
+ /**
1535
+ * Pushes a chunk to be decoded from UTF-8 binary
1536
+ * @param chunk The chunk to push
1537
+ * @param final Whether this is the last chunk
1538
+ */
1539
+ DecodeUTF8.prototype.push = function (chunk, final) {
1540
+ if (!this.ondata)
1541
+ throw 'no callback';
1542
+ final = !!final;
1543
+ if (this.t) {
1544
+ this.ondata(this.t.decode(chunk, { stream: true }), final);
1545
+ if (final) {
1546
+ if (this.t.decode().length)
1547
+ throw 'invalid utf-8 data';
1548
+ this.t = null;
1549
+ }
1550
+ return;
1551
+ }
1552
+ if (!this.p)
1553
+ throw 'stream finished';
1554
+ var dat = new u8(this.p.length + chunk.length);
1555
+ dat.set(this.p);
1556
+ dat.set(chunk, this.p.length);
1557
+ var _a = dutf8(dat), ch = _a[0], np = _a[1];
1558
+ if (final) {
1559
+ if (np.length)
1560
+ throw 'invalid utf-8 data';
1561
+ this.p = null;
1562
+ }
1563
+ else
1564
+ this.p = np;
1565
+ this.ondata(ch, final);
1566
+ };
1567
+ return DecodeUTF8;
1568
+ }());
1569
+ export { DecodeUTF8 };
1570
+ /**
1571
+ * Streaming UTF-8 encoding
1572
+ */
1573
+ var EncodeUTF8 = /*#__PURE__*/ (function () {
1574
+ /**
1575
+ * Creates a UTF-8 decoding stream
1576
+ * @param cb The callback to call whenever data is encoded
1577
+ */
1578
+ function EncodeUTF8(cb) {
1579
+ this.ondata = cb;
1580
+ }
1581
+ /**
1582
+ * Pushes a chunk to be encoded to UTF-8
1583
+ * @param chunk The string data to push
1584
+ * @param final Whether this is the last chunk
1585
+ */
1586
+ EncodeUTF8.prototype.push = function (chunk, final) {
1587
+ if (!this.ondata)
1588
+ throw 'no callback';
1589
+ if (this.d)
1590
+ throw 'stream finished';
1591
+ this.ondata(strToU8(chunk), this.d = final || false);
1592
+ };
1593
+ return EncodeUTF8;
1594
+ }());
1595
+ export { EncodeUTF8 };
1596
+ /**
1597
+ * Converts a string into a Uint8Array for use with compression/decompression methods
1598
+ * @param str The string to encode
1599
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
1600
+ * not need to be true unless decoding a binary string.
1601
+ * @returns The string encoded in UTF-8/Latin-1 binary
1602
+ */
1603
+ export function strToU8(str, latin1) {
1604
+ if (latin1) {
1605
+ var ar_1 = new u8(str.length);
1606
+ for (var i = 0; i < str.length; ++i)
1607
+ ar_1[i] = str.charCodeAt(i);
1608
+ return ar_1;
1609
+ }
1610
+ if (te)
1611
+ return te.encode(str);
1612
+ var l = str.length;
1613
+ var ar = new u8(str.length + (str.length >> 1));
1614
+ var ai = 0;
1615
+ var w = function (v) { ar[ai++] = v; };
1616
+ for (var i = 0; i < l; ++i) {
1617
+ if (ai + 5 > ar.length) {
1618
+ var n = new u8(ai + 8 + ((l - i) << 1));
1619
+ n.set(ar);
1620
+ ar = n;
1621
+ }
1622
+ var c = str.charCodeAt(i);
1623
+ if (c < 128 || latin1)
1624
+ w(c);
1625
+ else if (c < 2048)
1626
+ w(192 | (c >> 6)), w(128 | (c & 63));
1627
+ else if (c > 55295 && c < 57344)
1628
+ c = 65536 + (c & 1023 << 10) | (str.charCodeAt(++i) & 1023),
1629
+ w(240 | (c >> 18)), w(128 | ((c >> 12) & 63)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));
1630
+ else
1631
+ w(224 | (c >> 12)), w(128 | ((c >> 6) & 63)), w(128 | (c & 63));
1632
+ }
1633
+ return slc(ar, 0, ai);
1634
+ }
1635
+ /**
1636
+ * Converts a Uint8Array to a string
1637
+ * @param dat The data to decode to string
1638
+ * @param latin1 Whether or not to interpret the data as Latin-1. This should
1639
+ * not need to be true unless encoding to binary string.
1640
+ * @returns The original UTF-8/Latin-1 string
1641
+ */
1642
+ export function strFromU8(dat, latin1) {
1643
+ if (latin1) {
1644
+ var r = '';
1645
+ for (var i = 0; i < dat.length; i += 16384)
1646
+ r += String.fromCharCode.apply(null, dat.subarray(i, i + 16384));
1647
+ return r;
1648
+ }
1649
+ else if (td)
1650
+ return td.decode(dat);
1651
+ 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;
1656
+ }
1657
+ }
1658
+ ;
1659
+ // deflate bit flag
1660
+ var dbf = function (l) { return l == 1 ? 3 : l < 6 ? 2 : l == 9 ? 1 : 0; };
1661
+ // skip local zip header
1662
+ var slzh = function (d, b) { return b + 30 + b2(d, b + 26) + b2(d, b + 28); };
1663
+ // read zip header
1664
+ var zh = function (d, b, z) {
1665
+ var fnl = b2(d, b + 28), fn = strFromU8(d.subarray(b + 46, b + 46 + fnl), !(b2(d, b + 8) & 2048)), es = b + 46 + fnl, bs = b4(d, b + 20);
1666
+ var _a = z && bs == 4294967295 ? z64e(d, es) : [bs, b4(d, b + 24), b4(d, b + 42)], sc = _a[0], su = _a[1], off = _a[2];
1667
+ return [b2(d, b + 10), sc, su, fn, es + b2(d, b + 30) + b2(d, b + 32), off];
1668
+ };
1669
+ // read zip64 extra field
1670
+ var z64e = function (d, b) {
1671
+ for (; b2(d, b) != 1; b += 4 + b2(d, b + 2))
1672
+ ;
1673
+ return [b8(d, b + 12), b8(d, b + 4), b8(d, b + 20)];
1674
+ };
1675
+ // extra field length
1676
+ var exfl = function (ex) {
1677
+ var le = 0;
1678
+ if (ex) {
1679
+ for (var k in ex) {
1680
+ var l = ex[k].length;
1681
+ if (l > 65535)
1682
+ throw 'extra field too long';
1683
+ le += l + 4;
1684
+ }
1685
+ }
1686
+ return le;
1687
+ };
1688
+ // write zip header
1689
+ var wzh = function (d, b, f, fn, u, c, ce, co) {
1690
+ var fl = fn.length, ex = f.extra, col = co && co.length;
1691
+ var exl = exfl(ex);
1692
+ wbytes(d, b, ce != null ? 0x2014B50 : 0x4034B50), b += 4;
1693
+ if (ce != null)
1694
+ d[b++] = 20, d[b++] = f.os;
1695
+ d[b] = 20, b += 2; // spec compliance? what's that?
1696
+ d[b++] = (f.flag << 1) | (c == null && 8), d[b++] = u && 8;
1697
+ d[b++] = f.compression & 255, d[b++] = f.compression >> 8;
1698
+ var dt = new Date(f.mtime == null ? Date.now() : f.mtime), y = dt.getFullYear() - 1980;
1699
+ 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) {
1703
+ wbytes(d, b, f.crc);
1704
+ wbytes(d, b + 4, c);
1705
+ wbytes(d, b + 8, f.size);
1706
+ }
1707
+ wbytes(d, b + 12, fl);
1708
+ wbytes(d, b + 14, exl), b += 16;
1709
+ if (ce != null) {
1710
+ wbytes(d, b, col);
1711
+ wbytes(d, b + 6, f.attrs);
1712
+ wbytes(d, b + 10, ce), b += 14;
1713
+ }
1714
+ d.set(fn, b);
1715
+ b += fl;
1716
+ if (exl) {
1717
+ for (var k in ex) {
1718
+ var exf = ex[k], l = exf.length;
1719
+ wbytes(d, b, +k);
1720
+ wbytes(d, b + 2, l);
1721
+ d.set(exf, b + 4), b += 4 + l;
1722
+ }
1723
+ }
1724
+ if (col)
1725
+ d.set(co, b), b += col;
1726
+ return b;
1727
+ };
1728
+ // write zip footer (end of central directory)
1729
+ var wzf = function (o, b, c, d, e) {
1730
+ wbytes(o, b, 0x6054B50); // skip disk
1731
+ wbytes(o, b + 8, c);
1732
+ wbytes(o, b + 10, c);
1733
+ wbytes(o, b + 12, d);
1734
+ wbytes(o, b + 16, e);
1735
+ };
1736
+ /**
1737
+ * A pass-through stream to keep data uncompressed in a ZIP archive.
1738
+ */
1739
+ var ZipPassThrough = /*#__PURE__*/ (function () {
1740
+ /**
1741
+ * Creates a pass-through stream that can be added to ZIP archives
1742
+ * @param filename The filename to associate with this data stream
1743
+ */
1744
+ function ZipPassThrough(filename) {
1745
+ this.filename = filename;
1746
+ this.c = crc();
1747
+ this.size = 0;
1748
+ this.compression = 0;
1749
+ }
1750
+ /**
1751
+ * Processes a chunk and pushes to the output stream. You can override this
1752
+ * method in a subclass for custom behavior, but by default this passes
1753
+ * the data through. You must call this.ondata(err, chunk, final) at some
1754
+ * point in this method.
1755
+ * @param chunk The chunk to process
1756
+ * @param final Whether this is the last chunk
1757
+ */
1758
+ ZipPassThrough.prototype.process = function (chunk, final) {
1759
+ this.ondata(null, chunk, final);
1760
+ };
1761
+ /**
1762
+ * Pushes a chunk to be added. If you are subclassing this with a custom
1763
+ * compression algorithm, note that you must push data from the source
1764
+ * file only, pre-compression.
1765
+ * @param chunk The chunk to push
1766
+ * @param final Whether this is the last chunk
1767
+ */
1768
+ ZipPassThrough.prototype.push = function (chunk, final) {
1769
+ if (!this.ondata)
1770
+ throw 'no callback - add to ZIP archive before pushing';
1771
+ this.c.p(chunk);
1772
+ this.size += chunk.length;
1773
+ if (final)
1774
+ this.crc = this.c.d();
1775
+ this.process(chunk, final || false);
1776
+ };
1777
+ return ZipPassThrough;
1778
+ }());
1779
+ export { ZipPassThrough };
1780
+ // I don't extend because TypeScript extension adds 1kB of runtime bloat
1781
+ /**
1782
+ * Streaming DEFLATE compression for ZIP archives. Prefer using AsyncZipDeflate
1783
+ * for better performance
1784
+ */
1785
+ var ZipDeflate = /*#__PURE__*/ (function () {
1786
+ /**
1787
+ * Creates a DEFLATE stream that can be added to ZIP archives
1788
+ * @param filename The filename to associate with this data stream
1789
+ * @param opts The compression options
1790
+ */
1791
+ function ZipDeflate(filename, opts) {
1792
+ var _this_1 = this;
1793
+ if (!opts)
1794
+ opts = {};
1795
+ ZipPassThrough.call(this, filename);
1796
+ this.d = new Deflate(opts, function (dat, final) {
1797
+ _this_1.ondata(null, dat, final);
1798
+ });
1799
+ this.compression = 8;
1800
+ this.flag = dbf(opts.level);
1801
+ }
1802
+ ZipDeflate.prototype.process = function (chunk, final) {
1803
+ try {
1804
+ this.d.push(chunk, final);
1805
+ }
1806
+ catch (e) {
1807
+ this.ondata(e, null, final);
1808
+ }
1809
+ };
1810
+ /**
1811
+ * Pushes a chunk to be deflated
1812
+ * @param chunk The chunk to push
1813
+ * @param final Whether this is the last chunk
1814
+ */
1815
+ ZipDeflate.prototype.push = function (chunk, final) {
1816
+ ZipPassThrough.prototype.push.call(this, chunk, final);
1817
+ };
1818
+ return ZipDeflate;
1819
+ }());
1820
+ export { ZipDeflate };
1821
+ /**
1822
+ * Asynchronous streaming DEFLATE compression for ZIP archives
1823
+ */
1824
+ var AsyncZipDeflate = /*#__PURE__*/ (function () {
1825
+ /**
1826
+ * Creates a DEFLATE stream that can be added to ZIP archives
1827
+ * @param filename The filename to associate with this data stream
1828
+ * @param opts The compression options
1829
+ */
1830
+ function AsyncZipDeflate(filename, opts) {
1831
+ var _this_1 = this;
1832
+ if (!opts)
1833
+ opts = {};
1834
+ ZipPassThrough.call(this, filename);
1835
+ this.d = new AsyncDeflate(opts, function (err, dat, final) {
1836
+ _this_1.ondata(err, dat, final);
1837
+ });
1838
+ this.compression = 8;
1839
+ this.flag = dbf(opts.level);
1840
+ this.terminate = this.d.terminate;
1841
+ }
1842
+ AsyncZipDeflate.prototype.process = function (chunk, final) {
1843
+ this.d.push(chunk, final);
1844
+ };
1845
+ /**
1846
+ * Pushes a chunk to be deflated
1847
+ * @param chunk The chunk to push
1848
+ * @param final Whether this is the last chunk
1849
+ */
1850
+ AsyncZipDeflate.prototype.push = function (chunk, final) {
1851
+ ZipPassThrough.prototype.push.call(this, chunk, final);
1852
+ };
1853
+ return AsyncZipDeflate;
1854
+ }());
1855
+ export { AsyncZipDeflate };
1856
+ // TODO: Better tree shaking
1857
+ /**
1858
+ * A zippable archive to which files can incrementally be added
1859
+ */
1860
+ var Zip = /*#__PURE__*/ (function () {
1861
+ /**
1862
+ * Creates an empty ZIP archive to which files can be added
1863
+ * @param cb The callback to call whenever data for the generated ZIP archive
1864
+ * is available
1865
+ */
1866
+ function Zip(cb) {
1867
+ this.ondata = cb;
1868
+ this.u = [];
1869
+ this.d = 1;
1870
+ }
1871
+ /**
1872
+ * Adds a file to the ZIP archive
1873
+ * @param file The file stream to add
1874
+ */
1875
+ Zip.prototype.add = function (file) {
1876
+ var _this_1 = this;
1877
+ 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;
1914
+ }
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;
1938
+ }
1939
+ else if (tr)
1940
+ pAll();
1941
+ }
1942
+ };
1943
+ this.u.push(uf);
1944
+ };
1945
+ /**
1946
+ * Ends the process of adding files and prepares to emit the final chunks.
1947
+ * This *must* be called after adding all desired files for the resulting
1948
+ * ZIP file to work properly.
1949
+ */
1950
+ Zip.prototype.end = function () {
1951
+ var _this_1 = this;
1952
+ if (this.d & 2) {
1953
+ if (this.d & 1)
1954
+ throw 'stream finishing';
1955
+ throw 'stream finished';
1956
+ }
1957
+ if (this.d)
1958
+ this.e();
1959
+ else
1960
+ this.u.push({
1961
+ r: function () {
1962
+ if (!(_this_1.d & 1))
1963
+ return;
1964
+ _this_1.u.splice(-1, 1);
1965
+ _this_1.e();
1966
+ },
1967
+ t: function () { }
1968
+ });
1969
+ this.d = 3;
1970
+ };
1971
+ Zip.prototype.e = function () {
1972
+ var bt = 0, l = 0, tl = 0;
1973
+ for (var _i = 0, _a = this.u; _i < _a.length; _i++) {
1974
+ var f = _a[_i];
1975
+ tl += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0);
1976
+ }
1977
+ var out = new u8(tl + 22);
1978
+ for (var _b = 0, _c = this.u; _b < _c.length; _b++) {
1979
+ var f = _c[_b];
1980
+ wzh(out, bt, f, f.f, f.u, f.c, l, f.o);
1981
+ bt += 46 + f.f.length + exfl(f.extra) + (f.o ? f.o.length : 0), l += f.b;
1982
+ }
1983
+ wzf(out, bt, this.u.length, tl, l);
1984
+ this.ondata(null, out, true);
1985
+ this.d = 2;
1986
+ };
1987
+ /**
1988
+ * A method to terminate any internal workers used by the stream. Subsequent
1989
+ * calls to add() will fail.
1990
+ */
1991
+ Zip.prototype.terminate = function () {
1992
+ for (var _i = 0, _a = this.u; _i < _a.length; _i++) {
1993
+ var f = _a[_i];
1994
+ f.t();
1995
+ }
1996
+ this.d = 2;
1997
+ };
1998
+ return Zip;
1999
+ }());
2000
+ export { Zip };
2001
+ export function zip(data, opts, cb) {
2002
+ if (!cb)
2003
+ cb = opts, opts = {};
2004
+ if (typeof cb != 'function')
2005
+ throw 'no callback';
2006
+ var r = {};
2007
+ fltn(data, '', r, opts);
2008
+ var k = Object.keys(r);
2009
+ var lft = k.length, o = 0, tot = 0;
2010
+ var slft = lft, files = new Array(lft);
2011
+ var term = [];
2012
+ var tAll = function () {
2013
+ for (var i = 0; i < term.length; ++i)
2014
+ term[i]();
2015
+ };
2016
+ var cbf = function () {
2017
+ var out = new u8(tot + 22), oe = o, cdl = tot - o;
2018
+ tot = 0;
2019
+ for (var i = 0; i < slft; ++i) {
2020
+ var f = files[i];
2021
+ try {
2022
+ var l = f.c.length;
2023
+ wzh(out, tot, f, f.f, f.u, l);
2024
+ var badd = 30 + f.f.length + exfl(f.extra);
2025
+ var loc = tot + badd;
2026
+ out.set(f.c, loc);
2027
+ 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
+ }
2029
+ catch (e) {
2030
+ return cb(e, null);
2031
+ }
2032
+ }
2033
+ wzf(out, o, files.length, cdl, oe);
2034
+ cb(null, out);
2035
+ };
2036
+ if (!lft)
2037
+ cbf();
2038
+ var _loop_1 = function (i) {
2039
+ var fn = k[i];
2040
+ var _a = r[fn], file = _a[0], p = _a[1];
2041
+ var c = crc(), size = file.length;
2042
+ c.p(file);
2043
+ var f = strToU8(fn), s = f.length;
2044
+ var com = p.comment, m = com && strToU8(com), ms = m && m.length;
2045
+ var exl = exfl(p.extra);
2046
+ var compression = p.level == 0 ? 0 : 8;
2047
+ var cbl = function (e, d) {
2048
+ if (e) {
2049
+ tAll();
2050
+ cb(e, null);
2051
+ }
2052
+ else {
2053
+ var l = d.length;
2054
+ files[i] = mrg(p, {
2055
+ size: size,
2056
+ crc: c.d(),
2057
+ c: d,
2058
+ f: f,
2059
+ m: m,
2060
+ u: s != fn.length || (m && (com.length != ms)),
2061
+ compression: compression
2062
+ });
2063
+ o += 30 + s + exl + l;
2064
+ tot += 76 + 2 * (s + exl) + (ms || 0) + l;
2065
+ if (!--lft)
2066
+ cbf();
2067
+ }
2068
+ };
2069
+ if (s > 65535)
2070
+ cbl('filename too long', null);
2071
+ if (!compression)
2072
+ cbl(null, file);
2073
+ else if (size < 160000) {
2074
+ try {
2075
+ cbl(null, deflateSync(file, p));
2076
+ }
2077
+ catch (e) {
2078
+ cbl(e, null);
2079
+ }
2080
+ }
2081
+ else
2082
+ term.push(deflate(file, p, cbl));
2083
+ };
2084
+ // Cannot use lft because it can decrease
2085
+ for (var i = 0; i < slft; ++i) {
2086
+ _loop_1(i);
2087
+ }
2088
+ return tAll;
2089
+ }
2090
+ /**
2091
+ * Synchronously creates a ZIP file. Prefer using `zip` for better performance
2092
+ * with more than one file.
2093
+ * @param data The directory structure for the ZIP archive
2094
+ * @param opts The main options, merged with per-file options
2095
+ * @returns The generated ZIP archive
2096
+ */
2097
+ export function zipSync(data, opts) {
2098
+ if (!opts)
2099
+ opts = {};
2100
+ var r = {};
2101
+ var files = [];
2102
+ fltn(data, '', r, opts);
2103
+ var o = 0;
2104
+ var tot = 0;
2105
+ for (var fn in r) {
2106
+ var _a = r[fn], file = _a[0], p = _a[1];
2107
+ var compression = p.level == 0 ? 0 : 8;
2108
+ var f = strToU8(fn), s = f.length;
2109
+ var com = p.comment, m = com && strToU8(com), ms = m && m.length;
2110
+ var exl = exfl(p.extra);
2111
+ if (s > 65535)
2112
+ throw 'filename too long';
2113
+ var d = compression ? deflateSync(file, p) : file, l = d.length;
2114
+ var c = crc();
2115
+ c.p(file);
2116
+ files.push(mrg(p, {
2117
+ size: file.length,
2118
+ crc: c.d(),
2119
+ c: d,
2120
+ f: f,
2121
+ m: m,
2122
+ u: s != fn.length || (m && (com.length != ms)),
2123
+ o: o,
2124
+ compression: compression
2125
+ }));
2126
+ o += 30 + s + exl + l;
2127
+ tot += 76 + 2 * (s + exl) + (ms || 0) + l;
2128
+ }
2129
+ var out = new u8(tot + 22), oe = o, cdl = tot - o;
2130
+ for (var i = 0; i < files.length; ++i) {
2131
+ var f = files[i];
2132
+ wzh(out, f.o, f, f.f, f.u, f.c.length);
2133
+ var badd = 30 + f.f.length + exfl(f.extra);
2134
+ out.set(f.c, f.o + badd);
2135
+ wzh(out, o, f, f.f, f.u, f.c.length, f.o, f.m), o += 16 + badd + (f.m ? f.m.length : 0);
2136
+ }
2137
+ wzf(out, o, files.length, cdl, oe);
2138
+ return out;
2139
+ }
2140
+ /**
2141
+ * Streaming pass-through decompression for ZIP archives
2142
+ */
2143
+ var UnzipPassThrough = /*#__PURE__*/ (function () {
2144
+ function UnzipPassThrough() {
2145
+ }
2146
+ UnzipPassThrough.prototype.push = function (data, final) {
2147
+ this.ondata(null, data, final);
2148
+ };
2149
+ UnzipPassThrough.compression = 0;
2150
+ return UnzipPassThrough;
2151
+ }());
2152
+ export { UnzipPassThrough };
2153
+ /**
2154
+ * Streaming DEFLATE decompression for ZIP archives. Prefer AsyncZipInflate for
2155
+ * better performance.
2156
+ */
2157
+ var UnzipInflate = /*#__PURE__*/ (function () {
2158
+ /**
2159
+ * Creates a DEFLATE decompression that can be used in ZIP archives
2160
+ */
2161
+ function UnzipInflate() {
2162
+ var _this_1 = this;
2163
+ this.i = new Inflate(function (dat, final) {
2164
+ _this_1.ondata(null, dat, final);
2165
+ });
2166
+ }
2167
+ UnzipInflate.prototype.push = function (data, final) {
2168
+ try {
2169
+ this.i.push(data, final);
2170
+ }
2171
+ catch (e) {
2172
+ this.ondata(e, data, final);
2173
+ }
2174
+ };
2175
+ UnzipInflate.compression = 8;
2176
+ return UnzipInflate;
2177
+ }());
2178
+ export { UnzipInflate };
2179
+ /**
2180
+ * Asynchronous streaming DEFLATE decompression for ZIP archives
2181
+ */
2182
+ var AsyncUnzipInflate = /*#__PURE__*/ (function () {
2183
+ /**
2184
+ * Creates a DEFLATE decompression that can be used in ZIP archives
2185
+ */
2186
+ function AsyncUnzipInflate(_, sz) {
2187
+ var _this_1 = this;
2188
+ if (sz < 320000) {
2189
+ this.i = new Inflate(function (dat, final) {
2190
+ _this_1.ondata(null, dat, final);
2191
+ });
2192
+ }
2193
+ else {
2194
+ this.i = new AsyncInflate(function (err, dat, final) {
2195
+ _this_1.ondata(err, dat, final);
2196
+ });
2197
+ this.terminate = this.i.terminate;
2198
+ }
2199
+ }
2200
+ AsyncUnzipInflate.prototype.push = function (data, final) {
2201
+ if (this.i.terminate)
2202
+ data = slc(data, 0);
2203
+ this.i.push(data, final);
2204
+ };
2205
+ AsyncUnzipInflate.compression = 8;
2206
+ return AsyncUnzipInflate;
2207
+ }());
2208
+ export { AsyncUnzipInflate };
2209
+ /**
2210
+ * A ZIP archive decompression stream that emits files as they are discovered
2211
+ */
2212
+ var Unzip = /*#__PURE__*/ (function () {
2213
+ /**
2214
+ * Creates a ZIP decompression stream
2215
+ * @param cb The callback to call whenever a file in the ZIP archive is found
2216
+ */
2217
+ function Unzip(cb) {
2218
+ this.onfile = cb;
2219
+ this.k = [];
2220
+ this.o = {
2221
+ 0: UnzipPassThrough
2222
+ };
2223
+ this.p = et;
2224
+ }
2225
+ /**
2226
+ * Pushes a chunk to be unzipped
2227
+ * @param chunk The chunk to push
2228
+ * @param final Whether this is the last chunk
2229
+ */
2230
+ Unzip.prototype.push = function (chunk, final) {
2231
+ var _this_1 = this;
2232
+ if (!this.onfile)
2233
+ throw 'no callback';
2234
+ if (!this.p)
2235
+ throw 'stream finished';
2236
+ if (this.c > 0) {
2237
+ var len = Math.min(this.c, chunk.length);
2238
+ var toAdd = chunk.subarray(0, len);
2239
+ this.c -= len;
2240
+ if (this.d)
2241
+ this.d.push(toAdd, !this.c);
2242
+ else
2243
+ this.k[0].push(toAdd);
2244
+ chunk = chunk.subarray(len);
2245
+ if (chunk.length)
2246
+ return this.push(chunk, final);
2247
+ }
2248
+ else {
2249
+ var f = 0, i = 0, is = void 0, buf = void 0;
2250
+ if (!this.p.length)
2251
+ buf = chunk;
2252
+ else if (!chunk.length)
2253
+ buf = this.p;
2254
+ else {
2255
+ buf = new u8(this.p.length + chunk.length);
2256
+ buf.set(this.p), buf.set(chunk, this.p.length);
2257
+ }
2258
+ var l = buf.length, oc = this.c, add = oc && this.d;
2259
+ var _loop_2 = function () {
2260
+ var _a;
2261
+ var sig = b4(buf, i);
2262
+ if (sig == 0x4034B50) {
2263
+ f = 1, is = i;
2264
+ this_1.d = null;
2265
+ this_1.c = 0;
2266
+ 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
+ if (l > i + 30 + fnl + es) {
2268
+ var chks_2 = [];
2269
+ this_1.k.unshift(chks_2);
2270
+ f = 2;
2271
+ var sc_1 = b4(buf, i + 18), su_1 = b4(buf, i + 22);
2272
+ var fn_1 = strFromU8(buf.subarray(i + 30, i += 30 + fnl), !u);
2273
+ if (sc_1 == 4294967295) {
2274
+ _a = dd ? [-2] : z64e(buf, i), sc_1 = _a[0], su_1 = _a[1];
2275
+ }
2276
+ else if (dd)
2277
+ sc_1 = -1;
2278
+ i += es;
2279
+ this_1.c = sc_1;
2280
+ var d_1;
2281
+ var file_1 = {
2282
+ name: fn_1,
2283
+ compression: cmp_1,
2284
+ start: function () {
2285
+ if (!file_1.ondata)
2286
+ throw 'no callback';
2287
+ if (!sc_1)
2288
+ file_1.ondata(null, et, true);
2289
+ else {
2290
+ var ctr = _this_1.o[cmp_1];
2291
+ if (!ctr)
2292
+ throw 'unknown compression type ' + cmp_1;
2293
+ d_1 = sc_1 < 0 ? new ctr(fn_1) : new ctr(fn_1, sc_1, su_1);
2294
+ 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];
2297
+ d_1.push(dat, false);
2298
+ }
2299
+ if (_this_1.k[0] == chks_2 && _this_1.c)
2300
+ _this_1.d = d_1;
2301
+ else
2302
+ d_1.push(et, true);
2303
+ }
2304
+ },
2305
+ terminate: function () {
2306
+ if (d_1 && d_1.terminate)
2307
+ d_1.terminate();
2308
+ }
2309
+ };
2310
+ if (sc_1 >= 0)
2311
+ file_1.size = sc_1, file_1.originalSize = su_1;
2312
+ this_1.onfile(file_1);
2313
+ }
2314
+ return "break";
2315
+ }
2316
+ else if (oc) {
2317
+ if (sig == 0x8074B50) {
2318
+ is = i += 12 + (oc == -2 && 8), f = 3, this_1.c = 0;
2319
+ return "break";
2320
+ }
2321
+ else if (sig == 0x2014B50) {
2322
+ is = i -= 4, f = 3, this_1.c = 0;
2323
+ return "break";
2324
+ }
2325
+ }
2326
+ };
2327
+ var this_1 = this;
2328
+ for (; i < l - 4; ++i) {
2329
+ var state_1 = _loop_2();
2330
+ if (state_1 === "break")
2331
+ break;
2332
+ }
2333
+ this.p = et;
2334
+ if (oc < 0) {
2335
+ var dat = f ? buf.subarray(0, is - 12 - (oc == -2 && 8) - (b4(buf, is - 16) == 0x8074B50 && 4)) : buf.subarray(0, i);
2336
+ if (add)
2337
+ add.push(dat, !!f);
2338
+ else
2339
+ this.k[+(f == 2)].push(dat);
2340
+ }
2341
+ if (f & 2)
2342
+ return this.push(buf.subarray(i), final);
2343
+ this.p = buf.subarray(i);
2344
+ }
2345
+ if (final) {
2346
+ if (this.c)
2347
+ throw 'invalid zip file';
2348
+ this.p = null;
2349
+ }
2350
+ };
2351
+ /**
2352
+ * Registers a decoder with the stream, allowing for files compressed with
2353
+ * the compression type provided to be expanded correctly
2354
+ * @param decoder The decoder constructor
2355
+ */
2356
+ Unzip.prototype.register = function (decoder) {
2357
+ this.o[decoder.compression] = decoder;
2358
+ };
2359
+ return Unzip;
2360
+ }());
2361
+ 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) {
2369
+ if (typeof cb != 'function')
2370
+ throw 'no callback';
2371
+ var term = [];
2372
+ var tAll = function () {
2373
+ for (var i = 0; i < term.length; ++i)
2374
+ term[i]();
2375
+ };
2376
+ var files = {};
2377
+ var e = data.length - 22;
2378
+ for (; b4(data, e) != 0x6054B50; --e) {
2379
+ if (!e || data.length - e > 65558) {
2380
+ cb('invalid zip file', null);
2381
+ return;
2382
+ }
2383
+ }
2384
+ ;
2385
+ 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);
2407
+ }
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)));
2421
+ }
2422
+ catch (e) {
2423
+ cbl(e, null);
2424
+ }
2425
+ }
2426
+ else
2427
+ term.push(inflate(infl, { size: su }, cbl));
2428
+ }
2429
+ else
2430
+ cbl('unknown compression type ' + c_1, null);
2431
+ };
2432
+ for (var i = 0; i < c; ++i) {
2433
+ _loop_3(i);
2434
+ }
2435
+ return tAll;
2436
+ }
2437
+ /**
2438
+ * Synchronously decompresses a ZIP archive. Prefer using `unzip` for better
2439
+ * performance with more than one file.
2440
+ * @param data The raw compressed ZIP file
2441
+ * @returns The decompressed files
2442
+ */
2443
+ export function unzipSync(data) {
2444
+ var files = {};
2445
+ var e = data.length - 22;
2446
+ for (; b4(data, e) != 0x6054B50; --e) {
2447
+ if (!e || data.length - e > 65558)
2448
+ throw 'invalid zip file';
2449
+ }
2450
+ ;
2451
+ var c = b2(data, e + 8);
2452
+ if (!c)
2453
+ return {};
2454
+ var o = b4(data, e + 16);
2455
+ var z = o == 4294967295;
2456
+ 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);
2462
+ }
2463
+ for (var i = 0; i < c; ++i) {
2464
+ 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
+ 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;
2472
+ }
2473
+ return files;
2474
+ }