@woosh/meep-engine 3.45.0 → 3.46.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/core/assert.d.ts.map +1 -1
- package/src/core/assert.js +5 -1
- package/src/core/binary/hash/XXH128Hash.d.ts +1 -37
- package/src/core/binary/hash/XXH128Hash.d.ts.map +1 -1
- package/src/core/binary/hash/XXH128Hash.js +4 -55
- package/src/core/binary/hash/XXH3_SECRET.d.ts +1 -12
- package/src/core/binary/hash/XXH3_SECRET.d.ts.map +1 -1
- package/src/core/binary/hash/XXH3_SECRET.js +4 -25
- package/src/core/binary/hash/crc32.d.ts +1 -15
- package/src/core/binary/hash/crc32.d.ts.map +1 -1
- package/src/core/binary/hash/crc32.js +4 -96
- package/src/core/binary/hash/xxh3_128.d.ts +1 -9
- package/src/core/binary/hash/xxh3_128.d.ts.map +1 -1
- package/src/core/binary/hash/xxh3_128.js +4 -341
- package/src/core/binary/hash/xxh3_64.d.ts +1 -8
- package/src/core/binary/hash/xxh3_64.d.ts.map +1 -1
- package/src/core/binary/hash/xxh3_64.js +4 -241
- package/src/core/binary/hash/xxh3_common.d.ts +1 -223
- package/src/core/binary/hash/xxh3_common.d.ts.map +1 -1
- package/src/core/binary/hash/xxh3_common.js +90 -476
- package/src/core/collection/array/combine_hash.d.ts +6 -0
- package/src/core/collection/array/combine_hash.d.ts.map +1 -1
- package/src/core/collection/array/combine_hash.js +6 -0
- package/src/core/function/FunctionCompiler.js +2 -2
- package/src/core/geom/3d/mat4/m4_multiply.d.ts +3 -0
- package/src/core/geom/3d/mat4/m4_multiply.d.ts.map +1 -1
- package/src/core/geom/3d/mat4/m4_multiply.js +3 -0
- package/src/core/geom/3d/mat4/m4_multiply_f64.d.ts +30 -0
- package/src/core/geom/3d/mat4/m4_multiply_f64.d.ts.map +1 -0
- package/src/core/geom/3d/mat4/m4_multiply_f64.js +106 -0
- package/src/core/geom/ConicRay.js +2 -2
- package/src/core/geom/Vector4.d.ts.map +1 -1
- package/src/core/geom/Vector4.js +8 -5
- package/src/core/math/hash/XXH128Hash.d.ts +38 -0
- package/src/core/math/hash/XXH128Hash.d.ts.map +1 -0
- package/src/core/math/hash/XXH128Hash.js +55 -0
- package/src/core/math/hash/XXH3_SECRET.d.ts +13 -0
- package/src/core/math/hash/XXH3_SECRET.d.ts.map +1 -0
- package/src/core/math/hash/XXH3_SECRET.js +25 -0
- package/src/core/math/hash/crc32.d.ts +16 -0
- package/src/core/math/hash/crc32.d.ts.map +1 -0
- package/src/core/math/hash/crc32.js +96 -0
- package/src/core/math/hash/xxh3_128.d.ts +10 -0
- package/src/core/math/hash/xxh3_128.d.ts.map +1 -0
- package/src/core/math/hash/xxh3_128.js +341 -0
- package/src/core/math/hash/xxh3_64.d.ts +9 -0
- package/src/core/math/hash/xxh3_64.d.ts.map +1 -0
- package/src/core/math/hash/xxh3_64.js +241 -0
- package/src/core/math/hash/xxh3_common.d.ts +224 -0
- package/src/core/math/hash/xxh3_common.d.ts.map +1 -0
- package/src/core/math/hash/xxh3_common.js +476 -0
- package/src/core/math/lookup/ParameterLookupTable.js +2 -2
- package/src/core/model/node-graph/node/NodeInstancePortReference.js +2 -2
- package/src/core/model/reactive/model/ReactiveBinaryExpression.js +2 -2
- package/src/core/model/reactive/model/terminal/ReactiveReference.js +2 -2
- package/src/engine/asset/AssetDescription.js +2 -2
- package/src/engine/ecs/animation/Animation.js +2 -2
- package/src/engine/ecs/animation/AnimationClip.d.ts.map +1 -1
- package/src/engine/ecs/animation/AnimationClip.js +7 -5
- package/src/engine/ecs/gui/GUIElement.d.ts.map +1 -1
- package/src/engine/ecs/gui/GUIElement.js +7 -5
- package/src/engine/ecs/gui/hud/HeadsUpDisplay.js +2 -2
- package/src/engine/ecs/gui/position/ViewportPosition.d.ts.map +1 -1
- package/src/engine/ecs/gui/position/ViewportPosition.js +11 -7
- package/src/engine/ecs/transform/Transform64.d.ts +1 -1
- package/src/engine/ecs/transform/Transform64.d.ts.map +1 -1
- package/src/engine/ecs/transform/Transform64.js +5 -4
- package/src/engine/graphics/ecs/animation/animator/AnimationClip.d.ts.map +1 -1
- package/src/engine/graphics/ecs/animation/animator/AnimationClip.js +8 -5
- package/src/engine/graphics/ecs/animation/animator/AnimationClipDefinition.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/AnimationNotification.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/AnimationNotificationDefinition.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationStateDefinition.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.d.ts.map +1 -1
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationTransitionDefinition.js +8 -5
- package/src/engine/graphics/ecs/decal/v2/Decal.d.ts.map +1 -1
- package/src/engine/graphics/ecs/decal/v2/Decal.js +9 -8
- package/src/engine/graphics/render/frame_graph/resource/TextureResourceDescriptor.d.ts.map +1 -1
- package/src/engine/graphics/render/frame_graph/resource/TextureResourceDescriptor.js +9 -6
- package/src/engine/graphics3/ParticipatingMedia.js +204 -204
- package/src/engine/graphics3/animation/AnimationClips.d.ts +5 -0
- package/src/engine/graphics3/animation/AnimationClips.d.ts.map +1 -1
- package/src/engine/graphics3/animation/AnimationClips.js +5 -0
- package/src/engine/grid/obstacle/GridObstacle.js +2 -2
- package/src/engine/intelligence/behavior/selector/WeightedElement.js +2 -2
- package/src/engine/interpolation/Interpolated.js +2 -2
- package/src/engine/physics/cloth/ecs/Cloth.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/Cloth.js +7 -5
- package/src/engine/physics/cloth/ecs/ClothCollider.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothCollider.js +7 -5
- package/src/engine/physics/cloth/ecs/ClothDynamics.d.ts.map +1 -1
- package/src/engine/physics/cloth/ecs/ClothDynamics.js +20 -11
- package/src/engine/physics/fluid/FluidField.d.ts.map +1 -1
- package/src/engine/physics/fluid/FluidField.js +7 -5
- package/src/engine/physics/fluid/ecs/FluidComponent.d.ts.map +1 -1
- package/src/engine/physics/fluid/ecs/FluidComponent.js +19 -11
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.d.ts +2 -2
- package/src/engine/physics/fluid/effector/AbstractFluidEffector.js +2 -2
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/GlobalFluidEffector.js +11 -7
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/ImpulseFluidEffector.js +11 -7
- package/src/engine/physics/fluid/effector/WakeFluidEffector.d.ts.map +1 -1
- package/src/engine/physics/fluid/effector/WakeFluidEffector.js +16 -9
- package/src/engine/sound/ecs/audio/AudioEmitter.d.ts.map +1 -1
- package/src/engine/sound/ecs/audio/AudioEmitter.js +12 -7
- package/src/engine/sound/ecs/trigger/AudioEventTrigger.d.ts.map +1 -1
- package/src/engine/sound/ecs/trigger/AudioEventTrigger.js +192 -191
- package/src/engine/sound/simulation/core/AcousticMedium.js +2 -2
- package/src/engine/sound/simulation/definition/AcousticDirectivity.js +2 -2
- package/src/engine/sound/simulation/definition/AcousticMaterial.d.ts.map +1 -1
- package/src/engine/sound/simulation/definition/AcousticMaterial.js +11 -7
- package/src/engine/sound/sopra/definition/BusDefinition.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/BusDefinition.js +5 -4
- package/src/engine/sound/sopra/definition/DuckingRule.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/DuckingRule.js +7 -5
- package/src/engine/sound/sopra/definition/EventDescription.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/EventDescription.js +23 -13
- package/src/engine/sound/sopra/definition/MixerSnapshot.js +2 -2
- package/src/engine/sound/sopra/definition/ParameterDefinition.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/ParameterDefinition.js +7 -5
- package/src/engine/sound/sopra/definition/clip/AbstractAudioClip.js +2 -2
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/BlendContainerAudioClip.js +4 -3
- package/src/engine/sound/sopra/definition/clip/ContainerAudioClip.js +2 -2
- package/src/engine/sound/sopra/definition/clip/RandomContainerAudioClip.js +3 -3
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SampleAudioClip.js +16 -9
- package/src/engine/sound/sopra/definition/clip/SilenceAudioClip.js +2 -2
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts +1 -1
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/clip/SwitchContainerAudioClip.js +2 -2
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/CompressorEffect.js +7 -5
- package/src/engine/sound/sopra/definition/effect/EqEffect.d.ts.map +1 -1
- package/src/engine/sound/sopra/definition/effect/EqEffect.js +8 -5
- package/src/engine/sound/sopra/definition/effect/ReverbEffect.js +2 -2
- package/src/engine/sound/sopra/legacy/SoundEmitter.d.ts.map +1 -1
- package/src/engine/sound/sopra/legacy/SoundEmitter.js +357 -352
- package/src/engine/sound/sopra/legacy/SoundTrack.d.ts.map +1 -1
- package/src/engine/sound/sopra/legacy/SoundTrack.js +281 -278
- package/src/format/image/png/PNGReader.js +644 -644
- package/src/format/image/png/crc32.d.ts +1 -1
- package/src/format/image/png/crc32.js +7 -8
- package/src/shade/descriptor/binding/BindGroupLayoutDescriptor.js +2 -2
- package/src/shade/descriptor/binding/BindGroupLayoutEntry.d.ts.map +1 -1
- package/src/shade/descriptor/binding/BindGroupLayoutEntry.js +12 -8
- package/src/shade/descriptor/binding/StorageTextureBindingLayout.js +2 -2
- package/src/shade/descriptor/binding/TextureBindingLayout.js +2 -2
- package/src/shade/descriptor/blend/BlendComponent.js +2 -2
- package/src/shade/descriptor/pipeline/PipelineDescriptorBase.js +2 -2
- package/src/shade/descriptor/pipeline/PipelineLayoutDescriptor.js +2 -2
- package/src/shade/descriptor/pipeline/ProgrammableStage.js +2 -2
- package/src/shade/descriptor/pipeline/compute/ComputePipelineDescriptor.js +2 -2
- package/src/shade/descriptor/pipeline/render/ColorTargetState.js +2 -2
- package/src/shade/descriptor/pipeline/render/FragmentState.js +2 -2
- package/src/shade/descriptor/pipeline/render/PrimitiveState.js +2 -2
- package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/pipeline/render/RenderPipelineDescriptor.js +8 -5
- package/src/shade/descriptor/pipeline/render/VertexAttribute.js +2 -2
- package/src/shade/descriptor/texture/SamplerDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/texture/SamplerDescriptor.js +20 -12
- package/src/shade/descriptor/texture/TextureDescriptor.d.ts.map +1 -1
- package/src/shade/descriptor/texture/TextureDescriptor.js +11 -7
- package/src/shade/device/graph/BufferResourceDescriptor.d.ts.map +1 -1
- package/src/shade/device/graph/BufferResourceDescriptor.js +196 -193
- package/src/shade/device/graph/TextureResourceDescriptor.d.ts.map +1 -1
- package/src/shade/device/graph/TextureResourceDescriptor.js +178 -173
- package/src/shade/device/timing/profile/sgpt_read_header.js +1 -1
- package/src/shade/device/timing/profile/sgpt_read_records.js +1 -1
- package/src/shade/device/timing/profile/sgpt_write_header.js +1 -1
- package/src/shade/device/timing/profile/sgpt_write_record.js +1 -1
- package/src/shade/renderer/binding/BufferBinding.js +2 -2
- package/src/shade/renderer/camera/Camera.js +2 -2
- package/src/shade/renderer/geometry/Attribute.js +2 -2
- package/src/shade/renderer/geometry/Geometry.js +2 -2
- package/src/shade/renderer/geometry/geometry_deduplicate_vertices.js +2 -2
- package/src/shade/renderer/geometry/meshlet/MeshletBatch.js +2 -2
- package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_asset_id.js +13 -13
- package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_directory_block_checksum.js +41 -41
- package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_frame_checksum.js +41 -41
- package/src/shade/renderer/geometry/virtual/format/checksum/vgeo_compute_header_checksum.js +25 -25
- package/src/shade/renderer/material/StandardShadeMaterial.d.ts.map +1 -1
- package/src/shade/renderer/material/StandardShadeMaterial.js +13 -8
- package/src/shade/renderer/scene/optimization/geometry/internal/triangle_fingerprint_stream.d.ts.map +1 -1
- package/src/shade/renderer/scene/optimization/geometry/internal/triangle_fingerprint_stream.js +14 -5
- package/src/shade/renderer/scene/optimization/sampler2d_from_image_bitmap.js +1 -1
- package/src/shade/renderer/shader/type/WGSLStructField.js +2 -2
- package/src/shade/renderer/shader/type/WebGPUArray.js +2 -2
- package/src/shade/renderer/shader/type/WebGPUStruct.d.ts.map +1 -1
- package/src/shade/renderer/shader/type/WebGPUStruct.js +9 -6
- package/src/shade/renderer/texture/ShadeTexture.d.ts.map +1 -1
- package/src/shade/renderer/texture/ShadeTexture.js +17 -10
- package/src/shade/renderer/texture/mipmaps/WebGPUMipmapGenerator.js +2 -2
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.d.ts +4 -4
- package/src/shade/renderer/water/surface/chunk_water_surface_sample.js +6 -6
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/GPUWaterParticles.js +46 -55
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts +3 -3
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/WATER_PARTICLE_STRUCT.js +14 -4
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts +10 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle.js +82 -40
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts +4 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/chunk_water_particle_step.js +8 -4
- package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts +98 -86
- package/src/shade/renderer/water/surface/particles/shader_water_particles.d.ts.map +1 -1
- package/src/shade/renderer/water/surface/particles/shader_water_particles.js +440 -298
- package/src/view/common/HTMLElementCacheKey.d.ts.map +1 -1
- package/src/view/common/HTMLElementCacheKey.js +4 -3
- package/src/view/minimap/MinimapMarker.js +2 -2
package/package.json
CHANGED
package/src/core/assert.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../../src/core/assert.js"],"names":[],"mappings":"AAgDA;;;;GAIG;AACH,0BAHW,OAAO,MACP,MAAM,QAMhB;;IAoKD;;;;;OAKG;IACH,kEAQC;;;;;;;;;;;;;;;;IAoBD;;;;;;OAMG;IACH,
|
|
1
|
+
{"version":3,"file":"assert.d.ts","sourceRoot":"","sources":["../../../src/core/assert.js"],"names":[],"mappings":"AAgDA;;;;GAIG;AACH,0BAHW,OAAO,MACP,MAAM,QAMhB;;IAoKD;;;;;OAKG;IACH,kEAQC;;;;;;;;;;;;;;;;IAoBD;;;;;;OAMG;IACH,uGASC;;;IAiCD;;;;OAIG;IACH,2DAMC;IAED;;;;OAIG;IACH,4DAMC;IAED;;;;OAIG;IACH,0DAMC;;IAiBD;;;;OAIG;IACH,sEAMC;IAED;;;;OAIG;IACH,mEAMC;IAED;;;;OAIG;IACH,4DAKC;IAED;;;;OAIG;IACH,4GAKC;;IAkBD;;;;OAIG;IACH,2DAMC;IAGD;;;;OAIG;IACH,wDAIC;IAED;;;;OAIG;IACH,yDAMC;IAED;;;;OAIG;IACH,2DAIC;IAED;;;;;OAKG;IACH,6DAIC;IAED;;;;;;;;;;;;;OAaG;IACH,2EAsBC;;AAtfD;;;;;GAKG;AACH,6CAFW,MAAM,QAIhB;AAED;;;;GAIG;AACH,0BAHW,OAAO,MACP,MAAM,QAIhB;AAhCD;;;;;GAKG;AACH,0CAFW,MAAM,QAShB;AAqBD;;;;;GAKG;AACH,kCAJW,MAAM,KACN,MAAM,MACN,MAAM,QAIhB;AAaD;;;;;GAKG;AACH,gCAJW,MAAM,KACN,MAAM,MACN,MAAM,QAiBhB;AAyBD;;;;;GAKG;AACH,uCAJW,MAAM,KACN,MAAM,MACN,MAAM,QAiBhB;AA5CD;;;;;GAKG;AACH,6BAJW,MAAM,KACN,MAAM,MACN,MAAM,QAiBhB;AAyBD;;;;;GAKG;AACH,oCAJW,MAAM,KACN,MAAM,MACN,MAAM,QAiBhB;AAkBD;;;;;;GAMG;AACH,0CAHW,MAAM,cACN,MAAM,QAehB;AAED;;;;;GAKG;AACH,iEAFW,MAAM,QAIhB;AAED;;;;;GAKG;AACH,mEAFW,MAAM,QAIhB;AAED;;;;;GAKG;AACH,+IAFW,MAAM,QAMhB;AApED;;;;;GAKG;AACH,2DAFW,MAAM,QAQhB;AA+GD;;;;GAIG;AACH,iCAHW,MAAM,MAAE,SACR,MAAM,QAQhB;AAID;;;;GAIG;AACH,iCAHW,MAAM,MAAE,SACR,MAAM,QAQhB;AA2CD;;;;GAIG;AACH,kCAHW,MAAM,MAAE,SACR,MAAM,QAQhB;AAuDD;;;;GAIG;AACH,0DAMC"}
|
package/src/core/assert.js
CHANGED
|
@@ -264,7 +264,11 @@ assert.isInstanceOf = function (
|
|
|
264
264
|
value,
|
|
265
265
|
klass, value_name = "value", class_name = klass.name) {
|
|
266
266
|
defined(klass, 'klass');
|
|
267
|
-
|
|
267
|
+
|
|
268
|
+
// the message is built only on failure: built on every call, it allocated 64 B a call
|
|
269
|
+
if (!(value instanceof klass)) {
|
|
270
|
+
throw new Error(`expected ${value_name} to be instance of class '${class_name}'`);
|
|
271
|
+
}
|
|
268
272
|
}
|
|
269
273
|
|
|
270
274
|
|
|
@@ -1,38 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* A 128-bit xxHash3 result, kept as its two 64-bit halves because that is how the reference
|
|
3
|
-
* implementation names them and how every serialized form writes them.
|
|
4
|
-
*
|
|
5
|
-
* @author Alex Goldring
|
|
6
|
-
* @copyright Company Named Limited (c) 2026
|
|
7
|
-
*/
|
|
8
|
-
export class XXH128Hash {
|
|
9
|
-
/**
|
|
10
|
-
* @param {bigint} low64
|
|
11
|
-
* @param {bigint} high64
|
|
12
|
-
*/
|
|
13
|
-
constructor(low64: bigint, high64: bigint);
|
|
14
|
-
/**
|
|
15
|
-
* @type {bigint}
|
|
16
|
-
*/
|
|
17
|
-
low64: bigint;
|
|
18
|
-
/**
|
|
19
|
-
* @type {bigint}
|
|
20
|
-
*/
|
|
21
|
-
high64: bigint;
|
|
22
|
-
/**
|
|
23
|
-
* @param {XXH128Hash} other
|
|
24
|
-
* @returns {boolean}
|
|
25
|
-
*/
|
|
26
|
-
equals(other: XXH128Hash): boolean;
|
|
27
|
-
/**
|
|
28
|
-
* @returns {string} 32 lowercase hex digits, high half first
|
|
29
|
-
*/
|
|
30
|
-
toString(): string;
|
|
31
|
-
/**
|
|
32
|
-
* Useful for type checking
|
|
33
|
-
* @readonly
|
|
34
|
-
* @type {boolean}
|
|
35
|
-
*/
|
|
36
|
-
readonly isXXH128Hash: boolean;
|
|
37
|
-
}
|
|
1
|
+
export { XXH128Hash } from "../../math/hash/XXH128Hash.js";
|
|
38
2
|
//# sourceMappingURL=XXH128Hash.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XXH128Hash.d.ts","sourceRoot":"","sources":["../../../../../src/core/binary/hash/XXH128Hash.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"XXH128Hash.d.ts","sourceRoot":"","sources":["../../../../../src/core/binary/hash/XXH128Hash.js"],"names":[],"mappings":""}
|
|
@@ -1,55 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* A 128-bit xxHash3 result, kept as its two 64-bit halves because that is how the reference
|
|
6
|
-
* implementation names them and how every serialized form writes them.
|
|
7
|
-
*
|
|
8
|
-
* @author Alex Goldring
|
|
9
|
-
* @copyright Company Named Limited (c) 2026
|
|
10
|
-
*/
|
|
11
|
-
export class XXH128Hash {
|
|
12
|
-
/**
|
|
13
|
-
* @type {bigint}
|
|
14
|
-
*/
|
|
15
|
-
low64 = 0n;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* @type {bigint}
|
|
19
|
-
*/
|
|
20
|
-
high64 = 0n;
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* @param {bigint} low64
|
|
24
|
-
* @param {bigint} high64
|
|
25
|
-
*/
|
|
26
|
-
constructor(low64, high64) {
|
|
27
|
-
assert.equal(typeof low64, 'bigint', `low64 must be a bigint, instead was '${typeof low64}'`);
|
|
28
|
-
assert.equal(typeof high64, 'bigint', `high64 must be a bigint, instead was '${typeof high64}'`);
|
|
29
|
-
|
|
30
|
-
this.low64 = low64 & XXH_MASK_64;
|
|
31
|
-
this.high64 = high64 & XXH_MASK_64;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* @param {XXH128Hash} other
|
|
36
|
-
* @returns {boolean}
|
|
37
|
-
*/
|
|
38
|
-
equals(other) {
|
|
39
|
-
return this.low64 === other.low64 && this.high64 === other.high64;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* @returns {string} 32 lowercase hex digits, high half first
|
|
44
|
-
*/
|
|
45
|
-
toString() {
|
|
46
|
-
return this.high64.toString(16).padStart(16, '0') + this.low64.toString(16).padStart(16, '0');
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Useful for type checking
|
|
52
|
-
* @readonly
|
|
53
|
-
* @type {boolean}
|
|
54
|
-
*/
|
|
55
|
-
XXH128Hash.prototype.isXXH128Hash = true;
|
|
1
|
+
export {
|
|
2
|
+
/** @deprecated moved to core/math/hash/XXH128Hash.js; import it from there */
|
|
3
|
+
XXH128Hash
|
|
4
|
+
} from "../../math/hash/XXH128Hash.js";
|
|
@@ -1,13 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* xxHash3's default secret — the pseudorandom key material every unseeded hash mixes with, taken
|
|
3
|
-
* directly from FARSH by the reference implementation. Reproduced byte-for-byte; changing a single
|
|
4
|
-
* byte changes every hash this module produces.
|
|
5
|
-
*
|
|
6
|
-
* @see https://github.com/Cyan4973/xxHash/blob/dev/xxhash.h
|
|
7
|
-
* @readonly
|
|
8
|
-
* @type {Uint8Array}
|
|
9
|
-
*
|
|
10
|
-
* @copyright Company Named Limited (c) 2026
|
|
11
|
-
*/
|
|
12
|
-
export const XXH3_SECRET: Uint8Array;
|
|
1
|
+
export { XXH3_SECRET } from "../../math/hash/XXH3_SECRET.js";
|
|
13
2
|
//# sourceMappingURL=XXH3_SECRET.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"XXH3_SECRET.d.ts","sourceRoot":"","sources":["../../../../../src/core/binary/hash/XXH3_SECRET.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"XXH3_SECRET.d.ts","sourceRoot":"","sources":["../../../../../src/core/binary/hash/XXH3_SECRET.js"],"names":[],"mappings":""}
|
|
@@ -1,25 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
*
|
|
6
|
-
* @see https://github.com/Cyan4973/xxHash/blob/dev/xxhash.h
|
|
7
|
-
* @readonly
|
|
8
|
-
* @type {Uint8Array}
|
|
9
|
-
*
|
|
10
|
-
* @copyright Company Named Limited (c) 2026
|
|
11
|
-
*/
|
|
12
|
-
export const XXH3_SECRET = new Uint8Array([
|
|
13
|
-
0xb8, 0xfe, 0x6c, 0x39, 0x23, 0xa4, 0x4b, 0xbe, 0x7c, 0x01, 0x81, 0x2c, 0xf7, 0x21, 0xad, 0x1c,
|
|
14
|
-
0xde, 0xd4, 0x6d, 0xe9, 0x83, 0x90, 0x97, 0xdb, 0x72, 0x40, 0xa4, 0xa4, 0xb7, 0xb3, 0x67, 0x1f,
|
|
15
|
-
0xcb, 0x79, 0xe6, 0x4e, 0xcc, 0xc0, 0xe5, 0x78, 0x82, 0x5a, 0xd0, 0x7d, 0xcc, 0xff, 0x72, 0x21,
|
|
16
|
-
0xb8, 0x08, 0x46, 0x74, 0xf7, 0x43, 0x24, 0x8e, 0xe0, 0x35, 0x90, 0xe6, 0x81, 0x3a, 0x26, 0x4c,
|
|
17
|
-
0x3c, 0x28, 0x52, 0xbb, 0x91, 0xc3, 0x00, 0xcb, 0x88, 0xd0, 0x65, 0x8b, 0x1b, 0x53, 0x2e, 0xa3,
|
|
18
|
-
0x71, 0x64, 0x48, 0x97, 0xa2, 0x0d, 0xf9, 0x4e, 0x38, 0x19, 0xef, 0x46, 0xa9, 0xde, 0xac, 0xd8,
|
|
19
|
-
0xa8, 0xfa, 0x76, 0x3f, 0xe3, 0x9c, 0x34, 0x3f, 0xf9, 0xdc, 0xbb, 0xc7, 0xc7, 0x0b, 0x4f, 0x1d,
|
|
20
|
-
0x8a, 0x51, 0xe0, 0x4b, 0xcd, 0xb4, 0x59, 0x31, 0xc8, 0x9f, 0x7e, 0xc9, 0xd9, 0x78, 0x73, 0x64,
|
|
21
|
-
0xea, 0xc5, 0xac, 0x83, 0x34, 0xd3, 0xeb, 0xc3, 0xc5, 0x81, 0xa0, 0xff, 0xfa, 0x13, 0x63, 0xeb,
|
|
22
|
-
0x17, 0x0d, 0xdd, 0x51, 0xb7, 0xf0, 0xda, 0x49, 0xd3, 0x16, 0x55, 0x26, 0x29, 0xd4, 0x68, 0x9e,
|
|
23
|
-
0x2b, 0x16, 0xbe, 0x58, 0x7d, 0x47, 0xa1, 0xfc, 0x8f, 0xf8, 0xb8, 0xd1, 0x7a, 0xd0, 0x31, 0xce,
|
|
24
|
-
0x45, 0xcb, 0x3a, 0x8f, 0x95, 0x16, 0x04, 0x28, 0xaf, 0xd7, 0xfb, 0xca, 0xbb, 0x4b, 0x40, 0x7e,
|
|
25
|
-
]);
|
|
1
|
+
export {
|
|
2
|
+
/** @deprecated moved to core/math/hash/XXH3_SECRET.js; import it from there */
|
|
3
|
+
XXH3_SECRET
|
|
4
|
+
} from "../../math/hash/XXH3_SECRET.js";
|
|
@@ -1,16 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* 32-bit Cyclic Redundancy Checksum.
|
|
3
|
-
* @see https://en.wikipedia.org/wiki/Cyclic_redundancy_check
|
|
4
|
-
* @param {Uint8Array} buffer byte buffer
|
|
5
|
-
* @param {number} [offset=0] where to start in the input buffer
|
|
6
|
-
* @param {number} [length=buffer.length] how many bytes to include in checksum calculation
|
|
7
|
-
* @return {number} Unsigned 32-bit integer value
|
|
8
|
-
* @copyright Company Named Limited (c) 2026
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* const buffer = new BinaryBuffer();
|
|
12
|
-
* buffer.writeASCIIString("Hello World");
|
|
13
|
-
* const checksum = crc32(buffer.raw_bytes, 0, buffer.position);
|
|
14
|
-
*/
|
|
15
|
-
export function crc32(buffer: Uint8Array, offset?: number, length?: number): number;
|
|
1
|
+
export { crc32 } from "../../math/hash/crc32.js";
|
|
16
2
|
//# sourceMappingURL=crc32.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"crc32.d.ts","sourceRoot":"","sources":["../../../../../src/core/binary/hash/crc32.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"crc32.d.ts","sourceRoot":"","sources":["../../../../../src/core/binary/hash/crc32.js"],"names":[],"mappings":""}
|
|
@@ -1,96 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
* headers and gzip trailers all carry, which is why this lives in core rather than beside any one
|
|
6
|
-
* of them.
|
|
7
|
-
*
|
|
8
|
-
* Ported from C source at https://www.w3.org/TR/PNG-CRCAppendix.html
|
|
9
|
-
* See also ISO 3309 [ISO-3309] or ITU-T V.42 [ITU-V42] for a formal specification
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
*
|
|
14
|
-
* @type {Uint32Array}
|
|
15
|
-
*/
|
|
16
|
-
const crc_table = new Uint32Array(256);
|
|
17
|
-
|
|
18
|
-
// Precompute checksum table
|
|
19
|
-
for (let n = 0; n < 256; n++) {
|
|
20
|
-
let c = n;
|
|
21
|
-
|
|
22
|
-
for (let k = 0; k < 8; k++) {
|
|
23
|
-
|
|
24
|
-
if ((c & 1) !== 0) {
|
|
25
|
-
// CRC32b polynomial
|
|
26
|
-
c = 0xedb88320 ^ (c >>> 1);
|
|
27
|
-
} else {
|
|
28
|
-
c = c >>> 1;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
crc_table[n] = c;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
const INITIAL = 0xffffffff;
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Update a running CRC with the bytes buf[0..len-1]--the CRC
|
|
40
|
-
* should be initialized to all 1's, and the transmitted value
|
|
41
|
-
* is the 1's complement of the final running CRC (see the crc32() routine below)).
|
|
42
|
-
* @param {number} input_crc starting CRC value
|
|
43
|
-
* @param {Uint8Array} buffer
|
|
44
|
-
* @param {number} offset
|
|
45
|
-
* @param {number} length
|
|
46
|
-
* @return {number}
|
|
47
|
-
*/
|
|
48
|
-
function update_crc(
|
|
49
|
-
input_crc,
|
|
50
|
-
buffer,
|
|
51
|
-
offset,
|
|
52
|
-
length,
|
|
53
|
-
) {
|
|
54
|
-
assert.isNonNegativeInteger(input_crc, 'input_crc');
|
|
55
|
-
assert.defined(buffer, 'buffer');
|
|
56
|
-
assert.isNonNegativeInteger(offset, 'offset');
|
|
57
|
-
assert.isNonNegativeInteger(length, 'length');
|
|
58
|
-
|
|
59
|
-
let crc = input_crc;
|
|
60
|
-
|
|
61
|
-
const end = offset + length;
|
|
62
|
-
|
|
63
|
-
for (let n = offset; n < end; n++) {
|
|
64
|
-
|
|
65
|
-
const byte = buffer[n];
|
|
66
|
-
|
|
67
|
-
const lookup_index = (crc ^ byte) & 0xff;
|
|
68
|
-
|
|
69
|
-
crc = crc_table[lookup_index] ^ (crc >>> 8);
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
return crc;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* 32-bit Cyclic Redundancy Checksum.
|
|
78
|
-
* @see https://en.wikipedia.org/wiki/Cyclic_redundancy_check
|
|
79
|
-
* @param {Uint8Array} buffer byte buffer
|
|
80
|
-
* @param {number} [offset=0] where to start in the input buffer
|
|
81
|
-
* @param {number} [length=buffer.length] how many bytes to include in checksum calculation
|
|
82
|
-
* @return {number} Unsigned 32-bit integer value
|
|
83
|
-
* @copyright Company Named Limited (c) 2026
|
|
84
|
-
*
|
|
85
|
-
* @example
|
|
86
|
-
* const buffer = new BinaryBuffer();
|
|
87
|
-
* buffer.writeASCIIString("Hello World");
|
|
88
|
-
* const checksum = crc32(buffer.raw_bytes, 0, buffer.position);
|
|
89
|
-
*/
|
|
90
|
-
export function crc32(
|
|
91
|
-
buffer,
|
|
92
|
-
offset=0,
|
|
93
|
-
length=buffer.length,
|
|
94
|
-
) {
|
|
95
|
-
return (update_crc(INITIAL, buffer, offset, length) ^ INITIAL) >>> 0;
|
|
96
|
-
}
|
|
1
|
+
export {
|
|
2
|
+
/** @deprecated moved to core/math/hash/crc32.js; import it from there */
|
|
3
|
+
crc32
|
|
4
|
+
} from "../../math/hash/crc32.js";
|
|
@@ -1,10 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* Hash `input` to a 128-bit value.
|
|
3
|
-
*
|
|
4
|
-
* @param {Uint8Array} input bytes to hash; an empty array is valid
|
|
5
|
-
* @param {bigint} [seed] alters the whole hash; 0 selects the reference's unseeded behaviour
|
|
6
|
-
* @returns {XXH128Hash}
|
|
7
|
-
*/
|
|
8
|
-
export function xxh3_128(input: Uint8Array, seed?: bigint): XXH128Hash;
|
|
9
|
-
import { XXH128Hash } from "./XXH128Hash.js";
|
|
1
|
+
export { xxh3_128 } from "../../math/hash/xxh3_128.js";
|
|
10
2
|
//# sourceMappingURL=xxh3_128.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xxh3_128.d.ts","sourceRoot":"","sources":["../../../../../src/core/binary/hash/xxh3_128.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"xxh3_128.d.ts","sourceRoot":"","sources":["../../../../../src/core/binary/hash/xxh3_128.js"],"names":[],"mappings":""}
|
|
@@ -1,341 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
mul64,
|
|
6
|
-
mult32to64,
|
|
7
|
-
read_u32,
|
|
8
|
-
read_u64,
|
|
9
|
-
rotl32,
|
|
10
|
-
sub64,
|
|
11
|
-
swap32,
|
|
12
|
-
swap64,
|
|
13
|
-
u64,
|
|
14
|
-
XXH3_MIDSIZE_LASTOFFSET,
|
|
15
|
-
XXH3_MIDSIZE_MAX,
|
|
16
|
-
XXH3_MIDSIZE_STARTOFFSET,
|
|
17
|
-
XXH3_SECRET_SIZE_MIN,
|
|
18
|
-
xxh3_assert_arguments,
|
|
19
|
-
xxh3_avalanche,
|
|
20
|
-
xxh3_hash_long_loop,
|
|
21
|
-
xxh3_init_acc,
|
|
22
|
-
xxh3_long_secret,
|
|
23
|
-
xxh3_merge_accs,
|
|
24
|
-
xxh3_mix16b,
|
|
25
|
-
XXH_MASK_64,
|
|
26
|
-
XXH_PRIME32_2,
|
|
27
|
-
XXH_PRIME64_1,
|
|
28
|
-
XXH_PRIME64_2,
|
|
29
|
-
XXH_PRIME64_4,
|
|
30
|
-
XXH_PRIME_MX2,
|
|
31
|
-
XXH_SECRET_MERGEACCS_START,
|
|
32
|
-
XXH_STRIPE_LEN,
|
|
33
|
-
xorshift64,
|
|
34
|
-
xxh64_avalanche,
|
|
35
|
-
} from "./xxh3_common.js";
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* xxHash3, 128-bit output.
|
|
39
|
-
*
|
|
40
|
-
* A direct transcription of the reference implementation, verified against its published sanity
|
|
41
|
-
* vectors — see `xxh3_128.spec.js`. The low 64 bits are *not* in general equal to
|
|
42
|
-
* {@link xxh3_64} of the same input; they only coincide for inputs longer than
|
|
43
|
-
* {@link XXH3_MIDSIZE_MAX}, where both variants share the accumulator loop.
|
|
44
|
-
*
|
|
45
|
-
* @see https://github.com/Cyan4973/xxHash
|
|
46
|
-
*
|
|
47
|
-
* @author Alex Goldring
|
|
48
|
-
* @copyright Company Named Limited (c) 2026
|
|
49
|
-
*/
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Full 64x64 -> 128 multiply. The halves are returned separately because every caller manipulates
|
|
53
|
-
* them independently before folding.
|
|
54
|
-
*
|
|
55
|
-
* @param {bigint} a
|
|
56
|
-
* @param {bigint} b
|
|
57
|
-
* @returns {XXH128Hash}
|
|
58
|
-
*/
|
|
59
|
-
function mult64to128(a, b) {
|
|
60
|
-
const product = a * b;
|
|
61
|
-
|
|
62
|
-
return new XXH128Hash(product & XXH_MASK_64, (product >> 64n) & XXH_MASK_64);
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
/**
|
|
66
|
-
* @param {Uint8Array} input 1..3 bytes
|
|
67
|
-
* @param {Uint8Array} secret
|
|
68
|
-
* @param {bigint} seed
|
|
69
|
-
* @returns {XXH128Hash}
|
|
70
|
-
*/
|
|
71
|
-
function len_1to3(input, secret, seed) {
|
|
72
|
-
const len = input.length;
|
|
73
|
-
|
|
74
|
-
const c1 = input[0];
|
|
75
|
-
const c2 = input[len >> 1];
|
|
76
|
-
const c3 = input[len - 1];
|
|
77
|
-
|
|
78
|
-
const combined_lo = BigInt(((c1 << 16) | (c2 << 24) | c3 | (len << 8)) >>> 0);
|
|
79
|
-
const combined_hi = rotl32(swap32(combined_lo), 13);
|
|
80
|
-
|
|
81
|
-
const bitflip_lo = add64(read_u32(secret, 0) ^ read_u32(secret, 4), seed);
|
|
82
|
-
const bitflip_hi = sub64(read_u32(secret, 8) ^ read_u32(secret, 12), seed);
|
|
83
|
-
|
|
84
|
-
return new XXH128Hash(
|
|
85
|
-
xxh64_avalanche(combined_lo ^ bitflip_lo),
|
|
86
|
-
xxh64_avalanche(combined_hi ^ bitflip_hi)
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* @param {Uint8Array} input 4..8 bytes
|
|
92
|
-
* @param {Uint8Array} secret
|
|
93
|
-
* @param {bigint} seed
|
|
94
|
-
* @returns {XXH128Hash}
|
|
95
|
-
*/
|
|
96
|
-
function len_4to8(input, secret, seed) {
|
|
97
|
-
const len = input.length;
|
|
98
|
-
|
|
99
|
-
const mixed_seed = seed ^ u64(swap32(seed) << 32n);
|
|
100
|
-
|
|
101
|
-
const input_lo = read_u32(input, 0);
|
|
102
|
-
const input_hi = read_u32(input, len - 4);
|
|
103
|
-
|
|
104
|
-
const input_64 = add64(input_lo, input_hi << 32n);
|
|
105
|
-
const bitflip = add64(read_u64(secret, 16) ^ read_u64(secret, 24), mixed_seed);
|
|
106
|
-
const keyed = input_64 ^ bitflip;
|
|
107
|
-
|
|
108
|
-
const m128 = mult64to128(keyed, add64(XXH_PRIME64_1, BigInt(len) << 2n));
|
|
109
|
-
|
|
110
|
-
m128.high64 = add64(m128.high64, u64(m128.low64 << 1n));
|
|
111
|
-
m128.low64 = m128.low64 ^ (m128.high64 >> 3n);
|
|
112
|
-
|
|
113
|
-
m128.low64 = xorshift64(m128.low64, 35);
|
|
114
|
-
m128.low64 = mul64(m128.low64, XXH_PRIME_MX2);
|
|
115
|
-
m128.low64 = xorshift64(m128.low64, 28);
|
|
116
|
-
m128.high64 = xxh3_avalanche(m128.high64);
|
|
117
|
-
|
|
118
|
-
return m128;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* @param {Uint8Array} input 9..16 bytes
|
|
123
|
-
* @param {Uint8Array} secret
|
|
124
|
-
* @param {bigint} seed
|
|
125
|
-
* @returns {XXH128Hash}
|
|
126
|
-
*/
|
|
127
|
-
function len_9to16(input, secret, seed) {
|
|
128
|
-
const len = input.length;
|
|
129
|
-
|
|
130
|
-
const bitflip_lo = sub64(read_u64(secret, 32) ^ read_u64(secret, 40), seed);
|
|
131
|
-
const bitflip_hi = add64(read_u64(secret, 48) ^ read_u64(secret, 56), seed);
|
|
132
|
-
|
|
133
|
-
const input_lo = read_u64(input, 0);
|
|
134
|
-
|
|
135
|
-
let input_hi = read_u64(input, len - 8);
|
|
136
|
-
|
|
137
|
-
const m128 = mult64to128(input_lo ^ input_hi ^ bitflip_lo, XXH_PRIME64_1);
|
|
138
|
-
|
|
139
|
-
m128.low64 = add64(m128.low64, BigInt(len - 1) << 54n);
|
|
140
|
-
|
|
141
|
-
input_hi ^= bitflip_hi;
|
|
142
|
-
|
|
143
|
-
m128.high64 = add64(
|
|
144
|
-
m128.high64,
|
|
145
|
-
add64(input_hi, mult32to64(input_hi, XXH_PRIME32_2 - 1n))
|
|
146
|
-
);
|
|
147
|
-
|
|
148
|
-
m128.low64 = m128.low64 ^ swap64(m128.high64);
|
|
149
|
-
|
|
150
|
-
const h128 = mult64to128(m128.low64, XXH_PRIME64_2);
|
|
151
|
-
|
|
152
|
-
h128.high64 = add64(h128.high64, mul64(m128.high64, XXH_PRIME64_2));
|
|
153
|
-
|
|
154
|
-
h128.low64 = xxh3_avalanche(h128.low64);
|
|
155
|
-
h128.high64 = xxh3_avalanche(h128.high64);
|
|
156
|
-
|
|
157
|
-
return h128;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
/**
|
|
161
|
-
* @param {Uint8Array} input 0..16 bytes
|
|
162
|
-
* @param {Uint8Array} secret
|
|
163
|
-
* @param {bigint} seed
|
|
164
|
-
* @returns {XXH128Hash}
|
|
165
|
-
*/
|
|
166
|
-
function len_0to16(input, secret, seed) {
|
|
167
|
-
const len = input.length;
|
|
168
|
-
|
|
169
|
-
if (len > 8) {
|
|
170
|
-
return len_9to16(input, secret, seed);
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
if (len >= 4) {
|
|
174
|
-
return len_4to8(input, secret, seed);
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
if (len > 0) {
|
|
178
|
-
return len_1to3(input, secret, seed);
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
const bitflip_lo = read_u64(secret, 64) ^ read_u64(secret, 72);
|
|
182
|
-
const bitflip_hi = read_u64(secret, 80) ^ read_u64(secret, 88);
|
|
183
|
-
|
|
184
|
-
return new XXH128Hash(
|
|
185
|
-
xxh64_avalanche(seed ^ bitflip_lo),
|
|
186
|
-
xxh64_avalanche(seed ^ bitflip_hi)
|
|
187
|
-
);
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* The 32-byte mixing step: two 16-byte windows, each folded into one half and cross-XOR'd into the
|
|
192
|
-
* other. Slower than the 64-bit path's `mix16B`, and better behaved when a product lands on zero.
|
|
193
|
-
*
|
|
194
|
-
* @param {XXH128Hash} acc mutated in place
|
|
195
|
-
* @param {Uint8Array} input
|
|
196
|
-
* @param {number} input_1
|
|
197
|
-
* @param {number} input_2
|
|
198
|
-
* @param {Uint8Array} secret
|
|
199
|
-
* @param {number} secret_offset
|
|
200
|
-
* @param {bigint} seed
|
|
201
|
-
*/
|
|
202
|
-
function mix32b(acc, input, input_1, input_2, secret, secret_offset, seed) {
|
|
203
|
-
acc.low64 = add64(acc.low64, xxh3_mix16b(input, input_1, secret, secret_offset, seed));
|
|
204
|
-
acc.low64 = acc.low64 ^ add64(read_u64(input, input_2), read_u64(input, input_2 + 8));
|
|
205
|
-
|
|
206
|
-
acc.high64 = add64(acc.high64, xxh3_mix16b(input, input_2, secret, secret_offset + 16, seed));
|
|
207
|
-
acc.high64 = acc.high64 ^ add64(read_u64(input, input_1), read_u64(input, input_1 + 8));
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
/**
|
|
211
|
-
* The shared tail of both mid-size paths.
|
|
212
|
-
*
|
|
213
|
-
* @param {XXH128Hash} acc
|
|
214
|
-
* @param {number} len
|
|
215
|
-
* @param {bigint} seed
|
|
216
|
-
* @returns {XXH128Hash}
|
|
217
|
-
*/
|
|
218
|
-
function finalize_midsize(acc, len, seed) {
|
|
219
|
-
const low64 = xxh3_avalanche(add64(acc.low64, acc.high64));
|
|
220
|
-
|
|
221
|
-
const high64 = xxh3_avalanche(add64(
|
|
222
|
-
add64(mul64(acc.low64, XXH_PRIME64_1), mul64(acc.high64, XXH_PRIME64_4)),
|
|
223
|
-
mul64(sub64(BigInt(len), seed), XXH_PRIME64_2)
|
|
224
|
-
));
|
|
225
|
-
|
|
226
|
-
return new XXH128Hash(low64, sub64(0n, high64));
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
/**
|
|
230
|
-
* @param {Uint8Array} input 17..128 bytes
|
|
231
|
-
* @param {Uint8Array} secret
|
|
232
|
-
* @param {bigint} seed
|
|
233
|
-
* @returns {XXH128Hash}
|
|
234
|
-
*/
|
|
235
|
-
function len_17to128(input, secret, seed) {
|
|
236
|
-
const len = input.length;
|
|
237
|
-
|
|
238
|
-
const acc = new XXH128Hash(mul64(BigInt(len), XXH_PRIME64_1), 0n);
|
|
239
|
-
|
|
240
|
-
if (len > 32) {
|
|
241
|
-
if (len > 64) {
|
|
242
|
-
if (len > 96) {
|
|
243
|
-
mix32b(acc, input, 48, len - 64, secret, 96, seed);
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
mix32b(acc, input, 32, len - 48, secret, 64, seed);
|
|
247
|
-
}
|
|
248
|
-
|
|
249
|
-
mix32b(acc, input, 16, len - 32, secret, 32, seed);
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
mix32b(acc, input, 0, len - 16, secret, 0, seed);
|
|
253
|
-
|
|
254
|
-
return finalize_midsize(acc, len, seed);
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
/**
|
|
258
|
-
* @param {Uint8Array} input 129..240 bytes
|
|
259
|
-
* @param {Uint8Array} secret
|
|
260
|
-
* @param {bigint} seed
|
|
261
|
-
* @returns {XXH128Hash}
|
|
262
|
-
*/
|
|
263
|
-
function len_129to240(input, secret, seed) {
|
|
264
|
-
const len = input.length;
|
|
265
|
-
|
|
266
|
-
const acc = new XXH128Hash(mul64(BigInt(len), XXH_PRIME64_1), 0n);
|
|
267
|
-
|
|
268
|
-
for (let i = 32; i < 160; i += 32) {
|
|
269
|
-
mix32b(acc, input, i - 32, i - 16, secret, i - 32, seed);
|
|
270
|
-
}
|
|
271
|
-
|
|
272
|
-
acc.low64 = xxh3_avalanche(acc.low64);
|
|
273
|
-
acc.high64 = xxh3_avalanche(acc.high64);
|
|
274
|
-
|
|
275
|
-
for (let i = 160; i <= len; i += 32) {
|
|
276
|
-
mix32b(acc, input, i - 32, i - 16, secret, XXH3_MIDSIZE_STARTOFFSET + i - 160, seed);
|
|
277
|
-
}
|
|
278
|
-
|
|
279
|
-
mix32b(
|
|
280
|
-
acc,
|
|
281
|
-
input, len - 16, len - 32,
|
|
282
|
-
secret, XXH3_SECRET_SIZE_MIN - XXH3_MIDSIZE_LASTOFFSET - 16,
|
|
283
|
-
sub64(0n, seed)
|
|
284
|
-
);
|
|
285
|
-
|
|
286
|
-
return finalize_midsize(acc, len, seed);
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
/**
|
|
290
|
-
* @param {Uint8Array} input more than {@link XXH3_MIDSIZE_MAX} bytes
|
|
291
|
-
* @param {Uint8Array} secret
|
|
292
|
-
* @returns {XXH128Hash}
|
|
293
|
-
*/
|
|
294
|
-
function hash_long(input, secret) {
|
|
295
|
-
const acc = xxh3_init_acc();
|
|
296
|
-
|
|
297
|
-
xxh3_hash_long_loop(acc, input, secret);
|
|
298
|
-
|
|
299
|
-
const len = BigInt(input.length);
|
|
300
|
-
|
|
301
|
-
const low64 = xxh3_merge_accs(
|
|
302
|
-
acc,
|
|
303
|
-
secret, XXH_SECRET_MERGEACCS_START,
|
|
304
|
-
mul64(len, XXH_PRIME64_1)
|
|
305
|
-
);
|
|
306
|
-
|
|
307
|
-
const high64 = xxh3_merge_accs(
|
|
308
|
-
acc,
|
|
309
|
-
secret, secret.length - XXH_STRIPE_LEN - XXH_SECRET_MERGEACCS_START,
|
|
310
|
-
XXH_MASK_64 ^ mul64(len, XXH_PRIME64_2)
|
|
311
|
-
);
|
|
312
|
-
|
|
313
|
-
return new XXH128Hash(low64, high64);
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
/**
|
|
317
|
-
* Hash `input` to a 128-bit value.
|
|
318
|
-
*
|
|
319
|
-
* @param {Uint8Array} input bytes to hash; an empty array is valid
|
|
320
|
-
* @param {bigint} [seed] alters the whole hash; 0 selects the reference's unseeded behaviour
|
|
321
|
-
* @returns {XXH128Hash}
|
|
322
|
-
*/
|
|
323
|
-
export function xxh3_128(input, seed = 0n) {
|
|
324
|
-
xxh3_assert_arguments(input, seed);
|
|
325
|
-
|
|
326
|
-
const len = input.length;
|
|
327
|
-
|
|
328
|
-
if (len <= 16) {
|
|
329
|
-
return len_0to16(input, XXH3_SECRET, seed);
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
if (len <= 128) {
|
|
333
|
-
return len_17to128(input, XXH3_SECRET, seed);
|
|
334
|
-
}
|
|
335
|
-
|
|
336
|
-
if (len <= XXH3_MIDSIZE_MAX) {
|
|
337
|
-
return len_129to240(input, XXH3_SECRET, seed);
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
return hash_long(input, xxh3_long_secret(seed));
|
|
341
|
-
}
|
|
1
|
+
export {
|
|
2
|
+
/** @deprecated moved to core/math/hash/xxh3_128.js; import it from there */
|
|
3
|
+
xxh3_128
|
|
4
|
+
} from "../../math/hash/xxh3_128.js";
|
|
@@ -1,9 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
* Hash `input` to a 64-bit value.
|
|
3
|
-
*
|
|
4
|
-
* @param {Uint8Array} input bytes to hash; an empty array is valid
|
|
5
|
-
* @param {bigint} [seed] alters the whole hash; 0 selects the reference's unseeded behaviour
|
|
6
|
-
* @returns {bigint} in `[0, 2^64)`
|
|
7
|
-
*/
|
|
8
|
-
export function xxh3_64(input: Uint8Array, seed?: bigint): bigint;
|
|
1
|
+
export { xxh3_64 } from "../../math/hash/xxh3_64.js";
|
|
9
2
|
//# sourceMappingURL=xxh3_64.d.ts.map
|