Commit 6e17550e authored by Master Q's avatar Master Q

go

parent 63e01312
...@@ -4,3 +4,5 @@ dev ...@@ -4,3 +4,5 @@ dev
yarn add webpack webpack-cli webpack-dev-server typescript three @types/three ts-loa yarn add webpack webpack-cli webpack-dev-server typescript three @types/three ts-loa
der der
``` ```
6077
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
// export default Ammo;
// declare function Ammo<T>(target?: T): Promise<T & typeof Ammo>;
declare namespace Ammo {
function destroy(obj: any): void;
function _malloc(size: number): number;
function _free(ptr: number): void;
const HEAP8: Int8Array;
const HEAP16: Int16Array;
const HEAP32: Int32Array;
const HEAPU8: Uint8Array;
const HEAPU16: Uint16Array;
const HEAPU32: Uint32Array;
const HEAPF32: Float32Array;
const HEAPF64: Float64Array;
class btIDebugDraw {
drawLine(from: btVector3, to: btVector3, color: btVector3): void;
drawContactPoint(pointOnB: btVector3, normalOnB: btVector3, distance: number, lifeTime: number, color: btVector3): void;
reportErrorWarning(warningString: string): void;
draw3dText(location: btVector3, textString: string): void;
setDebugMode(debugMode: number): void;
getDebugMode(): number;
}
class DebugDrawer {
constructor();
drawLine(from: btVector3, to: btVector3, color: btVector3): void;
drawContactPoint(pointOnB: btVector3, normalOnB: btVector3, distance: number, lifeTime: number, color: btVector3): void;
reportErrorWarning(warningString: string): void;
draw3dText(location: btVector3, textString: string): void;
setDebugMode(debugMode: number): void;
getDebugMode(): number;
}
class btVector3 {
constructor();
constructor(x: number, y: number, z: number);
length(): number;
x(): number;
y(): number;
z(): number;
setX(x: number): void;
setY(y: number): void;
setZ(z: number): void;
setValue(x: number, y: number, z: number): void;
normalize(): void;
rotate(wAxis: btVector3, angle: number): btVector3;
dot(v: btVector3): number;
op_mul(x: number): btVector3;
op_add(v: btVector3): btVector3;
op_sub(v: btVector3): btVector3;
}
class btVector4 extends btVector3 {
constructor();
constructor(x: number, y: number, z: number, w: number);
w(): number;
setValue(x: number, y: number, z: number): void;
setValue(x: number, y: number, z: number, w: number): void;
}
class btQuadWord {
x(): number;
y(): number;
z(): number;
w(): number;
setX(x: number): void;
setY(y: number): void;
setZ(z: number): void;
setW(w: number): void;
}
class btQuaternion extends btQuadWord {
constructor(x: number, y: number, z: number, w: number);
setValue(x: number, y: number, z: number, w: number): void;
setEulerZYX(z: number, y: number, x: number): void;
setRotation(axis: btVector3, angle: number): void;
normalize(): void;
length2(): number;
length(): number;
dot(q: btQuaternion): number;
normalized(): btQuaternion;
getAxis(): btVector3;
inverse(): btQuaternion;
getAngle(): number;
getAngleShortestPath(): number;
angle(q: btQuaternion): number;
angleShortestPath(q: btQuaternion): number;
op_add(q: btQuaternion): btQuaternion;
op_sub(q: btQuaternion): btQuaternion;
op_mul(s: number): btQuaternion;
op_mulq(q: btQuaternion): btQuaternion;
op_div(s: number): btQuaternion;
}
class btMatrix3x3 {
setEulerZYX(ex: number, ey: number, ez: number): void;
getRotation(q: btQuaternion): void;
getRow(y: number): btVector3;
}
class btTransform {
constructor();
constructor(q: btQuaternion, v: btVector3);
setIdentity(): void;
setOrigin(origin: btVector3): void;
setRotation(rotation: btQuaternion): void;
getOrigin(): btVector3;
getRotation(): btQuaternion;
getBasis(): btMatrix3x3;
setFromOpenGLMatrix(m: ReadonlyArray<number>): void;
inverse(): btTransform;
op_mul(t: btTransform): btTransform;
}
class btMotionState {
getWorldTransform(worldTrans: btTransform): void;
setWorldTransform(worldTrans: btTransform): void;
}
class btDefaultMotionState extends btMotionState {
constructor(startTrans?: btTransform, centerOfMassOffset?: btTransform);
get_m_graphicsWorldTrans(): btTransform;
set_m_graphicsWorldTrans(m_graphicsWorldTrans: btTransform): void;
}
class btCollisionObject {
setAnisotropicFriction(anisotropicFriction: btVector3, frictionMode: number): void;
getCollisionShape(): btCollisionShape;
setContactProcessingThreshold(contactProcessingThreshold: number): void;
setActivationState(newState: number): void;
forceActivationState(newState: number): void;
activate(forceActivation?: boolean): void;
isActive(): boolean;
isKinematicObject(): boolean;
isStaticObject(): boolean;
isStaticOrKinematicObject(): boolean;
getRestitution(): number;
getFriction(): number;
getRollingFriction(): number;
setRestitution(rest: number): void;
setFriction(frict: number): void;
setRollingFriction(frict: number): void;
getWorldTransform(): btTransform;
getCollisionFlags(): number;
setCollisionFlags(flags: number): void;
setWorldTransform(worldTrans: btTransform): void;
setCollisionShape(collisionShape: btCollisionShape): void;
setCcdMotionThreshold(ccdMotionThreshold: number): void;
setCcdSweptSphereRadius(radius: number): void;
getUserIndex(): number;
setUserIndex(index: number): void;
getUserPointer(): unknown;
setUserPointer(userPointer: unknown): void;
getBroadphaseHandle(): btBroadphaseProxy;
}
class btCollisionObjectWrapper {
getWorldTransform(): btTransform;
getCollisionObject(): btCollisionObject;
getCollisionShape(): btCollisionShape;
}
class RayResultCallback {
hasHit(): boolean;
get_m_collisionFilterGroup(): number;
set_m_collisionFilterGroup(m_collisionFilterGroup: number): void;
get_m_collisionFilterMask(): number;
set_m_collisionFilterMask(m_collisionFilterMask: number): void;
get_m_closestHitFraction(): number;
set_m_closestHitFraction(m_closestHitFraction: number): void;
get_m_collisionObject(): btCollisionObject;
set_m_collisionObject(m_collisionObject: btCollisionObject): void;
}
class ClosestRayResultCallback extends RayResultCallback {
constructor(from: btVector3, to: btVector3);
get_m_rayFromWorld(): btVector3;
set_m_rayFromWorld(m_rayFromWorld: btVector3): void;
get_m_rayToWorld(): btVector3;
set_m_rayToWorld(m_rayToWorld: btVector3): void;
get_m_hitNormalWorld(): btVector3;
set_m_hitNormalWorld(m_hitNormalWorld: btVector3): void;
get_m_hitPointWorld(): btVector3;
set_m_hitPointWorld(m_hitPointWorld: btVector3): void;
}
class btConstCollisionObjectArray {
size(): number;
at(n: number): btCollisionObject;
}
class btScalarArray {
size(): number;
at(n: number): number;
}
class AllHitsRayResultCallback extends RayResultCallback {
constructor(from: btVector3, to: btVector3);
get_m_collisionObjects(): btConstCollisionObjectArray;
set_m_collisionObjects(m_collisionObjects: btConstCollisionObjectArray): void;
get_m_rayFromWorld(): btVector3;
set_m_rayFromWorld(m_rayFromWorld: btVector3): void;
get_m_rayToWorld(): btVector3;
set_m_rayToWorld(m_rayToWorld: btVector3): void;
get_m_hitNormalWorld(): btVector3Array;
set_m_hitNormalWorld(m_hitNormalWorld: btVector3Array): void;
get_m_hitPointWorld(): btVector3Array;
set_m_hitPointWorld(m_hitPointWorld: btVector3Array): void;
get_m_hitFractions(): btScalarArray;
set_m_hitFractions(m_hitFractions: btScalarArray): void;
}
class btManifoldPoint {
getPositionWorldOnA(): btVector3;
getPositionWorldOnB(): btVector3;
getAppliedImpulse(): number;
getDistance(): number;
get_m_localPointA(): btVector3;
set_m_localPointA(m_localPointA: btVector3): void;
get_m_localPointB(): btVector3;
set_m_localPointB(m_localPointB: btVector3): void;
get_m_positionWorldOnB(): btVector3;
set_m_positionWorldOnB(m_positionWorldOnB: btVector3): void;
get_m_positionWorldOnA(): btVector3;
set_m_positionWorldOnA(m_positionWorldOnA: btVector3): void;
get_m_normalWorldOnB(): btVector3;
set_m_normalWorldOnB(m_normalWorldOnB: btVector3): void;
get_m_userPersistentData(): any;
set_m_userPersistentData(m_userPersistentData: any): void;
}
class ContactResultCallback {
addSingleResult(cp: btManifoldPoint, colObj0Wrap: btCollisionObjectWrapper, partId0: number, index0: number, colObj1Wrap: btCollisionObjectWrapper, partId1: number, index1: number): number;
}
class ConcreteContactResultCallback {
constructor();
addSingleResult(cp: btManifoldPoint, colObj0Wrap: btCollisionObjectWrapper, partId0: number, index0: number, colObj1Wrap: btCollisionObjectWrapper, partId1: number, index1: number): number;
}
class LocalShapeInfo {
get_m_shapePart(): number;
set_m_shapePart(m_shapePart: number): void;
get_m_triangleIndex(): number;
set_m_triangleIndex(m_triangleIndex: number): void;
}
class LocalConvexResult {
constructor(hitCollisionObject: btCollisionObject, localShapeInfo: LocalShapeInfo, hitNormalLocal: btVector3, hitPointLocal: btVector3, hitFraction: number);
get_m_hitCollisionObject(): btCollisionObject;
set_m_hitCollisionObject(m_hitCollisionObject: btCollisionObject): void;
get_m_localShapeInfo(): LocalShapeInfo;
set_m_localShapeInfo(m_localShapeInfo: LocalShapeInfo): void;
get_m_hitNormalLocal(): btVector3;
set_m_hitNormalLocal(m_hitNormalLocal: btVector3): void;
get_m_hitPointLocal(): btVector3;
set_m_hitPointLocal(m_hitPointLocal: btVector3): void;
get_m_hitFraction(): number;
set_m_hitFraction(m_hitFraction: number): void;
}
class ConvexResultCallback {
hasHit(): boolean;
get_m_collisionFilterGroup(): number;
set_m_collisionFilterGroup(m_collisionFilterGroup: number): void;
get_m_collisionFilterMask(): number;
set_m_collisionFilterMask(m_collisionFilterMask: number): void;
get_m_closestHitFraction(): number;
set_m_closestHitFraction(m_closestHitFraction: number): void;
}
class ClosestConvexResultCallback extends ConvexResultCallback {
constructor(convexFromWorld: btVector3, convexToWorld: btVector3);
get_m_convexFromWorld(): btVector3;
set_m_convexFromWorld(m_convexFromWorld: btVector3): void;
get_m_convexToWorld(): btVector3;
set_m_convexToWorld(m_convexToWorld: btVector3): void;
get_m_hitNormalWorld(): btVector3;
set_m_hitNormalWorld(m_hitNormalWorld: btVector3): void;
get_m_hitPointWorld(): btVector3;
set_m_hitPointWorld(m_hitPointWorld: btVector3): void;
}
class btCollisionShape {
setLocalScaling(scaling: btVector3): void;
getLocalScaling(): btVector3;
calculateLocalInertia(mass: number, inertia: btVector3): void;
setMargin(margin: number): void;
getMargin(): number;
}
class btConvexShape extends btCollisionShape {
}
class btConvexTriangleMeshShape extends btConvexShape {
constructor(meshInterface: btStridingMeshInterface, calcAabb?: boolean);
}
class btBoxShape extends btCollisionShape {
constructor(boxHalfExtents: btVector3);
setMargin(margin: number): void;
getMargin(): number;
}
class btCapsuleShape extends btCollisionShape {
constructor(radius: number, height: number);
setMargin(margin: number): void;
getMargin(): number;
getUpAxis(): number;
getRadius(): number;
getHalfHeight(): number;
}
class btCapsuleShapeX extends btCapsuleShape {
constructor(radius: number, height: number);
setMargin(margin: number): void;
getMargin(): number;
}
class btCapsuleShapeZ extends btCapsuleShape {
constructor(radius: number, height: number);
setMargin(margin: number): void;
getMargin(): number;
}
class btCylinderShape extends btCollisionShape {
constructor(halfExtents: btVector3);
setMargin(margin: number): void;
getMargin(): number;
}
class btCylinderShapeX extends btCylinderShape {
constructor(halfExtents: btVector3);
setMargin(margin: number): void;
getMargin(): number;
}
class btCylinderShapeZ extends btCylinderShape {
constructor(halfExtents: btVector3);
setMargin(margin: number): void;
getMargin(): number;
}
class btSphereShape extends btCollisionShape {
constructor(radius: number);
setMargin(margin: number): void;
getMargin(): number;
}
class btMultiSphereShape extends btCollisionShape {
constructor(positions: btVector3, radii: ReadonlyArray<number>, numPoints: number);
}
class btConeShape extends btCollisionShape {
constructor(radius: number, height: number);
}
class btConeShapeX extends btConeShape {
constructor(radius: number, height: number);
}
class btConeShapeZ extends btConeShape {
constructor(radius: number, height: number);
}
class btIntArray {
size(): number;
at(n: number): number;
}
class btFace {
get_m_indices(): btIntArray;
set_m_indices(m_indices: btIntArray): void;
get_m_plane(): ReadonlyArray<number>;
set_m_plane(m_plane: ReadonlyArray<number>): void;
}
class btVector3Array {
size(): number;
at(n: number): btVector3;
}
class btFaceArray {
size(): number;
at(n: number): btFace;
}
class btConvexPolyhedron {
get_m_vertices(): btVector3Array;
set_m_vertices(m_vertices: btVector3Array): void;
get_m_faces(): btFaceArray;
set_m_faces(m_faces: btFaceArray): void;
}
class btConvexHullShape extends btCollisionShape {
constructor(points?: ReadonlyArray<number>, numPoints?: number);
addPoint(point: btVector3, recalculateLocalAABB?: boolean): void;
setMargin(margin: number): void;
getMargin(): number;
getNumVertices(): number;
initializePolyhedralFeatures(shiftVerticesByMargin: number): boolean;
recalcLocalAabb(): void;
getConvexPolyhedron(): btConvexPolyhedron;
}
class btShapeHull {
constructor(shape: btConvexShape);
buildHull(margin: number): boolean;
numVertices(): number;
getVertexPointer(): btVector3;
}
class btCompoundShape extends btCollisionShape {
constructor(enableDynamicAabbTree?: boolean);
addChildShape(localTransform: btTransform, shape: btCollisionShape): void;
removeChildShape(shape: btCollisionShape): void;
removeChildShapeByIndex(childShapeindex: number): void;
getNumChildShapes(): number;
getChildShape(index: number): btCollisionShape;
updateChildTransform(childIndex: number, newChildTransform: btTransform, shouldRecalculateLocalAabb?: boolean): void;
setMargin(margin: number): void;
getMargin(): number;
}
class btStridingMeshInterface {
setScaling(scaling: btVector3): void;
}
class btIndexedMesh {
get_m_numTriangles(): number;
set_m_numTriangles(m_numTriangles: number): void;
}
class btIndexedMeshArray {
size(): number;
at(n: number): btIndexedMesh;
}
class btTriangleMesh extends btStridingMeshInterface {
constructor(use32bitIndices?: boolean, use4componentVertices?: boolean);
addTriangle(vertex0: btVector3, vertex1: btVector3, vertex2: btVector3, removeDuplicateVertices?: boolean): void;
findOrAddVertex(vertex: btVector3, removeDuplicateVertices: boolean): number;
addIndex(index: number): void;
getIndexedMeshArray(): btIndexedMeshArray;
}
type PHY_ScalarType = "PHY_FLOAT" | "PHY_DOUBLE" | "PHY_INTEGER" | "PHY_SHORT" | "PHY_FIXEDPOINT88" | "PHY_UCHAR";
class btConcaveShape extends btCollisionShape {
}
class btEmptyShape extends btConcaveShape {
constructor();
}
class btStaticPlaneShape extends btConcaveShape {
constructor(planeNormal: btVector3, planeConstant: number);
}
class btTriangleMeshShape extends btConcaveShape {
}
class btBvhTriangleMeshShape extends btTriangleMeshShape {
constructor(meshInterface: btStridingMeshInterface, useQuantizedAabbCompression: boolean, buildBvh?: boolean);
}
class btHeightfieldTerrainShape extends btConcaveShape {
constructor(heightStickWidth: number, heightStickLength: number, heightfieldData: unknown, heightScale: number, minHeight: number, maxHeight: number, upAxis: number, hdt: PHY_ScalarType, flipQuadEdges: boolean);
setMargin(margin: number): void;
getMargin(): number;
}
class btDefaultCollisionConstructionInfo {
constructor();
}
class btDefaultCollisionConfiguration {
constructor(info?: btDefaultCollisionConstructionInfo);
}
class btPersistentManifold {
constructor();
getBody0(): btCollisionObject;
getBody1(): btCollisionObject;
getNumContacts(): number;
getContactPoint(index: number): btManifoldPoint;
}
class btDispatcher {
getNumManifolds(): number;
getManifoldByIndexInternal(index: number): btPersistentManifold;
}
class btCollisionDispatcher extends btDispatcher {
constructor(conf: btDefaultCollisionConfiguration);
}
class btOverlappingPairCallback {
}
class btOverlappingPairCache {
setInternalGhostPairCallback(ghostPairCallback: btOverlappingPairCallback): void;
getNumOverlappingPairs(): number;
}
class btAxisSweep3 {
constructor(worldAabbMin: btVector3, worldAabbMax: btVector3, maxHandles?: number, pairCache?: btOverlappingPairCache, disableRaycastAccelerator?: boolean);
}
class btBroadphaseInterface {
getOverlappingPairCache(): btOverlappingPairCache;
}
class btCollisionConfiguration {
}
class btDbvtBroadphase extends btBroadphaseInterface {
constructor();
}
class btBroadphaseProxy {
get_m_collisionFilterGroup(): number;
set_m_collisionFilterGroup(m_collisionFilterGroup: number): void;
get_m_collisionFilterMask(): number;
set_m_collisionFilterMask(m_collisionFilterMask: number): void;
}
class btRigidBodyConstructionInfo {
constructor(mass: number, motionState: btMotionState, collisionShape: btCollisionShape, localInertia?: btVector3);
get_m_linearDamping(): number;
set_m_linearDamping(m_linearDamping: number): void;
get_m_angularDamping(): number;
set_m_angularDamping(m_angularDamping: number): void;
get_m_friction(): number;
set_m_friction(m_friction: number): void;
get_m_rollingFriction(): number;
set_m_rollingFriction(m_rollingFriction: number): void;
get_m_restitution(): number;
set_m_restitution(m_restitution: number): void;
get_m_linearSleepingThreshold(): number;
set_m_linearSleepingThreshold(m_linearSleepingThreshold: number): void;
get_m_angularSleepingThreshold(): number;
set_m_angularSleepingThreshold(m_angularSleepingThreshold: number): void;
get_m_additionalDamping(): boolean;
set_m_additionalDamping(m_additionalDamping: boolean): void;
get_m_additionalDampingFactor(): number;
set_m_additionalDampingFactor(m_additionalDampingFactor: number): void;
get_m_additionalLinearDampingThresholdSqr(): number;
set_m_additionalLinearDampingThresholdSqr(m_additionalLinearDampingThresholdSqr: number): void;
get_m_additionalAngularDampingThresholdSqr(): number;
set_m_additionalAngularDampingThresholdSqr(m_additionalAngularDampingThresholdSqr: number): void;
get_m_additionalAngularDampingFactor(): number;
set_m_additionalAngularDampingFactor(m_additionalAngularDampingFactor: number): void;
}
class btRigidBody extends btCollisionObject {
constructor(constructionInfo: btRigidBodyConstructionInfo);
getCenterOfMassTransform(): btTransform;
setCenterOfMassTransform(xform: btTransform): void;
setSleepingThresholds(linear: number, angular: number): void;
getLinearDamping(): number;
getAngularDamping(): number;
setDamping(lin_damping: number, ang_damping: number): void;
setMassProps(mass: number, inertia: btVector3): void;
getLinearFactor(): btVector3;
setLinearFactor(linearFactor: btVector3): void;
applyTorque(torque: btVector3): void;
applyLocalTorque(torque: btVector3): void;
applyForce(force: btVector3, rel_pos: btVector3): void;
applyCentralForce(force: btVector3): void;
applyCentralLocalForce(force: btVector3): void;
applyTorqueImpulse(torque: btVector3): void;
applyImpulse(impulse: btVector3, rel_pos: btVector3): void;
applyCentralImpulse(impulse: btVector3): void;
updateInertiaTensor(): void;
getLinearVelocity(): btVector3;
getAngularVelocity(): btVector3;
setLinearVelocity(lin_vel: btVector3): void;
setAngularVelocity(ang_vel: btVector3): void;
getMotionState(): btMotionState;
setMotionState(motionState: btMotionState): void;
getAngularFactor(): btVector3;
setAngularFactor(angularFactor: btVector3): void;
upcast(colObj: btCollisionObject): btRigidBody;
getAabb(aabbMin: btVector3, aabbMax: btVector3): void;
applyGravity(): void;
getGravity(): btVector3;
setGravity(acceleration: btVector3): void;
getBroadphaseProxy(): btBroadphaseProxy;
clearForces(): void;
}
class btConstraintSetting {
constructor();
get_m_tau(): number;
set_m_tau(m_tau: number): void;
get_m_damping(): number;
set_m_damping(m_damping: number): void;
get_m_impulseClamp(): number;
set_m_impulseClamp(m_impulseClamp: number): void;
}
class btTypedConstraint {
enableFeedback(needsFeedback: boolean): void;
getBreakingImpulseThreshold(): number;
setBreakingImpulseThreshold(threshold: number): void;
getParam(num: number, axis: number): number;
setParam(num: number, value: number, axis: number): void;
}
type btConstraintParams = "BT_CONSTRAINT_ERP" | "BT_CONSTRAINT_STOP_ERP" | "BT_CONSTRAINT_CFM" | "BT_CONSTRAINT_STOP_CFM";
class btPoint2PointConstraint extends btTypedConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, pivotInA: btVector3, pivotInB: btVector3);
constructor(rbA: btRigidBody, pivotInA: btVector3);
setPivotA(pivotA: btVector3): void;
setPivotB(pivotB: btVector3): void;
getPivotInA(): btVector3;
getPivotInB(): btVector3;
get_m_setting(): btConstraintSetting;
set_m_setting(m_setting: btConstraintSetting): void;
}
class btGeneric6DofConstraint extends btTypedConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, frameInA: btTransform, frameInB: btTransform, useLinearFrameReferenceFrameA: boolean);
constructor(rbB: btRigidBody, frameInB: btTransform, useLinearFrameReferenceFrameB: boolean);
setLinearLowerLimit(linearLower: btVector3): void;
setLinearUpperLimit(linearUpper: btVector3): void;
setAngularLowerLimit(angularLower: btVector3): void;
setAngularUpperLimit(angularUpper: btVector3): void;
getFrameOffsetA(): btTransform;
}
class btGeneric6DofSpringConstraint extends btGeneric6DofConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, frameInA: btTransform, frameInB: btTransform, useLinearFrameReferenceFrameA: boolean);
constructor(rbB: btRigidBody, frameInB: btTransform, useLinearFrameReferenceFrameB: boolean);
enableSpring(index: number, onOff: boolean): void;
setStiffness(index: number, stiffness: number): void;
setDamping(index: number, damping: number): void;
setEquilibriumPoint(index: number, val: number): void;
setEquilibriumPoint(index: number): void;
setEquilibriumPoint(): void;
}
class btSequentialImpulseConstraintSolver {
constructor();
}
class btConeTwistConstraint extends btTypedConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, rbAFrame: btTransform, rbBFrame: btTransform);
constructor(rbA: btRigidBody, rbAFrame: btTransform);
setLimit(limitIndex: number, limitValue: number): void;
setAngularOnly(angularOnly: boolean): void;
setDamping(damping: number): void;
enableMotor(b: boolean): void;
setMaxMotorImpulse(maxMotorImpulse: number): void;
setMaxMotorImpulseNormalized(maxMotorImpulse: number): void;
setMotorTarget(q: btQuaternion): void;
setMotorTargetInConstraintSpace(q: btQuaternion): void;
}
class btHingeConstraint extends btTypedConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, pivotInA: btVector3, pivotInB: btVector3, axisInA: btVector3, axisInB: btVector3, useReferenceFrameA?: boolean);
constructor(rbA: btRigidBody, rbB: btRigidBody, rbAFrame: btTransform, rbBFrame: btTransform, useReferenceFrameA?: boolean);
constructor(rbA: btRigidBody, rbAFrame: btTransform, useReferenceFrameA?: boolean);
setLimit(low: number, high: number, softness: number, biasFactor: number, relaxationFactor?: number): void;
enableAngularMotor(enableMotor: boolean, targetVelocity: number, maxMotorImpulse: number): void;
setAngularOnly(angularOnly: boolean): void;
enableMotor(enableMotor: boolean): void;
setMaxMotorImpulse(maxMotorImpulse: number): void;
setMotorTarget(targetAngle: number, dt: number): void;
}
class btSliderConstraint extends btTypedConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, frameInA: btTransform, frameInB: btTransform, useLinearReferenceFrameA: boolean);
constructor(rbB: btRigidBody, frameInB: btTransform, useLinearReferenceFrameA: boolean);
setLowerLinLimit(lowerLimit: number): void;
setUpperLinLimit(upperLimit: number): void;
setLowerAngLimit(lowerAngLimit: number): void;
setUpperAngLimit(upperAngLimit: number): void;
}
class btFixedConstraint extends btTypedConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, frameInA: btTransform, frameInB: btTransform);
}
class btConstraintSolver {
}
class btDispatcherInfo {
get_m_timeStep(): number;
set_m_timeStep(m_timeStep: number): void;
get_m_stepCount(): number;
set_m_stepCount(m_stepCount: number): void;
get_m_dispatchFunc(): number;
set_m_dispatchFunc(m_dispatchFunc: number): void;
get_m_timeOfImpact(): number;
set_m_timeOfImpact(m_timeOfImpact: number): void;
get_m_useContinuous(): boolean;
set_m_useContinuous(m_useContinuous: boolean): void;
get_m_enableSatConvex(): boolean;
set_m_enableSatConvex(m_enableSatConvex: boolean): void;
get_m_enableSPU(): boolean;
set_m_enableSPU(m_enableSPU: boolean): void;
get_m_useEpa(): boolean;
set_m_useEpa(m_useEpa: boolean): void;
get_m_allowedCcdPenetration(): number;
set_m_allowedCcdPenetration(m_allowedCcdPenetration: number): void;
get_m_useConvexConservativeDistanceUtil(): boolean;
set_m_useConvexConservativeDistanceUtil(m_useConvexConservativeDistanceUtil: boolean): void;
get_m_convexConservativeDistanceThreshold(): number;
set_m_convexConservativeDistanceThreshold(m_convexConservativeDistanceThreshold: number): void;
}
class btCollisionWorld {
getDispatcher(): btDispatcher;
rayTest(rayFromWorld: btVector3, rayToWorld: btVector3, resultCallback: RayResultCallback): void;
getPairCache(): btOverlappingPairCache;
getDispatchInfo(): btDispatcherInfo;
addCollisionObject(collisionObject: btCollisionObject, collisionFilterGroup?: number, collisionFilterMask?: number): void;
removeCollisionObject(collisionObject: btCollisionObject): void;
getBroadphase(): btBroadphaseInterface;
convexSweepTest(castShape: btConvexShape, from: btTransform, to: btTransform, resultCallback: ConvexResultCallback, allowedCcdPenetration: number): void;
contactPairTest(colObjA: btCollisionObject, colObjB: btCollisionObject, resultCallback: ContactResultCallback): void;
contactTest(colObj: btCollisionObject, resultCallback: ContactResultCallback): void;
updateSingleAabb(colObj: btCollisionObject): void;
setDebugDrawer(debugDrawer: btIDebugDraw): void;
getDebugDrawer(): btIDebugDraw;
debugDrawWorld(): void;
debugDrawObject(worldTransform: btTransform, shape: btCollisionShape, color: btVector3): void;
}
class btContactSolverInfo {
get_m_splitImpulse(): boolean;
set_m_splitImpulse(m_splitImpulse: boolean): void;
get_m_splitImpulsePenetrationThreshold(): number;
set_m_splitImpulsePenetrationThreshold(m_splitImpulsePenetrationThreshold: number): void;
get_m_numIterations(): number;
set_m_numIterations(m_numIterations: number): void;
}
type btInternalTickCallback = (world: btDynamicsWorld, timeStep: number) => void;
class btDynamicsWorld extends btCollisionWorld {
addAction(action: btActionInterface): void;
removeAction(action: btActionInterface): void;
getSolverInfo(): btContactSolverInfo;
setInternalTickCallback(cb: btInternalTickCallback, worldUserInfo?: unknown, isPreTick?: boolean): void;
}
class btDiscreteDynamicsWorld extends btDynamicsWorld {
constructor(dispatcher: btDispatcher, pairCache: btBroadphaseInterface, constraintSolver: btConstraintSolver, collisionConfiguration: btCollisionConfiguration);
setGravity(gravity: btVector3): void;
getGravity(): btVector3;
addRigidBody(body: btRigidBody): void;
addRigidBody(body: btRigidBody, group: number, mask: number): void;
removeRigidBody(body: btRigidBody): void;
addConstraint(constraint: btTypedConstraint, disableCollisionsBetweenLinkedBodies?: boolean): void;
removeConstraint(constraint: btTypedConstraint): void;
stepSimulation(timeStep: number, maxSubSteps?: number, fixedTimeStep?: number): number;
setContactAddedCallback(funcpointer: number): void;
setContactProcessedCallback(funcpointer: number): void;
setContactDestroyedCallback(funcpointer: number): void;
}
class btVehicleTuning {
constructor();
get_m_suspensionStiffness(): number;
set_m_suspensionStiffness(m_suspensionStiffness: number): void;
get_m_suspensionCompression(): number;
set_m_suspensionCompression(m_suspensionCompression: number): void;
get_m_suspensionDamping(): number;
set_m_suspensionDamping(m_suspensionDamping: number): void;
get_m_maxSuspensionTravelCm(): number;
set_m_maxSuspensionTravelCm(m_maxSuspensionTravelCm: number): void;
get_m_frictionSlip(): number;
set_m_frictionSlip(m_frictionSlip: number): void;
get_m_maxSuspensionForce(): number;
set_m_maxSuspensionForce(m_maxSuspensionForce: number): void;
}
class btVehicleRaycasterResult {
get_m_hitPointInWorld(): btVector3;
set_m_hitPointInWorld(m_hitPointInWorld: btVector3): void;
get_m_hitNormalInWorld(): btVector3;
set_m_hitNormalInWorld(m_hitNormalInWorld: btVector3): void;
get_m_distFraction(): number;
set_m_distFraction(m_distFraction: number): void;
}
class btVehicleRaycaster {
castRay(from: btVector3, to: btVector3, result: btVehicleRaycasterResult): void;
}
class btDefaultVehicleRaycaster extends btVehicleRaycaster {
constructor(world: btDynamicsWorld);
}
class RaycastInfo {
get_m_contactNormalWS(): btVector3;
set_m_contactNormalWS(m_contactNormalWS: btVector3): void;
get_m_contactPointWS(): btVector3;
set_m_contactPointWS(m_contactPointWS: btVector3): void;
get_m_suspensionLength(): number;
set_m_suspensionLength(m_suspensionLength: number): void;
get_m_hardPointWS(): btVector3;
set_m_hardPointWS(m_hardPointWS: btVector3): void;
get_m_wheelDirectionWS(): btVector3;
set_m_wheelDirectionWS(m_wheelDirectionWS: btVector3): void;
get_m_wheelAxleWS(): btVector3;
set_m_wheelAxleWS(m_wheelAxleWS: btVector3): void;
get_m_isInContact(): boolean;
set_m_isInContact(m_isInContact: boolean): void;
get_m_groundObject(): any;
set_m_groundObject(m_groundObject: any): void;
}
class btWheelInfoConstructionInfo {
get_m_chassisConnectionCS(): btVector3;
set_m_chassisConnectionCS(m_chassisConnectionCS: btVector3): void;
get_m_wheelDirectionCS(): btVector3;
set_m_wheelDirectionCS(m_wheelDirectionCS: btVector3): void;
get_m_wheelAxleCS(): btVector3;
set_m_wheelAxleCS(m_wheelAxleCS: btVector3): void;
get_m_suspensionRestLength(): number;
set_m_suspensionRestLength(m_suspensionRestLength: number): void;
get_m_maxSuspensionTravelCm(): number;
set_m_maxSuspensionTravelCm(m_maxSuspensionTravelCm: number): void;
get_m_wheelRadius(): number;
set_m_wheelRadius(m_wheelRadius: number): void;
get_m_suspensionStiffness(): number;
set_m_suspensionStiffness(m_suspensionStiffness: number): void;
get_m_wheelsDampingCompression(): number;
set_m_wheelsDampingCompression(m_wheelsDampingCompression: number): void;
get_m_wheelsDampingRelaxation(): number;
set_m_wheelsDampingRelaxation(m_wheelsDampingRelaxation: number): void;
get_m_frictionSlip(): number;
set_m_frictionSlip(m_frictionSlip: number): void;
get_m_maxSuspensionForce(): number;
set_m_maxSuspensionForce(m_maxSuspensionForce: number): void;
get_m_bIsFrontWheel(): boolean;
set_m_bIsFrontWheel(m_bIsFrontWheel: boolean): void;
}
class btWheelInfo {
get_m_suspensionStiffness(): number;
set_m_suspensionStiffness(m_suspensionStiffness: number): void;
get_m_frictionSlip(): number;
set_m_frictionSlip(m_frictionSlip: number): void;
get_m_engineForce(): number;
set_m_engineForce(m_engineForce: number): void;
get_m_rollInfluence(): number;
set_m_rollInfluence(m_rollInfluence: number): void;
get_m_suspensionRestLength1(): number;
set_m_suspensionRestLength1(m_suspensionRestLength1: number): void;
get_m_wheelsRadius(): number;
set_m_wheelsRadius(m_wheelsRadius: number): void;
get_m_wheelsDampingCompression(): number;
set_m_wheelsDampingCompression(m_wheelsDampingCompression: number): void;
get_m_wheelsDampingRelaxation(): number;
set_m_wheelsDampingRelaxation(m_wheelsDampingRelaxation: number): void;
get_m_steering(): number;
set_m_steering(m_steering: number): void;
get_m_maxSuspensionForce(): number;
set_m_maxSuspensionForce(m_maxSuspensionForce: number): void;
get_m_maxSuspensionTravelCm(): number;
set_m_maxSuspensionTravelCm(m_maxSuspensionTravelCm: number): void;
get_m_wheelsSuspensionForce(): number;
set_m_wheelsSuspensionForce(m_wheelsSuspensionForce: number): void;
get_m_bIsFrontWheel(): boolean;
set_m_bIsFrontWheel(m_bIsFrontWheel: boolean): void;
get_m_raycastInfo(): RaycastInfo;
set_m_raycastInfo(m_raycastInfo: RaycastInfo): void;
get_m_chassisConnectionPointCS(): btVector3;
set_m_chassisConnectionPointCS(m_chassisConnectionPointCS: btVector3): void;
constructor(ci: btWheelInfoConstructionInfo);
getSuspensionRestLength(): number;
updateWheel(chassis: btRigidBody, raycastInfo: RaycastInfo): void;
get_m_worldTransform(): btTransform;
set_m_worldTransform(m_worldTransform: btTransform): void;
get_m_wheelDirectionCS(): btVector3;
set_m_wheelDirectionCS(m_wheelDirectionCS: btVector3): void;
get_m_wheelAxleCS(): btVector3;
set_m_wheelAxleCS(m_wheelAxleCS: btVector3): void;
get_m_rotation(): number;
set_m_rotation(m_rotation: number): void;
get_m_deltaRotation(): number;
set_m_deltaRotation(m_deltaRotation: number): void;
get_m_brake(): number;
set_m_brake(m_brake: number): void;
get_m_clippedInvContactDotSuspension(): number;
set_m_clippedInvContactDotSuspension(m_clippedInvContactDotSuspension: number): void;
get_m_suspensionRelativeVelocity(): number;
set_m_suspensionRelativeVelocity(m_suspensionRelativeVelocity: number): void;
get_m_skidInfo(): number;
set_m_skidInfo(m_skidInfo: number): void;
}
class btActionInterface {
updateAction(collisionWorld: btCollisionWorld, deltaTimeStep: number): void;
}
class btKinematicCharacterController extends btActionInterface {
constructor(ghostObject: btPairCachingGhostObject, convexShape: btConvexShape, stepHeight: number, upAxis?: number);
setUpAxis(axis: number): void;
setWalkDirection(walkDirection: btVector3): void;
setVelocityForTimeInterval(velocity: btVector3, timeInterval: number): void;
warp(origin: btVector3): void;
preStep(collisionWorld: btCollisionWorld): void;
playerStep(collisionWorld: btCollisionWorld, dt: number): void;
setFallSpeed(fallSpeed: number): void;
setJumpSpeed(jumpSpeed: number): void;
setMaxJumpHeight(maxJumpHeight: number): void;
canJump(): boolean;
jump(): void;
setGravity(gravity: number): void;
getGravity(): number;
setMaxSlope(slopeRadians: number): void;
getMaxSlope(): number;
getGhostObject(): btPairCachingGhostObject;
setUseGhostSweepTest(useGhostObjectSweepTest: boolean): void;
onGround(): boolean;
setUpInterpolate(value: boolean): void;
}
class btRaycastVehicle extends btActionInterface {
constructor(tuning: btVehicleTuning, chassis: btRigidBody, raycaster: btVehicleRaycaster);
applyEngineForce(force: number, wheel: number): void;
setSteeringValue(steering: number, wheel: number): void;
getWheelTransformWS(wheelIndex: number): btTransform;
updateWheelTransform(wheelIndex: number, interpolatedTransform: boolean): void;
addWheel(connectionPointCS0: btVector3, wheelDirectionCS0: btVector3, wheelAxleCS: btVector3, suspensionRestLength: number, wheelRadius: number, tuning: btVehicleTuning, isFrontWheel: boolean): btWheelInfo;
getNumWheels(): number;
getRigidBody(): btRigidBody;
getWheelInfo(index: number): btWheelInfo;
setBrake(brake: number, wheelIndex: number): void;
setCoordinateSystem(rightIndex: number, upIndex: number, forwardIndex: number): void;
getCurrentSpeedKmHour(): number;
getChassisWorldTransform(): btTransform;
rayCast(wheel: btWheelInfo): number;
updateVehicle(step: number): void;
resetSuspension(): void;
getSteeringValue(wheel: number): number;
updateWheelTransformsWS(wheel: btWheelInfo, interpolatedTransform?: boolean): void;
setPitchControl(pitch: number): void;
updateSuspension(deltaTime: number): void;
updateFriction(timeStep: number): void;
getRightAxis(): number;
getUpAxis(): number;
getForwardAxis(): number;
getForwardVector(): btVector3;
getUserConstraintType(): number;
setUserConstraintType(userConstraintType: number): void;
setUserConstraintId(uid: number): void;
getUserConstraintId(): number;
}
class btGhostObject extends btCollisionObject {
constructor();
getNumOverlappingObjects(): number;
getOverlappingObject(index: number): btCollisionObject;
}
class btPairCachingGhostObject extends btGhostObject {
constructor();
}
class btGhostPairCallback {
constructor();
}
class btSoftBodyWorldInfo {
constructor();
get_air_density(): number;
set_air_density(air_density: number): void;
get_water_density(): number;
set_water_density(water_density: number): void;
get_water_offset(): number;
set_water_offset(water_offset: number): void;
get_m_maxDisplacement(): number;
set_m_maxDisplacement(m_maxDisplacement: number): void;
get_water_normal(): btVector3;
set_water_normal(water_normal: btVector3): void;
get_m_broadphase(): btBroadphaseInterface;
set_m_broadphase(m_broadphase: btBroadphaseInterface): void;
get_m_dispatcher(): btDispatcher;
set_m_dispatcher(m_dispatcher: btDispatcher): void;
get_m_gravity(): btVector3;
set_m_gravity(m_gravity: btVector3): void;
}
class Face {
get_m_n(): ReadonlyArray<Node>;
set_m_n(m_n: ReadonlyArray<Node>): void;
get_m_normal(): btVector3;
set_m_normal(m_normal: btVector3): void;
get_m_ra(): number;
set_m_ra(m_ra: number): void;
}
class tFaceArray {
size(): number;
at(n: number): Face;
}
class Node {
get_m_x(): btVector3;
set_m_x(m_x: btVector3): void;
get_m_q(): btVector3;
set_m_q(m_q: btVector3): void;
get_m_v(): btVector3;
set_m_v(m_v: btVector3): void;
get_m_f(): btVector3;
set_m_f(m_f: btVector3): void;
get_m_n(): btVector3;
set_m_n(m_n: btVector3): void;
get_m_im(): number;
set_m_im(m_im: number): void;
get_m_area(): number;
set_m_area(m_area: number): void;
}
class tNodeArray {
size(): number;
at(n: number): Node;
}
class Material {
get_m_kLST(): number;
set_m_kLST(m_kLST: number): void;
get_m_kAST(): number;
set_m_kAST(m_kAST: number): void;
get_m_kVST(): number;
set_m_kVST(m_kVST: number): void;
get_m_flags(): number;
set_m_flags(m_flags: number): void;
}
class tMaterialArray {
size(): number;
at(n: number): Material;
}
class Anchor {
get_m_node(): Node;
set_m_node(m_node: Node): void;
get_m_local(): btVector3;
set_m_local(m_local: btVector3): void;
get_m_body(): btRigidBody;
set_m_body(m_body: btRigidBody): void;
get_m_influence(): number;
set_m_influence(m_influence: number): void;
get_m_c0(): btMatrix3x3;
set_m_c0(m_c0: btMatrix3x3): void;
get_m_c1(): btVector3;
set_m_c1(m_c1: btVector3): void;
get_m_c2(): number;
set_m_c2(m_c2: number): void;
}
class tAnchorArray {
size(): number;
at(n: number): Anchor;
clear(): void;
push_back(val: Anchor): void;
pop_back(): void;
}
class Config {
get_kVCF(): number;
set_kVCF(kVCF: number): void;
get_kDP(): number;
set_kDP(kDP: number): void;
get_kDG(): number;
set_kDG(kDG: number): void;
get_kLF(): number;
set_kLF(kLF: number): void;
get_kPR(): number;
set_kPR(kPR: number): void;
get_kVC(): number;
set_kVC(kVC: number): void;
get_kDF(): number;
set_kDF(kDF: number): void;
get_kMT(): number;
set_kMT(kMT: number): void;
get_kCHR(): number;
set_kCHR(kCHR: number): void;
get_kKHR(): number;
set_kKHR(kKHR: number): void;
get_kSHR(): number;
set_kSHR(kSHR: number): void;
get_kAHR(): number;
set_kAHR(kAHR: number): void;
get_kSRHR_CL(): number;
set_kSRHR_CL(kSRHR_CL: number): void;
get_kSKHR_CL(): number;
set_kSKHR_CL(kSKHR_CL: number): void;
get_kSSHR_CL(): number;
set_kSSHR_CL(kSSHR_CL: number): void;
get_kSR_SPLT_CL(): number;
set_kSR_SPLT_CL(kSR_SPLT_CL: number): void;
get_kSK_SPLT_CL(): number;
set_kSK_SPLT_CL(kSK_SPLT_CL: number): void;
get_kSS_SPLT_CL(): number;
set_kSS_SPLT_CL(kSS_SPLT_CL: number): void;
get_maxvolume(): number;
set_maxvolume(maxvolume: number): void;
get_timescale(): number;
set_timescale(timescale: number): void;
get_viterations(): number;
set_viterations(viterations: number): void;
get_piterations(): number;
set_piterations(piterations: number): void;
get_diterations(): number;
set_diterations(diterations: number): void;
get_citerations(): number;
set_citerations(citerations: number): void;
get_collisions(): number;
set_collisions(collisions: number): void;
}
class btSoftBody extends btCollisionObject {
constructor(worldInfo: btSoftBodyWorldInfo, node_count: number, x: btVector3, m: ReadonlyArray<number>);
get_m_cfg(): Config;
set_m_cfg(m_cfg: Config): void;
get_m_nodes(): tNodeArray;
set_m_nodes(m_nodes: tNodeArray): void;
get_m_faces(): tFaceArray;
set_m_faces(m_faces: tFaceArray): void;
get_m_materials(): tMaterialArray;
set_m_materials(m_materials: tMaterialArray): void;
get_m_anchors(): tAnchorArray;
set_m_anchors(m_anchors: tAnchorArray): void;
checkLink(node0: number, node1: number): boolean;
checkFace(node0: number, node1: number, node2: number): boolean;
appendMaterial(): Material;
appendNode(x: btVector3, m: number): void;
appendLink(node0: number, node1: number, mat: Material, bcheckexist: boolean): void;
appendFace(node0: number, node1: number, node2: number, mat: Material): void;
appendTetra(node0: number, node1: number, node2: number, node3: number, mat: Material): void;
appendAnchor(node: number, body: btRigidBody, disableCollisionBetweenLinkedBodies: boolean, influence: number): void;
addForce(force: btVector3): void;
addForce(force: btVector3, node: number): void;
addAeroForceToNode(windVelocity: btVector3, nodeIndex: number): void;
getTotalMass(): number;
setTotalMass(mass: number, fromfaces: boolean): void;
setMass(node: number, mass: number): void;
transform(trs: btTransform): void;
translate(trs: btVector3): void;
rotate(rot: btQuaternion): void;
scale(scl: btVector3): void;
generateClusters(k: number, maxiterations?: number): number;
generateBendingConstraints(distance: number, mat: Material): number;
upcast(colObj: btCollisionObject): btSoftBody;
}
class btSoftBodyRigidBodyCollisionConfiguration extends btDefaultCollisionConfiguration {
constructor(info?: btDefaultCollisionConstructionInfo);
}
class btSoftBodySolver {
}
class btDefaultSoftBodySolver extends btSoftBodySolver {
constructor();
}
class btSoftBodyArray {
size(): number;
at(n: number): btSoftBody;
}
class btSoftRigidDynamicsWorld extends btDiscreteDynamicsWorld {
constructor(dispatcher: btDispatcher, pairCache: btBroadphaseInterface, constraintSolver: btConstraintSolver, collisionConfiguration: btCollisionConfiguration, softBodySolver: btSoftBodySolver);
addSoftBody(body: btSoftBody, collisionFilterGroup: number, collisionFilterMask: number): void;
removeSoftBody(body: btSoftBody): void;
removeCollisionObject(collisionObject: btCollisionObject): void;
getWorldInfo(): btSoftBodyWorldInfo;
getSoftBodyArray(): btSoftBodyArray;
}
class btSoftBodyHelpers {
constructor();
CreateRope(worldInfo: btSoftBodyWorldInfo, from: btVector3, to: btVector3, res: number, fixeds: number): btSoftBody;
CreatePatch(worldInfo: btSoftBodyWorldInfo, corner00: btVector3, corner10: btVector3, corner01: btVector3, corner11: btVector3, resx: number, resy: number, fixeds: number, gendiags: boolean): btSoftBody;
CreatePatchUV(worldInfo: btSoftBodyWorldInfo, corner00: btVector3, corner10: btVector3, corner01: btVector3, corner11: btVector3, resx: number, resy: number, fixeds: number, gendiags: boolean, tex_coords: ReadonlyArray<number>): btSoftBody;
CreateEllipsoid(worldInfo: btSoftBodyWorldInfo, center: btVector3, radius: btVector3, res: number): btSoftBody;
CreateFromTriMesh(worldInfo: btSoftBodyWorldInfo, vertices: ReadonlyArray<number>, triangles: ReadonlyArray<number>, ntriangles: number, randomizeConstraints: boolean): btSoftBody;
CreateFromConvexHull(worldInfo: btSoftBodyWorldInfo, vertices: btVector3, nvertices: number, randomizeConstraints: boolean): btSoftBody;
}
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
<title>Three</title>
<style>
* {
padding: 0;
margin: 0;
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-touch-callout:none;
-webkit-user-select:none;
-khtml-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
user-select:none;
touch-action: none;
}
div {
user-select: none;
}
</style>
<script src="//yun.duiba.com.cn/aurora/assets/4723050c150b41f362ecf483e9cf98eb31c4a15b.js"></script>
</head>
<body>
<!-- 这里的 bundle 就是 webpack 临时打包出来 -->
<script src="//yun.duiba.com.cn/aurora/assets/5feda82574ac6db79f09540a8d24d09ff29ec9c9.js"></script>
<script>
window.addEventListener("load", function () {
console.log('load')
})
</script>
</body>
</html>
\ No newline at end of file
...@@ -3,17 +3,36 @@ ...@@ -3,17 +3,36 @@
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
<title>Three</title> <title>Three</title>
<style> <style>
* { * {
padding: 0; padding: 0;
margin: 0; margin: 0;
-webkit-tap-highlight-color: rgba(0,0,0,0);
-webkit-touch-callout:none;
-webkit-user-select:none;
-khtml-user-select:none;
-moz-user-select:none;
-ms-user-select:none;
user-select:none;
touch-action: none;
}
div {
user-select: none;
} }
</style> </style>
<script src="./ammo.js"></script>
</head> </head>
<body> <body>
<!-- 这里的 bundle 就是 webpack 临时打包出来 --> <!-- 这里的 bundle 就是 webpack 临时打包出来 -->
<script src="bundle.js"></script> <script src="bundle.js"></script>
<script>
window.addEventListener("load", function () {
console.log('load')
})
</script>
</body> </body>
</html> </html>
\ No newline at end of file
import { EVENTS_ENUM, PerspectiveScene } from "../module/PerspectiveScene"; import { EVENTS_ENUM, PerspectiveScene } from "../module/PerspectiveScene";
import * as THREE from 'three' import * as THREE from 'three'
import { OimoPhysicWorld } from "../OimoPhysicWorld/OimoPhysicWorld"; import { OimoPhysicWorld } from "../OimoPhysicWorld/OimoPhysicWorld";
import { AmmoPhysicWorld } from "../module/AmmoPhysicWorld";
import { Vehicle } from "./vehicle";
import { FirstPersonCameraControl } from "../module/CameraControl/FirstControlCameraControl";
function gradTexture(color: [number[], string[]]) { function gradTexture(color: [number[], string[]]) {
var c = document.createElement("canvas"); var c = document.createElement("canvas");
...@@ -48,17 +51,66 @@ function basicTexture(n: number){ ...@@ -48,17 +51,66 @@ function basicTexture(n: number){
return tx; return tx;
} }
function generateHeight( width: number, depth: number, minHeight: number, maxHeight: number) {
// Generates the height data (a sinus wave)
var size = width * depth;
var data = new Float32Array( size );
var hRange = maxHeight - minHeight;
var w2 = width / 2;
var d2 = depth / 2;
var phaseMult = 10;
var p = 0;
for ( var j = 0; j < depth; j ++ ) {
for ( var i = 0; i < width; i ++ ) {
var radius = Math.sqrt(
Math.pow( ( i - w2 ) / w2, 2.0 ) +
Math.pow( ( j - d2 ) / d2, 2.0 ) );
var height = ( Math.sin( radius * phaseMult ) + 1 ) * 0.5 * hRange + minHeight;
data[ p ] = height;
p++;
}
}
return data;
}
const GeometryMap = { const GeometryMap = {
'box': new THREE.BoxGeometry(1,1,1) 'box': new THREE.BoxGeometry(1,1,1)
} }
var ZERO_QUATERNION = new THREE.Quaternion(0, 0, 0, 1);
export class CarScene extends PerspectiveScene { export class CarScene extends PerspectiveScene {
vehicleIns: Vehicle;
cameraControls: FirstPersonCameraControl
constructor() { constructor() {
super() super()
this.camera.position.set(20, 20, 20)
// this.OrbitControlsIns.enabled = false
// this.cameraControls = new FirstPersonCameraControl(this.camera)
// document.body.addEventListener('click', () => {
// this.cameraControls.lock()
// })
this.initEvents() this.initEvents()
this.initUi() this.initUi()
this.initPhysicWorld()
// this.initOimoPhysicWorld()
this.initAmmoPhySicWorld()
} }
initUi() { initUi() {
...@@ -71,6 +123,20 @@ export class CarScene extends PerspectiveScene { ...@@ -71,6 +123,20 @@ export class CarScene extends PerspectiveScene {
this.scene.add(dirLight) this.scene.add(dirLight)
this.scene.add(new THREE.DirectionalLightHelper(dirLight)) this.scene.add(new THREE.DirectionalLightHelper(dirLight))
dirLight.castShadow = true
console.log(dirLight.shadow)
dirLight.shadow.mapSize.width = 1024 // 2的 n次幂 数值越高 细节越高
dirLight.shadow.mapSize.height = 1024
dirLight.shadow.camera.near = 0.3
dirLight.shadow.camera.far = 60
dirLight.shadow.camera.top = 40
dirLight.shadow.camera.left = 44
dirLight.shadow.camera.bottom = -28
dirLight.shadow.camera.right = -44
dirLight.shadow.radius = 4
this.scene.add(new THREE.CameraHelper(dirLight.shadow.camera))
let renderer = this.renderer let renderer = this.renderer
// 开启阴影 // 开启阴影
renderer.shadowMap.enabled = true renderer.shadowMap.enabled = true
...@@ -83,7 +149,7 @@ export class CarScene extends PerspectiveScene { ...@@ -83,7 +149,7 @@ export class CarScene extends PerspectiveScene {
this.scene.add(new THREE.AmbientLight(0x3D4143)) this.scene.add(new THREE.AmbientLight(0x3D4143))
this.scene.add(new THREE.AxesHelper(100)) this.scene.add(new THREE.AxesHelper(100))
this.scene.add(new THREE.GridHelper(100)) this.scene.add(new THREE.GridHelper(100, 20))
// let imgTexture = new THREE.TextureLoader().load('http://qnpic.top/yoona2.jpg') // let imgTexture = new THREE.TextureLoader().load('http://qnpic.top/yoona2.jpg')
// imgTexture.wrapS = imgTexture.wrapT = THREE.RepeatWrapping; // imgTexture.wrapS = imgTexture.wrapT = THREE.RepeatWrapping;
...@@ -107,11 +173,151 @@ export class CarScene extends PerspectiveScene { ...@@ -107,11 +173,151 @@ export class CarScene extends PerspectiveScene {
} }
ammoPhysicWorld: AmmoPhysicWorld
initAmmoPhySicWorld() {
this.ammoPhysicWorld = new AmmoPhysicWorld()
console.log(this.ammoPhysicWorld)
const boxGeometry = new THREE.BoxGeometry(1,1,1)
const material = new THREE.MeshLambertMaterial({
// wireframe: true,
map: new THREE.TextureLoader().load('http://qnpic.top/yoona2.jpg')
})
material.color = new THREE.Color(0xffffff * Math.random())
const boxMesh = new THREE.Mesh(boxGeometry, material)
boxMesh.position.set(0, 20, 0)
boxMesh.castShadow = true
this.scene.add(boxMesh)
this.ammoPhysicWorld.addMesh(boxMesh, {
mass: 1,
// friction: 10,
restitution: 2
})
// const planeGeometry = new THREE.BoxGeometry(75, 1, 75)
// const planeMesh = new THREE.Mesh(planeGeometry, new THREE.MeshPhongMaterial({
// color: 0xffffff,
// side: THREE.DoubleSide
// }))
// planeMesh.receiveShadow = true
// planeMesh.position.y = -1
// this.scene.add(planeMesh)
// this.ammoPhysicWorld.addMesh(planeMesh, {
// // friction: 2,
// restitution: 0.1
// })
this.createTerrain()
const vehicleIns = this.vehicleIns = new Vehicle(new THREE.Vector3(0, 4, -20), ZERO_QUATERNION)
this.scene.add(vehicleIns)
this.ammoPhysicWorld.addDynamicBody(vehicleIns)
}
createTerrain() {
const terrainWidth = 128, terrainDepth = 128
const terrainWidthExtents = 100, terrainDepthExtents = 100
const terrainHelfWidth = terrainWidth / 2, terrainHelfDepath = terrainDepth / 2
const terrainMaxHeight = 8, terrainMinHeight = 0
const heightData = generateHeight(terrainWidth, terrainDepth, terrainMinHeight, terrainMaxHeight)
const Planegeometry = new THREE.PlaneBufferGeometry( terrainWidthExtents, terrainDepthExtents, terrainWidth - 1, terrainDepth - 1 );
Planegeometry.rotateX( - Math.PI / 2 );
const vertices = Planegeometry.attributes.position.array;
// console.log(vertices)
// i < l
for ( var i = 0, j = 0, l = vertices.length; j < l; i ++, j += 3 ) {
// j + 1 because it is the y component that we modify
// @ts-expect-error
vertices[j + 1] = heightData[ i ];
}
// 计算法线向量
Planegeometry.computeVertexNormals();
const groundMaterial = new THREE.MeshPhongMaterial( { color: 0xC7C7C7 } );
const terrainMesh = new THREE.Mesh( Planegeometry, groundMaterial );
terrainMesh.receiveShadow = true
this.scene.add( terrainMesh );
// This parameter is not really used, since we are using PHY_FLOAT height data type and hence it is ignored
var heightScale = 1;
// Up axis = 0 for X, 1 for Y, 2 for Z. Normally 1 = Y is used.
var upAxis = 1;
// hdt, height data type. "PHY_FLOAT" is used. Possible values are "PHY_FLOAT", "PHY_UCHAR", "PHY_SHORT"
var hdt = "PHY_FLOAT"
// "PHY_FLOAT";
// Set this to your needs (inverts the triangles)
var flipQuadEdges = false;
// Creates height data buffer in Ammo heap
const ammoHeightData = Ammo._malloc( 4 * terrainWidth * terrainDepth );
// Copy the javascript height data array to the Ammo one.
var p = 0;
var p2 = 0;
for ( var j = 0; j < terrainDepth; j ++ ) {
for ( var i = 0; i < terrainWidth; i ++ ) {
// write 32-bit float data to memory
Ammo.HEAPF32[ammoHeightData + p2 >> 2] = heightData[ p ];
p ++;
// 4 bytes/float
p2 += 4;
}
}
// Creates the heightfield physics shape
var heightFieldShape = new Ammo.btHeightfieldTerrainShape(
terrainWidth,
terrainDepth,
ammoHeightData,
heightScale,
terrainMinHeight,
terrainMaxHeight,
upAxis,
// @ts-expect-error
hdt,
flipQuadEdges
);
// Set horizontal scale
var scaleX = terrainWidthExtents / ( terrainWidth - 1 );
var scaleZ = terrainDepthExtents / ( terrainDepth - 1 );
heightFieldShape.setLocalScaling( new Ammo.btVector3( scaleX, 1, scaleZ ) );
heightFieldShape.setMargin( 0.05 );
var groundTransform = new Ammo.btTransform();
groundTransform.setIdentity();
// Shifts the terrain, since bullet re-centers it on its bounding box.
groundTransform.setOrigin( new Ammo.btVector3( 0, ( terrainMaxHeight + terrainMinHeight ) / 2, 0 ) );
var groundMass = 0;
var groundLocalInertia = new Ammo.btVector3( 0, 0, 0 );
var groundMotionState = new Ammo.btDefaultMotionState( groundTransform );
var groundBody = new Ammo.btRigidBody( new Ammo.btRigidBodyConstructionInfo( groundMass, groundMotionState, heightFieldShape, groundLocalInertia ) );
this.ammoPhysicWorld.physicWorld.addRigidBody( groundBody );
}
physicWorld: OimoPhysicWorld physicWorld: OimoPhysicWorld
/** /**
* 创建物理世界 * 创建物理世界
*/ */
initPhysicWorld() { initOimoPhysicWorld() {
this.physicWorld = new OimoPhysicWorld() this.physicWorld = new OimoPhysicWorld()
console.log(this.physicWorld) console.log(this.physicWorld)
...@@ -136,8 +342,7 @@ export class CarScene extends PerspectiveScene { ...@@ -136,8 +342,7 @@ export class CarScene extends PerspectiveScene {
side: THREE.DoubleSide side: THREE.DoubleSide
})) }))
planeMesh.receiveShadow = true planeMesh.receiveShadow = true
// planeMesh.position.set(5, 0, 5) // planeMesh.position.y = -2
// planeMesh.rotateX(Math.PI / 2)
this.scene.add(planeMesh) this.scene.add(planeMesh)
const ridigBody = this.physicWorld.addMesh(planeMesh, { const ridigBody = this.physicWorld.addMesh(planeMesh, {
...@@ -160,10 +365,26 @@ export class CarScene extends PerspectiveScene { ...@@ -160,10 +365,26 @@ export class CarScene extends PerspectiveScene {
} }
onEnterFrame() { onEnterFrame(e: any) {
if (this.physicWorld) { if (this.physicWorld) {
this.physicWorld.step() this.physicWorld.step()
} }
if (this.ammoPhysicWorld) {
this.ammoPhysicWorld.step()
}
// this.updateCamera(this.camera)
}
updateCamera(camera: THREE.Camera) {
if (this.vehicleIns) {
const carPosition = this.vehicleIns.chassisMesh.position
// 跟随 Car
const relativeCameraOffset = new THREE.Vector3(0, 10, -15)
relativeCameraOffset.applyMatrix4(this.vehicleIns.chassisMesh.matrixWorld)
this.camera.position.copy(relativeCameraOffset)
this.camera.lookAt(carPosition)
}
} }
} }
\ No newline at end of file
import * as THREE from 'three';
class TerrainShap extends THREE.Object3D {
constructor(terrainWith: number, terrainHeight: number, heightData: number[]) {
super()
}
}
\ No newline at end of file
import { KeyBoardStateStore } from './../module/keyboardState/keyboardState';
import * as THREE from "three";
import { EventDispatcher } from "../module/EventDispatcher";
const materialDynamic = new THREE.MeshPhongMaterial( { color:0xfca400 } );
const materialStatic = new THREE.MeshPhongMaterial( { color:0x999999 } );
const materialInteractive = new THREE.MeshPhongMaterial( { color:0x990000 } );
var steeringIncrement = .04; // 转向速度
var steeringClamp = .5 // Math.PI / 6; // .5
var maxEngineForce = 2000;
var maxBreakingForce = 100;
// Wheels
var FRONT_LEFT = 0;
var FRONT_RIGHT = 1;
var BACK_LEFT = 2;
var BACK_RIGHT = 3;
function createElement(type: string, className: string, style: Partial<CSSStyleDeclaration>, events?: {
[eventName: string]: (event: Event) => void
}) {
const dom = document.createElement(type)
dom.setAttribute('class', className)
for (let k in style) {
dom.style[k] = style[k]
// @ts-expect-error
dom.originColor = style.backgroundColor
// @ts-expect-error
dom.touchColor = 'red'
}
document.body.appendChild(dom)
for (let k in events) {
dom.addEventListener(k, events[k])
}
return dom
}
type ActionNameEnum = 'acceleration' | 'braking' | 'left' | 'right';
export class Vehicle extends THREE.Object3D{
chassisMesh: THREE.Mesh // 车身
fixedChassicMesh: THREE.Mesh // 固定的车身
wheelMeshes: any[] = []
chassisRidigBody: Ammo.btRigidBody
raycastVehicle: Ammo.btRaycastVehicle
btVehicleTuning: Ammo.btVehicleTuning
sppedBoard: HTMLElement // 速度面板
constructor(pos: THREE.Vector3, quat: THREE.Quaternion) {
super()
// this.initChassisMesh()
this.createVehicle(pos, quat)
this.addEventListener('update', this.update)
}
initChassisMesh() {
this.add(new THREE.Mesh(new THREE.BoxGeometry(1,1,1), new THREE.MeshBasicMaterial({color: 0xffffff})))
}
createVehicle(pos: THREE.Vector3, quat: THREE.Quaternion) {
// Vehicle contants
// classis 底盘
var chassisWidth = 1.8;
var chassisHeight = .6;
var chassisLength = 4;
var massVehicle = 800;
// Chassis
var geometry = new Ammo.btBoxShape(new Ammo.btVector3(chassisWidth * .5, chassisHeight * .5, chassisLength * .5));
// get btTransform
var transform = new Ammo.btTransform();
transform.setIdentity();
transform.setOrigin(new Ammo.btVector3(pos.x, pos.y, pos.z));
transform.setRotation(new Ammo.btQuaternion(quat.x, quat.y, quat.z, quat.w));
var motionState = new Ammo.btDefaultMotionState(transform);
var localInertia = new Ammo.btVector3(0, 0, 0);
geometry.calculateLocalInertia(massVehicle, localInertia); // 计算局部惯性
var body = this.chassisRidigBody = new Ammo.btRigidBody(new Ammo.btRigidBodyConstructionInfo(massVehicle, motionState, geometry, localInertia));
body.setActivationState(4);
var chassisMesh = this.chassisMesh = this.createChassisMesh(chassisWidth, chassisHeight, chassisLength);
// this.fixedChassicMesh = this.createChassisMesh(chassisWidth, chassisHeight, chassisLength)
this.fixedChassicMesh = this.chassisMesh.add(new THREE.Mesh(
new THREE.BoxGeometry(1, 1, 1),
materialDynamic
))
this.sppedBoard = createElement('div', 'speedboard', {
position: 'fixed',
backgroundColor: 'yellow',
padding: '3px 20px',
left: "0px",
bottom: "0px"
})
createElement('div', 'left', {
position: 'fixed',
width: '80px',
height: '80px',
backgroundColor: 'blue',
left: '30px',
bottom: '30px'
}, {
mousedown: () => {
this.doAction('left')
},
mouseup: () => {
this.cancelAction('left')
},
touchstart: (e) => {
const target = e.target as HTMLElement & {
touchColor: string,
originColor: string
}
target.style.backgroundColor = target.touchColor
this.doAction('left')
},
touchend: (e) => {
const target = e.target as HTMLElement & {
touchColor: string,
originColor: string
}
target.style.backgroundColor = target.originColor
this.cancelAction('left')
}
})
createElement('div', 'right', {
position: 'fixed',
width: '80px',
height: '80px',
backgroundColor: 'blue',
left: '130px',
bottom: '30px'
}, {
mousedown: () => {
this.doAction('right')
},
mouseup: () => {
this.cancelAction('right')
},
touchstart: (e) => {
const target = e.target as HTMLElement & {
touchColor: string,
originColor: string
}
target.style.backgroundColor = target.touchColor
this.doAction('right')
},
touchend: (e) => {
const target = e.target as HTMLElement & {
touchColor: string,
originColor: string
}
target.style.backgroundColor = target.originColor
this.cancelAction('right')
}
})
createElement('div', 'acceleration', {
position: 'fixed',
width: '80px',
height: '80px',
backgroundColor: 'blue',
right: '130px',
bottom: '30px'
}, {
mousedown: () => {
this.doAction('acceleration')
},
mouseup: () => {
this.cancelAction('acceleration')
},
touchstart: (e) => {
const target = e.target as HTMLElement & {
touchColor: string,
originColor: string
}
target.style.backgroundColor = target.touchColor
this.doAction('acceleration')
},
touchend: (e) => {
const target = e.target as HTMLElement & {
touchColor: string,
originColor: string
}
target.style.backgroundColor = target.originColor
this.cancelAction('acceleration')
}
})
createElement('div', 'braking', {
position: 'fixed',
width: '80px',
height: '80px',
backgroundColor: 'blue',
right: '30px',
bottom: '30px'
}, {
mousedown: () => {
this.doAction('braking')
},
mouseup: () => {
this.cancelAction('braking')
},
touchstart: (e) => {
const target = e.target as HTMLElement & {
touchColor: string,
originColor: string
}
target.style.backgroundColor = target.touchColor
this.doAction('braking')
},
touchend: (e) => {
const target = e.target as HTMLElement & {
touchColor: string,
originColor: string
}
target.style.backgroundColor = target.originColor
this.cancelAction('braking')
}
})
}
addWheel(isFront: boolean, pos: Ammo.btVector3, radius: number, width: number, index: number) {
const vehicle = this.raycastVehicle
const tuning = this.btVehicleTuning
var friction = 1000;
// suspension 暂停 Stiffness刚度
var suspensionStiffness = 20.0;
var suspensionDamping = 2.3;
var suspensionCompression = 4.4;
var suspensionRestLength = 0.6;
var rollInfluence = 0.2; // roll influence
var wheelDirectionCS0 = new Ammo.btVector3(0, -1, 0);
var wheelAxleCS = new Ammo.btVector3(-1, 0, 0);
var wheelInfo = vehicle.addWheel(
pos,
wheelDirectionCS0,
wheelAxleCS,
suspensionRestLength,
radius,
tuning,
isFront);
// 悬架刚度?
wheelInfo.set_m_suspensionStiffness(suspensionStiffness);
wheelInfo.set_m_wheelsDampingRelaxation(suspensionDamping);
wheelInfo.set_m_wheelsDampingCompression(suspensionCompression);
wheelInfo.set_m_frictionSlip(friction); // 摩擦系数
wheelInfo.set_m_rollInfluence(rollInfluence);
this.wheelMeshes[index] = this.createWheelMesh(radius, width);
}
createWheelMesh(radius: number, width: number) {
var t = new THREE.CylinderGeometry(radius, radius, width, 24, 1);
t.rotateZ(Math.PI / 2);
var mesh = new THREE.Mesh(t, materialInteractive);
mesh.add(new THREE.Mesh(new THREE.BoxGeometry(width * 1.5, radius * 1.75, radius*.25, 1, 1, 1), materialInteractive));
mesh.castShadow = true
this.add(mesh);
return mesh;
}
createChassisMesh(w: number, l: number, h: number) {
var shape = new THREE.BoxGeometry(w, l, h, 1, 1, 1);
var mesh = new THREE.Mesh(shape, materialInteractive);
mesh.castShadow = true
this.add(mesh);
return mesh;
}
initPhysics(physicsWorld: Ammo.btDiscreteDynamicsWorld) {
physicsWorld.addRigidBody(this.chassisRidigBody)
var tuning = this.btVehicleTuning = new Ammo.btVehicleTuning(); // 创建了一个 vehicleTurning 对象?
var rayCaster = new Ammo.btDefaultVehicleRaycaster(physicsWorld); // 创建了一个射线投射
var vehicle = this.raycastVehicle = new Ammo.btRaycastVehicle(tuning, this.chassisRidigBody, rayCaster); // 通过车辆和射线投射创建了一个车辆
vehicle.setCoordinateSystem(0, 1, 2); // 设置坐标系?
physicsWorld.addAction(vehicle); // addAction
var wheelAxisPositionBack = -1;
var wheelRadiusBack = .4;
var wheelWidthBack = .3;
var wheelHalfTrackBack = 1;
var wheelAxisHeightBack = .3;
var wheelAxisFrontPosition = 1.7;
var wheelHalfTrackFront = 1;
var wheelAxisHeightFront = .3;
var wheelRadiusFront = .35;
var wheelWidthFront = 0.2;
this.addWheel(true, new Ammo.btVector3(wheelHalfTrackFront, wheelAxisHeightFront, wheelAxisFrontPosition), wheelRadiusFront, wheelWidthFront, FRONT_LEFT);
this.addWheel(true, new Ammo.btVector3(-wheelHalfTrackFront, wheelAxisHeightFront, wheelAxisFrontPosition), wheelRadiusFront, wheelWidthFront, FRONT_RIGHT);
this.addWheel(false, new Ammo.btVector3(-wheelHalfTrackBack, wheelAxisHeightBack, wheelAxisPositionBack), wheelRadiusBack, wheelWidthBack, BACK_LEFT);
this.addWheel(false, new Ammo.btVector3(wheelHalfTrackBack, wheelAxisHeightBack, wheelAxisPositionBack), wheelRadiusBack, wheelWidthBack, BACK_RIGHT);
}
// Raycast Vehicle
engineForce: number = 0;
vehicleSteering: number = 0; // 车辆转向
breakingForce: number = 0; // 刹车力
actions: {
[x in ActionNameEnum]: boolean
} = {
acceleration: false,
braking: false,
right: false,
left: false
}
doAction = (actionName: ActionNameEnum) => {
this.actions[actionName] = true
}
cancelAction = (actionName: ActionNameEnum) => {
this.actions[actionName] = false
}
update() {
const vehicle = this.raycastVehicle
const tuning = this.btVehicleTuning
var speed = vehicle.getCurrentSpeedKmHour();
this.sppedBoard.innerHTML = (speed < 0 ? '(R) ' : '') + Math.abs(speed).toFixed(1) + ' km/h';
let breakingForce = 0;
let engineForce = 0;
const isAccelerating = this.actions.acceleration || KeyBoardStateStore.isPressed('w')
const isBreaking = this.actions.braking || KeyBoardStateStore.isPressed('s')
const turnRight = this.actions.right || KeyBoardStateStore.isPressed('d')
const turnLeft = this.actions.left || KeyBoardStateStore.isPressed('a')
if (!isAccelerating && !isBreaking && speed !== 0) {
if (Math.abs(speed) < 0.2) {
speed = 0
} else {
if (speed > 0) {
breakingForce = maxBreakingForce / 4;
} else {
engineForce = maxEngineForce;
}
}
}
// 最大速度
if (speed < 80) {
if (isAccelerating) {
if (speed < -1) {
breakingForce = maxBreakingForce;
} else {
engineForce = maxEngineForce;
}
}
if (isBreaking) {
if (speed > 1)
breakingForce = maxBreakingForce;
else engineForce = -maxEngineForce / 2;
}
if (turnLeft) {
if (this.vehicleSteering < steeringClamp)
this.vehicleSteering += steeringIncrement;
}
else {
if (turnRight) {
if (this.vehicleSteering > -steeringClamp)
this.vehicleSteering -= steeringIncrement;
}
else {
if (this.vehicleSteering < -steeringIncrement)
this.vehicleSteering += steeringIncrement;
else {
if (this.vehicleSteering > steeringIncrement)
this.vehicleSteering -= steeringIncrement;
else {
this.vehicleSteering = 0;
}
}
}
}
}
vehicle.applyEngineForce(engineForce, BACK_LEFT);
vehicle.applyEngineForce(engineForce, BACK_RIGHT);
// brake 刹车
vehicle.setBrake(breakingForce / 2, FRONT_LEFT);
vehicle.setBrake(breakingForce / 2, FRONT_RIGHT);
vehicle.setBrake(breakingForce, BACK_LEFT);
vehicle.setBrake(breakingForce, BACK_RIGHT);
// 设置转向角度
vehicle.setSteeringValue(this.vehicleSteering, FRONT_LEFT);
vehicle.setSteeringValue(this.vehicleSteering, FRONT_RIGHT);
var tm, p, q, i;
var n = vehicle.getNumWheels();
const wheelMeshes = this.wheelMeshes
const chassisMesh = this.chassisMesh
for (i = 0; i < n; i++) {
vehicle.updateWheelTransform(i, true);
// 更新 three 的visual wheels
tm = vehicle.getWheelTransformWS(i);
p = tm.getOrigin();
q = tm.getRotation();
wheelMeshes[i].position.set(p.x(), p.y(), p.z());
wheelMeshes[i].quaternion.set(q.x(), q.y(), q.z(), q.w());
}
tm = vehicle.getChassisWorldTransform();
p = tm.getOrigin();
q = tm.getRotation();
chassisMesh.position.set(p.x(), p.y(), p.z());
chassisMesh.quaternion.set(q.x(), q.y(), q.z(), q.w());
}
}
\ No newline at end of file
import { CarScene } from "./CarScene" import { CarScene } from "./CarScene"
console.log('work') export class StageScene {
constructor() {
this.initStage()
}
new CarScene() initStage() {
\ No newline at end of file // @ts-expect-error
Ammo().then(() => {
new CarScene()
})
}
}
new StageScene()
\ No newline at end of file
import * as THREE from 'three'
interface BodyConfig {
mass: number,
friction: number // 摩擦力
restitution: number // 弹性
}
interface DynamicBody {
initPhysics: (w: Ammo.btDiscreteDynamicsWorld) => void
update: (delta: number) => void
}
export class AmmoPhysicWorld {
physicWorld: Ammo.btDiscreteDynamicsWorld
meshes: THREE.Mesh[] = []
meshesMap: WeakMap<THREE.Mesh, Ammo.btRigidBody> = new WeakMap()
clock: THREE.Clock
syncList: Function[] = []
DISABLE_DEACTIVATION: number = 4
TRANSFORM_AUX: Ammo.btTransform = new Ammo.btTransform();
ZERO_QUATERNION: THREE.Quaternion = new THREE.Quaternion(0, 0, 0, 1);
dynamicBodyList: DynamicBody[] = []
constructor() {
this.clock = new THREE.Clock();
this.initPhysicWorld()
}
initPhysicWorld() {
// btDefaultCollisionConfiguration 初始化一个默认碰撞配置
const collisionConfiguration = new Ammo.btDefaultCollisionConfiguration();
const dispatcher = new Ammo.btCollisionDispatcher( collisionConfiguration );
// 宽相位
const broadphase = new Ammo.btDbvtBroadphase();
// 解算器
const solver = new Ammo.btSequentialImpulseConstraintSolver();
const physicsWorld = this.physicWorld = new Ammo.btDiscreteDynamicsWorld( dispatcher, broadphase, solver, collisionConfiguration );
physicsWorld.setGravity( new Ammo.btVector3( 0, -9.82, 0 ) );
}
createMeshPhysicBody(mesh: THREE.Mesh, cfg: Partial<BodyConfig> = {}) {
console.log(mesh.type, mesh, mesh.geometry)
// @ts-expect-error
const parameters = mesh.geometry.parameters;
const geometry = mesh.geometry;
const finalCfg:BodyConfig = Object.assign({
mass: 0,
friction: 1,
restitution: 0
}, cfg)
var transform = new Ammo.btTransform();
transform.setIdentity();
transform.setOrigin(new Ammo.btVector3(mesh.position.x, mesh.position.y, mesh.position.z));
transform.setRotation(new Ammo.btQuaternion(mesh.quaternion.x, mesh.quaternion.y, mesh.quaternion.z, mesh.quaternion.w));
// 运动状态
var motionState = new Ammo.btDefaultMotionState(transform);
// 局部惯性?
var localInertia = new Ammo.btVector3(0, 0, 0);
if (geometry.type === 'BoxGeometry') {
const sx = parameters.width !== undefined ? parameters.width / 2 : 0.5;
const sy = parameters.height !== undefined ? parameters.height / 2 : 0.5;
const sz = parameters.depth !== undefined ? parameters.depth / 2 : 0.5;
const btGeometryShape = new Ammo.btBoxShape(new Ammo.btVector3(sx, sy, sz));
btGeometryShape.calculateLocalInertia(
finalCfg.mass
, localInertia);
// 设置 ridigbody 属性,并new 一个 刚体
const rbInfo = new Ammo.btRigidBodyConstructionInfo(finalCfg.mass, motionState, btGeometryShape, localInertia);
const body = new Ammo.btRigidBody(rbInfo);
body.setFriction(finalCfg.friction)
body.setRestitution(finalCfg.restitution)
this.physicWorld.addRigidBody(body)
if (finalCfg.mass) {
body.setActivationState(this.DISABLE_DEACTIVATION)
}
return body
}
// else if ( geometry.type === 'SphereGeometry' || geometry.type === 'IcosahedronGeometry' ) {
// const radius = parameters.radius !== undefined ? parameters.radius : 1;
// return new OIMO.OSphereGeometry( radius );
// }
return null;
}
addMesh(mesh: THREE.Mesh, config: Partial<BodyConfig> = {}) {
const ridigBody = this.createMeshPhysicBody(mesh, config)
if (ridigBody) {
this.meshes.push(mesh)
this.meshesMap.set(mesh, ridigBody)
}
return ridigBody
}
addDynamicBody(body: DynamicBody) {
body.initPhysics(this.physicWorld)
this.dynamicBodyList.push(body)
}
step() {
const dt = this.clock.getDelta()
const syncList = this.syncList
for (var i = 0; i < syncList.length; i++) {
syncList[i](dt)
}
const meshes = this.meshes
for ( let i = 0, l = meshes.length; i < l; i ++ ) {
const mesh = meshes[i];
// if ( mesh.isInstancedMesh ) {
// const array = mesh.instanceMatrix.array;
// const bodies = meshMap.get( mesh );
// for ( let j = 0; j < bodies.length; j ++ ) {
// const body = bodies[ j ];
// compose( body.getPosition(), body.getOrientation(), array, j * 16 );
// }
// mesh.instanceMatrix.needsUpdate = true;
// } else
if ( mesh.isMesh ) {
const body = this.meshesMap.get(mesh);
// 获取刚体的状态
var ms = body.getMotionState();
if (ms) {
ms.getWorldTransform(this.TRANSFORM_AUX);
var p = this.TRANSFORM_AUX.getOrigin();
var q = this.TRANSFORM_AUX.getRotation();
mesh.position.set(p.x(), p.y(), p.z());
mesh.quaternion.set(q.x(), q.y(), q.z(), q.w());
}
}
}
for (let i = 0; i < this.dynamicBodyList.length; i++) {
const currBody = this.dynamicBodyList[i]
currBody.update(dt)
}
// simulation 模拟
this.physicWorld.stepSimulation( dt, 10 );
}
}
\ No newline at end of file
import {
Vector3,
Euler,
EventDispatcher,
Camera
} from 'three'
const _euler = new Euler(0, 0, 0, 'YXZ');
const _vector = new Vector3();
const _cameraDefaultVector = new Vector3(0, 0, -1);
const _changeEvent = { type: 'change' };
const _lockEvent = { type: 'lock' };
const _unlockEvent = { type: 'unlock' };
const _PI_2 = Math.PI / 2;
export class FirstPersonCameraControl extends EventDispatcher {
domElement: HTMLElement
isLocked: boolean // 是否锁定
minPolarAngle: number // 最小相机俯仰角度
maxPolarAngle: number // 最大相机俯仰角度
camera: Camera // 相机
lookSpeedCoefficient: number // 旋转速度系数
constructor(camera: Camera, domElement?: HTMLElement) {
super()
if (!camera) {
throw new Error('FirstPersonCameraControl: The first parameter "camera" is required')
}
if ( domElement === undefined ) {
console.warn( 'FirstPersonCameraControl: The second parameter "domElement" is now mandatory.' );
domElement = document.body;
}
this.domElement = domElement;
this.camera = camera
this.isLocked = false;
// 设置相机俯仰角度 Range is 0 to Math.PI
this.minPolarAngle = 0; // radians
this.maxPolarAngle = Math.PI; // radians
this.lookSpeedCoefficient = 0.001
this.initEvents()
}
private initEvents() {
const ownerDocument = this.domElement.ownerDocument
ownerDocument.addEventListener('mousemove', this.onMouseMove, false)
ownerDocument.addEventListener('touchmove', this.onMouseMove, false)
ownerDocument.addEventListener('pointerlockchange', this.onPointerLockChange, false)
ownerDocument.addEventListener('pointerlockerror', this.onPointerLockError, false)
}
private removeEvents() {
const ownerDocument = this.domElement.ownerDocument
ownerDocument.removeEventListener('mousemove', this.onMouseMove, false)
ownerDocument.removeEventListener('touchmove', this.onMouseMove, false)
ownerDocument.removeEventListener('pointerlockchange', this.onPointerLockChange, false)
ownerDocument.removeEventListener('pointerlockerror', this.onPointerLockError, false)
}
private onPointerLockError() {
console.error('FirstPersonCameraControl: Pointer lock error')
}
private onMouseMove = (event: Event) => {
if (this.isLocked) {
const camera = this.camera
// @ts-ignore
const movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0
// @ts-ignore
const movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0
// 获取 相机的 四元 quaternion
_euler.setFromQuaternion( camera.quaternion );
_euler.y -= movementX * this.lookSpeedCoefficient;
_euler.x -= movementY * this.lookSpeedCoefficient;
_euler.x = Math.max( _PI_2 - this.maxPolarAngle, Math.min( _PI_2 - this.minPolarAngle, _euler.x ) );
camera.quaternion.setFromEuler( _euler );
this.dispatchEvent( _changeEvent );
}
}
/**
* pointerlock change 事件
*/
private onPointerLockChange = () => {
if ( this.domElement.ownerDocument.pointerLockElement === this.domElement ) {
this.dispatchEvent( _lockEvent );
this.isLocked = true;
} else {
this.dispatchEvent( _unlockEvent );
this.isLocked = false;
}
}
dispose() {
this.removeEvents()
}
getCamera() {
return this.camera
}
/**
* 获取相机的四元朝向
*/
getCameraDirection = (v: Vector3) => {
// 简单粗暴点就下面这样 getWorldDirection
return this.camera.getWorldDirection(v)
return v.copy(_cameraDefaultVector).applyQuaternion(this.camera.quaternion)
}
/**
* 向前移动
* @param distance
*/
moveForward(distance: number) {
const camera = this.camera
// camera.getWorldDirection(v) 这样也行
// 第一列为右向的向量
// 第二 列为上向的向量
// 第三 列为向前的向量
_vector.setFromMatrixColumn( camera.matrix, 0 );
// 向前的向量
_vector.crossVectors( camera.up, _vector );
camera.position.addScaledVector( _vector, distance );
}
getControlsRight() {
const _camera = this.camera
_vector.setFromMatrixColumn( _camera.matrix, 0 );
return _vector
}
/**
* 向右移动
* @param distance
*/
moveRight(distance: number) {
const _camera = this.camera
_vector.setFromMatrixColumn( _camera.matrix, 0 );
_camera.position.addScaledVector( _vector, distance );
}
moveToPostion(position: Vector3) {
this.camera.position.copy(position)
}
add(v: Vector3) {
this.camera.position.add(v)
}
/**
* 锁定
*/
lock() {
this.domElement.requestPointerLock()
}
/**
* 接触锁定
*/
unlock() {
this.domElement.ownerDocument.exitPointerLock()
}
}
\ No newline at end of file
...@@ -4,7 +4,7 @@ type EventCall<T extends any> = (e?: { ...@@ -4,7 +4,7 @@ type EventCall<T extends any> = (e?: {
}, ...arg1: any[]) => any }, ...arg1: any[]) => any
export class EventDispatcher<EventsKeyName extends string> { export class EventDispatcher<EventsKeyName extends string = string> {
private listeners: { private listeners: {
[key in EventsKeyName]?: { [key in EventsKeyName]?: {
listener: EventCall<EventsKeyName>, listener: EventCall<EventsKeyName>,
......
import { EventDispatcher } from "../EventDispatcher"
type KeyDownCallBack = (e?: KeyboardEvent) => void
export class KeyBoardState extends EventDispatcher {
constructor() {
super()
this.initEvents()
}
private keyState: any = {}
private initEvents() {
document.addEventListener('keydown', (e: KeyboardEvent) => {
const key = e.key
const code = e.code
for (let k of [key+'-down', code+'-down']) {
this.dispatchEvent(k, e)
}
this.keyState[key] = true
this.keyState[code] = true
})
document.addEventListener('keyup', (e) => {
const key = e.key
const code = e.code
for (let k of [key+'-up', code+'-up']) {
this.dispatchEvent(k, e)
}
this.keyState[key] = false
this.keyState[code] = false
})
}
/**
* 监听事件
* @param key
* @param callback
*/
onKeyDown(key: string, callback: KeyDownCallBack, context?: any) {
// @ts-expect-error
this.addEventListener(key+'-down', callback, context)
}
/**
* 删除事件 监听
* @param key
* @param callback
*/
removeKeyDown(key: string, callback: KeyDownCallBack) {
// @ts-expect-error
this.removeEventListener(key+'-down', callback)
}
isPressed(key: string) {
return this.keyState[key.toUpperCase()] || this.keyState[key.toLocaleLowerCase()]
}
}
export const KeyBoardStateStore = new KeyBoardState()
\ No newline at end of file
// export default Ammo;
// declare function Ammo<T>(target?: T): Promise<T & typeof Ammo>;
declare namespace Ammo {
function destroy(obj: any): void;
function _malloc(size: number): number;
function _free(ptr: number): void;
const HEAP8: Int8Array;
const HEAP16: Int16Array;
const HEAP32: Int32Array;
const HEAPU8: Uint8Array;
const HEAPU16: Uint16Array;
const HEAPU32: Uint32Array;
const HEAPF32: Float32Array;
const HEAPF64: Float64Array;
class btIDebugDraw {
drawLine(from: btVector3, to: btVector3, color: btVector3): void;
drawContactPoint(pointOnB: btVector3, normalOnB: btVector3, distance: number, lifeTime: number, color: btVector3): void;
reportErrorWarning(warningString: string): void;
draw3dText(location: btVector3, textString: string): void;
setDebugMode(debugMode: number): void;
getDebugMode(): number;
}
class DebugDrawer {
constructor();
drawLine(from: btVector3, to: btVector3, color: btVector3): void;
drawContactPoint(pointOnB: btVector3, normalOnB: btVector3, distance: number, lifeTime: number, color: btVector3): void;
reportErrorWarning(warningString: string): void;
draw3dText(location: btVector3, textString: string): void;
setDebugMode(debugMode: number): void;
getDebugMode(): number;
}
class btVector3 {
constructor();
constructor(x: number, y: number, z: number);
length(): number;
x(): number;
y(): number;
z(): number;
setX(x: number): void;
setY(y: number): void;
setZ(z: number): void;
setValue(x: number, y: number, z: number): void;
normalize(): void;
rotate(wAxis: btVector3, angle: number): btVector3;
dot(v: btVector3): number;
op_mul(x: number): btVector3;
op_add(v: btVector3): btVector3;
op_sub(v: btVector3): btVector3;
}
class btVector4 extends btVector3 {
constructor();
constructor(x: number, y: number, z: number, w: number);
w(): number;
setValue(x: number, y: number, z: number): void;
setValue(x: number, y: number, z: number, w: number): void;
}
class btQuadWord {
x(): number;
y(): number;
z(): number;
w(): number;
setX(x: number): void;
setY(y: number): void;
setZ(z: number): void;
setW(w: number): void;
}
class btQuaternion extends btQuadWord {
constructor(x: number, y: number, z: number, w: number);
setValue(x: number, y: number, z: number, w: number): void;
setEulerZYX(z: number, y: number, x: number): void;
setRotation(axis: btVector3, angle: number): void;
normalize(): void;
length2(): number;
length(): number;
dot(q: btQuaternion): number;
normalized(): btQuaternion;
getAxis(): btVector3;
inverse(): btQuaternion;
getAngle(): number;
getAngleShortestPath(): number;
angle(q: btQuaternion): number;
angleShortestPath(q: btQuaternion): number;
op_add(q: btQuaternion): btQuaternion;
op_sub(q: btQuaternion): btQuaternion;
op_mul(s: number): btQuaternion;
op_mulq(q: btQuaternion): btQuaternion;
op_div(s: number): btQuaternion;
}
class btMatrix3x3 {
setEulerZYX(ex: number, ey: number, ez: number): void;
getRotation(q: btQuaternion): void;
getRow(y: number): btVector3;
}
class btTransform {
constructor();
constructor(q: btQuaternion, v: btVector3);
setIdentity(): void;
setOrigin(origin: btVector3): void;
setRotation(rotation: btQuaternion): void;
getOrigin(): btVector3;
getRotation(): btQuaternion;
getBasis(): btMatrix3x3;
setFromOpenGLMatrix(m: ReadonlyArray<number>): void;
inverse(): btTransform;
op_mul(t: btTransform): btTransform;
}
class btMotionState {
getWorldTransform(worldTrans: btTransform): void;
setWorldTransform(worldTrans: btTransform): void;
}
class btDefaultMotionState extends btMotionState {
constructor(startTrans?: btTransform, centerOfMassOffset?: btTransform);
get_m_graphicsWorldTrans(): btTransform;
set_m_graphicsWorldTrans(m_graphicsWorldTrans: btTransform): void;
}
class btCollisionObject {
setAnisotropicFriction(anisotropicFriction: btVector3, frictionMode: number): void;
getCollisionShape(): btCollisionShape;
setContactProcessingThreshold(contactProcessingThreshold: number): void;
setActivationState(newState: number): void;
forceActivationState(newState: number): void;
activate(forceActivation?: boolean): void;
isActive(): boolean;
isKinematicObject(): boolean;
isStaticObject(): boolean;
isStaticOrKinematicObject(): boolean;
getRestitution(): number;
getFriction(): number;
getRollingFriction(): number;
setRestitution(rest: number): void;
setFriction(frict: number): void;
setRollingFriction(frict: number): void;
getWorldTransform(): btTransform;
getCollisionFlags(): number;
setCollisionFlags(flags: number): void;
setWorldTransform(worldTrans: btTransform): void;
setCollisionShape(collisionShape: btCollisionShape): void;
setCcdMotionThreshold(ccdMotionThreshold: number): void;
setCcdSweptSphereRadius(radius: number): void;
getUserIndex(): number;
setUserIndex(index: number): void;
getUserPointer(): unknown;
setUserPointer(userPointer: unknown): void;
getBroadphaseHandle(): btBroadphaseProxy;
}
class btCollisionObjectWrapper {
getWorldTransform(): btTransform;
getCollisionObject(): btCollisionObject;
getCollisionShape(): btCollisionShape;
}
class RayResultCallback {
hasHit(): boolean;
get_m_collisionFilterGroup(): number;
set_m_collisionFilterGroup(m_collisionFilterGroup: number): void;
get_m_collisionFilterMask(): number;
set_m_collisionFilterMask(m_collisionFilterMask: number): void;
get_m_closestHitFraction(): number;
set_m_closestHitFraction(m_closestHitFraction: number): void;
get_m_collisionObject(): btCollisionObject;
set_m_collisionObject(m_collisionObject: btCollisionObject): void;
}
class ClosestRayResultCallback extends RayResultCallback {
constructor(from: btVector3, to: btVector3);
get_m_rayFromWorld(): btVector3;
set_m_rayFromWorld(m_rayFromWorld: btVector3): void;
get_m_rayToWorld(): btVector3;
set_m_rayToWorld(m_rayToWorld: btVector3): void;
get_m_hitNormalWorld(): btVector3;
set_m_hitNormalWorld(m_hitNormalWorld: btVector3): void;
get_m_hitPointWorld(): btVector3;
set_m_hitPointWorld(m_hitPointWorld: btVector3): void;
}
class btConstCollisionObjectArray {
size(): number;
at(n: number): btCollisionObject;
}
class btScalarArray {
size(): number;
at(n: number): number;
}
class AllHitsRayResultCallback extends RayResultCallback {
constructor(from: btVector3, to: btVector3);
get_m_collisionObjects(): btConstCollisionObjectArray;
set_m_collisionObjects(m_collisionObjects: btConstCollisionObjectArray): void;
get_m_rayFromWorld(): btVector3;
set_m_rayFromWorld(m_rayFromWorld: btVector3): void;
get_m_rayToWorld(): btVector3;
set_m_rayToWorld(m_rayToWorld: btVector3): void;
get_m_hitNormalWorld(): btVector3Array;
set_m_hitNormalWorld(m_hitNormalWorld: btVector3Array): void;
get_m_hitPointWorld(): btVector3Array;
set_m_hitPointWorld(m_hitPointWorld: btVector3Array): void;
get_m_hitFractions(): btScalarArray;
set_m_hitFractions(m_hitFractions: btScalarArray): void;
}
class btManifoldPoint {
getPositionWorldOnA(): btVector3;
getPositionWorldOnB(): btVector3;
getAppliedImpulse(): number;
getDistance(): number;
get_m_localPointA(): btVector3;
set_m_localPointA(m_localPointA: btVector3): void;
get_m_localPointB(): btVector3;
set_m_localPointB(m_localPointB: btVector3): void;
get_m_positionWorldOnB(): btVector3;
set_m_positionWorldOnB(m_positionWorldOnB: btVector3): void;
get_m_positionWorldOnA(): btVector3;
set_m_positionWorldOnA(m_positionWorldOnA: btVector3): void;
get_m_normalWorldOnB(): btVector3;
set_m_normalWorldOnB(m_normalWorldOnB: btVector3): void;
get_m_userPersistentData(): any;
set_m_userPersistentData(m_userPersistentData: any): void;
}
class ContactResultCallback {
addSingleResult(cp: btManifoldPoint, colObj0Wrap: btCollisionObjectWrapper, partId0: number, index0: number, colObj1Wrap: btCollisionObjectWrapper, partId1: number, index1: number): number;
}
class ConcreteContactResultCallback {
constructor();
addSingleResult(cp: btManifoldPoint, colObj0Wrap: btCollisionObjectWrapper, partId0: number, index0: number, colObj1Wrap: btCollisionObjectWrapper, partId1: number, index1: number): number;
}
class LocalShapeInfo {
get_m_shapePart(): number;
set_m_shapePart(m_shapePart: number): void;
get_m_triangleIndex(): number;
set_m_triangleIndex(m_triangleIndex: number): void;
}
class LocalConvexResult {
constructor(hitCollisionObject: btCollisionObject, localShapeInfo: LocalShapeInfo, hitNormalLocal: btVector3, hitPointLocal: btVector3, hitFraction: number);
get_m_hitCollisionObject(): btCollisionObject;
set_m_hitCollisionObject(m_hitCollisionObject: btCollisionObject): void;
get_m_localShapeInfo(): LocalShapeInfo;
set_m_localShapeInfo(m_localShapeInfo: LocalShapeInfo): void;
get_m_hitNormalLocal(): btVector3;
set_m_hitNormalLocal(m_hitNormalLocal: btVector3): void;
get_m_hitPointLocal(): btVector3;
set_m_hitPointLocal(m_hitPointLocal: btVector3): void;
get_m_hitFraction(): number;
set_m_hitFraction(m_hitFraction: number): void;
}
class ConvexResultCallback {
hasHit(): boolean;
get_m_collisionFilterGroup(): number;
set_m_collisionFilterGroup(m_collisionFilterGroup: number): void;
get_m_collisionFilterMask(): number;
set_m_collisionFilterMask(m_collisionFilterMask: number): void;
get_m_closestHitFraction(): number;
set_m_closestHitFraction(m_closestHitFraction: number): void;
}
class ClosestConvexResultCallback extends ConvexResultCallback {
constructor(convexFromWorld: btVector3, convexToWorld: btVector3);
get_m_convexFromWorld(): btVector3;
set_m_convexFromWorld(m_convexFromWorld: btVector3): void;
get_m_convexToWorld(): btVector3;
set_m_convexToWorld(m_convexToWorld: btVector3): void;
get_m_hitNormalWorld(): btVector3;
set_m_hitNormalWorld(m_hitNormalWorld: btVector3): void;
get_m_hitPointWorld(): btVector3;
set_m_hitPointWorld(m_hitPointWorld: btVector3): void;
}
class btCollisionShape {
setLocalScaling(scaling: btVector3): void;
getLocalScaling(): btVector3;
calculateLocalInertia(mass: number, inertia: btVector3): void;
setMargin(margin: number): void;
getMargin(): number;
}
class btConvexShape extends btCollisionShape {
}
class btConvexTriangleMeshShape extends btConvexShape {
constructor(meshInterface: btStridingMeshInterface, calcAabb?: boolean);
}
class btBoxShape extends btCollisionShape {
constructor(boxHalfExtents: btVector3);
setMargin(margin: number): void;
getMargin(): number;
}
class btCapsuleShape extends btCollisionShape {
constructor(radius: number, height: number);
setMargin(margin: number): void;
getMargin(): number;
getUpAxis(): number;
getRadius(): number;
getHalfHeight(): number;
}
class btCapsuleShapeX extends btCapsuleShape {
constructor(radius: number, height: number);
setMargin(margin: number): void;
getMargin(): number;
}
class btCapsuleShapeZ extends btCapsuleShape {
constructor(radius: number, height: number);
setMargin(margin: number): void;
getMargin(): number;
}
class btCylinderShape extends btCollisionShape {
constructor(halfExtents: btVector3);
setMargin(margin: number): void;
getMargin(): number;
}
class btCylinderShapeX extends btCylinderShape {
constructor(halfExtents: btVector3);
setMargin(margin: number): void;
getMargin(): number;
}
class btCylinderShapeZ extends btCylinderShape {
constructor(halfExtents: btVector3);
setMargin(margin: number): void;
getMargin(): number;
}
class btSphereShape extends btCollisionShape {
constructor(radius: number);
setMargin(margin: number): void;
getMargin(): number;
}
class btMultiSphereShape extends btCollisionShape {
constructor(positions: btVector3, radii: ReadonlyArray<number>, numPoints: number);
}
class btConeShape extends btCollisionShape {
constructor(radius: number, height: number);
}
class btConeShapeX extends btConeShape {
constructor(radius: number, height: number);
}
class btConeShapeZ extends btConeShape {
constructor(radius: number, height: number);
}
class btIntArray {
size(): number;
at(n: number): number;
}
class btFace {
get_m_indices(): btIntArray;
set_m_indices(m_indices: btIntArray): void;
get_m_plane(): ReadonlyArray<number>;
set_m_plane(m_plane: ReadonlyArray<number>): void;
}
class btVector3Array {
size(): number;
at(n: number): btVector3;
}
class btFaceArray {
size(): number;
at(n: number): btFace;
}
class btConvexPolyhedron {
get_m_vertices(): btVector3Array;
set_m_vertices(m_vertices: btVector3Array): void;
get_m_faces(): btFaceArray;
set_m_faces(m_faces: btFaceArray): void;
}
class btConvexHullShape extends btCollisionShape {
constructor(points?: ReadonlyArray<number>, numPoints?: number);
addPoint(point: btVector3, recalculateLocalAABB?: boolean): void;
setMargin(margin: number): void;
getMargin(): number;
getNumVertices(): number;
initializePolyhedralFeatures(shiftVerticesByMargin: number): boolean;
recalcLocalAabb(): void;
getConvexPolyhedron(): btConvexPolyhedron;
}
class btShapeHull {
constructor(shape: btConvexShape);
buildHull(margin: number): boolean;
numVertices(): number;
getVertexPointer(): btVector3;
}
class btCompoundShape extends btCollisionShape {
constructor(enableDynamicAabbTree?: boolean);
addChildShape(localTransform: btTransform, shape: btCollisionShape): void;
removeChildShape(shape: btCollisionShape): void;
removeChildShapeByIndex(childShapeindex: number): void;
getNumChildShapes(): number;
getChildShape(index: number): btCollisionShape;
updateChildTransform(childIndex: number, newChildTransform: btTransform, shouldRecalculateLocalAabb?: boolean): void;
setMargin(margin: number): void;
getMargin(): number;
}
class btStridingMeshInterface {
setScaling(scaling: btVector3): void;
}
class btIndexedMesh {
get_m_numTriangles(): number;
set_m_numTriangles(m_numTriangles: number): void;
}
class btIndexedMeshArray {
size(): number;
at(n: number): btIndexedMesh;
}
class btTriangleMesh extends btStridingMeshInterface {
constructor(use32bitIndices?: boolean, use4componentVertices?: boolean);
addTriangle(vertex0: btVector3, vertex1: btVector3, vertex2: btVector3, removeDuplicateVertices?: boolean): void;
findOrAddVertex(vertex: btVector3, removeDuplicateVertices: boolean): number;
addIndex(index: number): void;
getIndexedMeshArray(): btIndexedMeshArray;
}
type PHY_ScalarType = "PHY_FLOAT" | "PHY_DOUBLE" | "PHY_INTEGER" | "PHY_SHORT" | "PHY_FIXEDPOINT88" | "PHY_UCHAR";
class btConcaveShape extends btCollisionShape {
}
class btEmptyShape extends btConcaveShape {
constructor();
}
class btStaticPlaneShape extends btConcaveShape {
constructor(planeNormal: btVector3, planeConstant: number);
}
class btTriangleMeshShape extends btConcaveShape {
}
class btBvhTriangleMeshShape extends btTriangleMeshShape {
constructor(meshInterface: btStridingMeshInterface, useQuantizedAabbCompression: boolean, buildBvh?: boolean);
}
class btHeightfieldTerrainShape extends btConcaveShape {
constructor(heightStickWidth: number, heightStickLength: number, heightfieldData: unknown, heightScale: number, minHeight: number, maxHeight: number, upAxis: number, hdt: PHY_ScalarType, flipQuadEdges: boolean);
setMargin(margin: number): void;
getMargin(): number;
}
class btDefaultCollisionConstructionInfo {
constructor();
}
class btDefaultCollisionConfiguration {
constructor(info?: btDefaultCollisionConstructionInfo);
}
class btPersistentManifold {
constructor();
getBody0(): btCollisionObject;
getBody1(): btCollisionObject;
getNumContacts(): number;
getContactPoint(index: number): btManifoldPoint;
}
class btDispatcher {
getNumManifolds(): number;
getManifoldByIndexInternal(index: number): btPersistentManifold;
}
class btCollisionDispatcher extends btDispatcher {
constructor(conf: btDefaultCollisionConfiguration);
}
class btOverlappingPairCallback {
}
class btOverlappingPairCache {
setInternalGhostPairCallback(ghostPairCallback: btOverlappingPairCallback): void;
getNumOverlappingPairs(): number;
}
class btAxisSweep3 {
constructor(worldAabbMin: btVector3, worldAabbMax: btVector3, maxHandles?: number, pairCache?: btOverlappingPairCache, disableRaycastAccelerator?: boolean);
}
class btBroadphaseInterface {
getOverlappingPairCache(): btOverlappingPairCache;
}
class btCollisionConfiguration {
}
class btDbvtBroadphase extends btBroadphaseInterface {
constructor();
}
class btBroadphaseProxy {
get_m_collisionFilterGroup(): number;
set_m_collisionFilterGroup(m_collisionFilterGroup: number): void;
get_m_collisionFilterMask(): number;
set_m_collisionFilterMask(m_collisionFilterMask: number): void;
}
class btRigidBodyConstructionInfo {
constructor(mass: number, motionState: btMotionState, collisionShape: btCollisionShape, localInertia?: btVector3);
get_m_linearDamping(): number;
set_m_linearDamping(m_linearDamping: number): void;
get_m_angularDamping(): number;
set_m_angularDamping(m_angularDamping: number): void;
get_m_friction(): number;
set_m_friction(m_friction: number): void;
get_m_rollingFriction(): number;
set_m_rollingFriction(m_rollingFriction: number): void;
get_m_restitution(): number;
set_m_restitution(m_restitution: number): void;
get_m_linearSleepingThreshold(): number;
set_m_linearSleepingThreshold(m_linearSleepingThreshold: number): void;
get_m_angularSleepingThreshold(): number;
set_m_angularSleepingThreshold(m_angularSleepingThreshold: number): void;
get_m_additionalDamping(): boolean;
set_m_additionalDamping(m_additionalDamping: boolean): void;
get_m_additionalDampingFactor(): number;
set_m_additionalDampingFactor(m_additionalDampingFactor: number): void;
get_m_additionalLinearDampingThresholdSqr(): number;
set_m_additionalLinearDampingThresholdSqr(m_additionalLinearDampingThresholdSqr: number): void;
get_m_additionalAngularDampingThresholdSqr(): number;
set_m_additionalAngularDampingThresholdSqr(m_additionalAngularDampingThresholdSqr: number): void;
get_m_additionalAngularDampingFactor(): number;
set_m_additionalAngularDampingFactor(m_additionalAngularDampingFactor: number): void;
}
class btRigidBody extends btCollisionObject {
constructor(constructionInfo: btRigidBodyConstructionInfo);
getCenterOfMassTransform(): btTransform;
setCenterOfMassTransform(xform: btTransform): void;
setSleepingThresholds(linear: number, angular: number): void;
getLinearDamping(): number;
getAngularDamping(): number;
setDamping(lin_damping: number, ang_damping: number): void;
setMassProps(mass: number, inertia: btVector3): void;
getLinearFactor(): btVector3;
setLinearFactor(linearFactor: btVector3): void;
applyTorque(torque: btVector3): void;
applyLocalTorque(torque: btVector3): void;
applyForce(force: btVector3, rel_pos: btVector3): void;
applyCentralForce(force: btVector3): void;
applyCentralLocalForce(force: btVector3): void;
applyTorqueImpulse(torque: btVector3): void;
applyImpulse(impulse: btVector3, rel_pos: btVector3): void;
applyCentralImpulse(impulse: btVector3): void;
updateInertiaTensor(): void;
getLinearVelocity(): btVector3;
getAngularVelocity(): btVector3;
setLinearVelocity(lin_vel: btVector3): void;
setAngularVelocity(ang_vel: btVector3): void;
getMotionState(): btMotionState;
setMotionState(motionState: btMotionState): void;
getAngularFactor(): btVector3;
setAngularFactor(angularFactor: btVector3): void;
upcast(colObj: btCollisionObject): btRigidBody;
getAabb(aabbMin: btVector3, aabbMax: btVector3): void;
applyGravity(): void;
getGravity(): btVector3;
setGravity(acceleration: btVector3): void;
getBroadphaseProxy(): btBroadphaseProxy;
clearForces(): void;
}
class btConstraintSetting {
constructor();
get_m_tau(): number;
set_m_tau(m_tau: number): void;
get_m_damping(): number;
set_m_damping(m_damping: number): void;
get_m_impulseClamp(): number;
set_m_impulseClamp(m_impulseClamp: number): void;
}
class btTypedConstraint {
enableFeedback(needsFeedback: boolean): void;
getBreakingImpulseThreshold(): number;
setBreakingImpulseThreshold(threshold: number): void;
getParam(num: number, axis: number): number;
setParam(num: number, value: number, axis: number): void;
}
type btConstraintParams = "BT_CONSTRAINT_ERP" | "BT_CONSTRAINT_STOP_ERP" | "BT_CONSTRAINT_CFM" | "BT_CONSTRAINT_STOP_CFM";
class btPoint2PointConstraint extends btTypedConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, pivotInA: btVector3, pivotInB: btVector3);
constructor(rbA: btRigidBody, pivotInA: btVector3);
setPivotA(pivotA: btVector3): void;
setPivotB(pivotB: btVector3): void;
getPivotInA(): btVector3;
getPivotInB(): btVector3;
get_m_setting(): btConstraintSetting;
set_m_setting(m_setting: btConstraintSetting): void;
}
class btGeneric6DofConstraint extends btTypedConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, frameInA: btTransform, frameInB: btTransform, useLinearFrameReferenceFrameA: boolean);
constructor(rbB: btRigidBody, frameInB: btTransform, useLinearFrameReferenceFrameB: boolean);
setLinearLowerLimit(linearLower: btVector3): void;
setLinearUpperLimit(linearUpper: btVector3): void;
setAngularLowerLimit(angularLower: btVector3): void;
setAngularUpperLimit(angularUpper: btVector3): void;
getFrameOffsetA(): btTransform;
}
class btGeneric6DofSpringConstraint extends btGeneric6DofConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, frameInA: btTransform, frameInB: btTransform, useLinearFrameReferenceFrameA: boolean);
constructor(rbB: btRigidBody, frameInB: btTransform, useLinearFrameReferenceFrameB: boolean);
enableSpring(index: number, onOff: boolean): void;
setStiffness(index: number, stiffness: number): void;
setDamping(index: number, damping: number): void;
setEquilibriumPoint(index: number, val: number): void;
setEquilibriumPoint(index: number): void;
setEquilibriumPoint(): void;
}
class btSequentialImpulseConstraintSolver {
constructor();
}
class btConeTwistConstraint extends btTypedConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, rbAFrame: btTransform, rbBFrame: btTransform);
constructor(rbA: btRigidBody, rbAFrame: btTransform);
setLimit(limitIndex: number, limitValue: number): void;
setAngularOnly(angularOnly: boolean): void;
setDamping(damping: number): void;
enableMotor(b: boolean): void;
setMaxMotorImpulse(maxMotorImpulse: number): void;
setMaxMotorImpulseNormalized(maxMotorImpulse: number): void;
setMotorTarget(q: btQuaternion): void;
setMotorTargetInConstraintSpace(q: btQuaternion): void;
}
class btHingeConstraint extends btTypedConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, pivotInA: btVector3, pivotInB: btVector3, axisInA: btVector3, axisInB: btVector3, useReferenceFrameA?: boolean);
constructor(rbA: btRigidBody, rbB: btRigidBody, rbAFrame: btTransform, rbBFrame: btTransform, useReferenceFrameA?: boolean);
constructor(rbA: btRigidBody, rbAFrame: btTransform, useReferenceFrameA?: boolean);
setLimit(low: number, high: number, softness: number, biasFactor: number, relaxationFactor?: number): void;
enableAngularMotor(enableMotor: boolean, targetVelocity: number, maxMotorImpulse: number): void;
setAngularOnly(angularOnly: boolean): void;
enableMotor(enableMotor: boolean): void;
setMaxMotorImpulse(maxMotorImpulse: number): void;
setMotorTarget(targetAngle: number, dt: number): void;
}
class btSliderConstraint extends btTypedConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, frameInA: btTransform, frameInB: btTransform, useLinearReferenceFrameA: boolean);
constructor(rbB: btRigidBody, frameInB: btTransform, useLinearReferenceFrameA: boolean);
setLowerLinLimit(lowerLimit: number): void;
setUpperLinLimit(upperLimit: number): void;
setLowerAngLimit(lowerAngLimit: number): void;
setUpperAngLimit(upperAngLimit: number): void;
}
class btFixedConstraint extends btTypedConstraint {
constructor(rbA: btRigidBody, rbB: btRigidBody, frameInA: btTransform, frameInB: btTransform);
}
class btConstraintSolver {
}
class btDispatcherInfo {
get_m_timeStep(): number;
set_m_timeStep(m_timeStep: number): void;
get_m_stepCount(): number;
set_m_stepCount(m_stepCount: number): void;
get_m_dispatchFunc(): number;
set_m_dispatchFunc(m_dispatchFunc: number): void;
get_m_timeOfImpact(): number;
set_m_timeOfImpact(m_timeOfImpact: number): void;
get_m_useContinuous(): boolean;
set_m_useContinuous(m_useContinuous: boolean): void;
get_m_enableSatConvex(): boolean;
set_m_enableSatConvex(m_enableSatConvex: boolean): void;
get_m_enableSPU(): boolean;
set_m_enableSPU(m_enableSPU: boolean): void;
get_m_useEpa(): boolean;
set_m_useEpa(m_useEpa: boolean): void;
get_m_allowedCcdPenetration(): number;
set_m_allowedCcdPenetration(m_allowedCcdPenetration: number): void;
get_m_useConvexConservativeDistanceUtil(): boolean;
set_m_useConvexConservativeDistanceUtil(m_useConvexConservativeDistanceUtil: boolean): void;
get_m_convexConservativeDistanceThreshold(): number;
set_m_convexConservativeDistanceThreshold(m_convexConservativeDistanceThreshold: number): void;
}
class btCollisionWorld {
getDispatcher(): btDispatcher;
rayTest(rayFromWorld: btVector3, rayToWorld: btVector3, resultCallback: RayResultCallback): void;
getPairCache(): btOverlappingPairCache;
getDispatchInfo(): btDispatcherInfo;
addCollisionObject(collisionObject: btCollisionObject, collisionFilterGroup?: number, collisionFilterMask?: number): void;
removeCollisionObject(collisionObject: btCollisionObject): void;
getBroadphase(): btBroadphaseInterface;
convexSweepTest(castShape: btConvexShape, from: btTransform, to: btTransform, resultCallback: ConvexResultCallback, allowedCcdPenetration: number): void;
contactPairTest(colObjA: btCollisionObject, colObjB: btCollisionObject, resultCallback: ContactResultCallback): void;
contactTest(colObj: btCollisionObject, resultCallback: ContactResultCallback): void;
updateSingleAabb(colObj: btCollisionObject): void;
setDebugDrawer(debugDrawer: btIDebugDraw): void;
getDebugDrawer(): btIDebugDraw;
debugDrawWorld(): void;
debugDrawObject(worldTransform: btTransform, shape: btCollisionShape, color: btVector3): void;
}
class btContactSolverInfo {
get_m_splitImpulse(): boolean;
set_m_splitImpulse(m_splitImpulse: boolean): void;
get_m_splitImpulsePenetrationThreshold(): number;
set_m_splitImpulsePenetrationThreshold(m_splitImpulsePenetrationThreshold: number): void;
get_m_numIterations(): number;
set_m_numIterations(m_numIterations: number): void;
}
type btInternalTickCallback = (world: btDynamicsWorld, timeStep: number) => void;
class btDynamicsWorld extends btCollisionWorld {
addAction(action: btActionInterface): void;
removeAction(action: btActionInterface): void;
getSolverInfo(): btContactSolverInfo;
setInternalTickCallback(cb: btInternalTickCallback, worldUserInfo?: unknown, isPreTick?: boolean): void;
}
class btDiscreteDynamicsWorld extends btDynamicsWorld {
constructor(dispatcher: btDispatcher, pairCache: btBroadphaseInterface, constraintSolver: btConstraintSolver, collisionConfiguration: btCollisionConfiguration);
setGravity(gravity: btVector3): void;
getGravity(): btVector3;
addRigidBody(body: btRigidBody): void;
addRigidBody(body: btRigidBody, group: number, mask: number): void;
removeRigidBody(body: btRigidBody): void;
addConstraint(constraint: btTypedConstraint, disableCollisionsBetweenLinkedBodies?: boolean): void;
removeConstraint(constraint: btTypedConstraint): void;
stepSimulation(timeStep: number, maxSubSteps?: number, fixedTimeStep?: number): number;
setContactAddedCallback(funcpointer: number): void;
setContactProcessedCallback(funcpointer: number): void;
setContactDestroyedCallback(funcpointer: number): void;
}
class btVehicleTuning {
constructor();
get_m_suspensionStiffness(): number;
set_m_suspensionStiffness(m_suspensionStiffness: number): void;
get_m_suspensionCompression(): number;
set_m_suspensionCompression(m_suspensionCompression: number): void;
get_m_suspensionDamping(): number;
set_m_suspensionDamping(m_suspensionDamping: number): void;
get_m_maxSuspensionTravelCm(): number;
set_m_maxSuspensionTravelCm(m_maxSuspensionTravelCm: number): void;
get_m_frictionSlip(): number;
set_m_frictionSlip(m_frictionSlip: number): void;
get_m_maxSuspensionForce(): number;
set_m_maxSuspensionForce(m_maxSuspensionForce: number): void;
}
class btVehicleRaycasterResult {
get_m_hitPointInWorld(): btVector3;
set_m_hitPointInWorld(m_hitPointInWorld: btVector3): void;
get_m_hitNormalInWorld(): btVector3;
set_m_hitNormalInWorld(m_hitNormalInWorld: btVector3): void;
get_m_distFraction(): number;
set_m_distFraction(m_distFraction: number): void;
}
class btVehicleRaycaster {
castRay(from: btVector3, to: btVector3, result: btVehicleRaycasterResult): void;
}
class btDefaultVehicleRaycaster extends btVehicleRaycaster {
constructor(world: btDynamicsWorld);
}
class RaycastInfo {
get_m_contactNormalWS(): btVector3;
set_m_contactNormalWS(m_contactNormalWS: btVector3): void;
get_m_contactPointWS(): btVector3;
set_m_contactPointWS(m_contactPointWS: btVector3): void;
get_m_suspensionLength(): number;
set_m_suspensionLength(m_suspensionLength: number): void;
get_m_hardPointWS(): btVector3;
set_m_hardPointWS(m_hardPointWS: btVector3): void;
get_m_wheelDirectionWS(): btVector3;
set_m_wheelDirectionWS(m_wheelDirectionWS: btVector3): void;
get_m_wheelAxleWS(): btVector3;
set_m_wheelAxleWS(m_wheelAxleWS: btVector3): void;
get_m_isInContact(): boolean;
set_m_isInContact(m_isInContact: boolean): void;
get_m_groundObject(): any;
set_m_groundObject(m_groundObject: any): void;
}
class btWheelInfoConstructionInfo {
get_m_chassisConnectionCS(): btVector3;
set_m_chassisConnectionCS(m_chassisConnectionCS: btVector3): void;
get_m_wheelDirectionCS(): btVector3;
set_m_wheelDirectionCS(m_wheelDirectionCS: btVector3): void;
get_m_wheelAxleCS(): btVector3;
set_m_wheelAxleCS(m_wheelAxleCS: btVector3): void;
get_m_suspensionRestLength(): number;
set_m_suspensionRestLength(m_suspensionRestLength: number): void;
get_m_maxSuspensionTravelCm(): number;
set_m_maxSuspensionTravelCm(m_maxSuspensionTravelCm: number): void;
get_m_wheelRadius(): number;
set_m_wheelRadius(m_wheelRadius: number): void;
get_m_suspensionStiffness(): number;
set_m_suspensionStiffness(m_suspensionStiffness: number): void;
get_m_wheelsDampingCompression(): number;
set_m_wheelsDampingCompression(m_wheelsDampingCompression: number): void;
get_m_wheelsDampingRelaxation(): number;
set_m_wheelsDampingRelaxation(m_wheelsDampingRelaxation: number): void;
get_m_frictionSlip(): number;
set_m_frictionSlip(m_frictionSlip: number): void;
get_m_maxSuspensionForce(): number;
set_m_maxSuspensionForce(m_maxSuspensionForce: number): void;
get_m_bIsFrontWheel(): boolean;
set_m_bIsFrontWheel(m_bIsFrontWheel: boolean): void;
}
class btWheelInfo {
get_m_suspensionStiffness(): number;
set_m_suspensionStiffness(m_suspensionStiffness: number): void;
get_m_frictionSlip(): number;
set_m_frictionSlip(m_frictionSlip: number): void;
get_m_engineForce(): number;
set_m_engineForce(m_engineForce: number): void;
get_m_rollInfluence(): number;
set_m_rollInfluence(m_rollInfluence: number): void;
get_m_suspensionRestLength1(): number;
set_m_suspensionRestLength1(m_suspensionRestLength1: number): void;
get_m_wheelsRadius(): number;
set_m_wheelsRadius(m_wheelsRadius: number): void;
get_m_wheelsDampingCompression(): number;
set_m_wheelsDampingCompression(m_wheelsDampingCompression: number): void;
get_m_wheelsDampingRelaxation(): number;
set_m_wheelsDampingRelaxation(m_wheelsDampingRelaxation: number): void;
get_m_steering(): number;
set_m_steering(m_steering: number): void;
get_m_maxSuspensionForce(): number;
set_m_maxSuspensionForce(m_maxSuspensionForce: number): void;
get_m_maxSuspensionTravelCm(): number;
set_m_maxSuspensionTravelCm(m_maxSuspensionTravelCm: number): void;
get_m_wheelsSuspensionForce(): number;
set_m_wheelsSuspensionForce(m_wheelsSuspensionForce: number): void;
get_m_bIsFrontWheel(): boolean;
set_m_bIsFrontWheel(m_bIsFrontWheel: boolean): void;
get_m_raycastInfo(): RaycastInfo;
set_m_raycastInfo(m_raycastInfo: RaycastInfo): void;
get_m_chassisConnectionPointCS(): btVector3;
set_m_chassisConnectionPointCS(m_chassisConnectionPointCS: btVector3): void;
constructor(ci: btWheelInfoConstructionInfo);
getSuspensionRestLength(): number;
updateWheel(chassis: btRigidBody, raycastInfo: RaycastInfo): void;
get_m_worldTransform(): btTransform;
set_m_worldTransform(m_worldTransform: btTransform): void;
get_m_wheelDirectionCS(): btVector3;
set_m_wheelDirectionCS(m_wheelDirectionCS: btVector3): void;
get_m_wheelAxleCS(): btVector3;
set_m_wheelAxleCS(m_wheelAxleCS: btVector3): void;
get_m_rotation(): number;
set_m_rotation(m_rotation: number): void;
get_m_deltaRotation(): number;
set_m_deltaRotation(m_deltaRotation: number): void;
get_m_brake(): number;
set_m_brake(m_brake: number): void;
get_m_clippedInvContactDotSuspension(): number;
set_m_clippedInvContactDotSuspension(m_clippedInvContactDotSuspension: number): void;
get_m_suspensionRelativeVelocity(): number;
set_m_suspensionRelativeVelocity(m_suspensionRelativeVelocity: number): void;
get_m_skidInfo(): number;
set_m_skidInfo(m_skidInfo: number): void;
}
class btActionInterface {
updateAction(collisionWorld: btCollisionWorld, deltaTimeStep: number): void;
}
class btKinematicCharacterController extends btActionInterface {
constructor(ghostObject: btPairCachingGhostObject, convexShape: btConvexShape, stepHeight: number, upAxis?: number);
setUpAxis(axis: number): void;
setWalkDirection(walkDirection: btVector3): void;
setVelocityForTimeInterval(velocity: btVector3, timeInterval: number): void;
warp(origin: btVector3): void;
preStep(collisionWorld: btCollisionWorld): void;
playerStep(collisionWorld: btCollisionWorld, dt: number): void;
setFallSpeed(fallSpeed: number): void;
setJumpSpeed(jumpSpeed: number): void;
setMaxJumpHeight(maxJumpHeight: number): void;
canJump(): boolean;
jump(): void;
setGravity(gravity: number): void;
getGravity(): number;
setMaxSlope(slopeRadians: number): void;
getMaxSlope(): number;
getGhostObject(): btPairCachingGhostObject;
setUseGhostSweepTest(useGhostObjectSweepTest: boolean): void;
onGround(): boolean;
setUpInterpolate(value: boolean): void;
}
class btRaycastVehicle extends btActionInterface {
constructor(tuning: btVehicleTuning, chassis: btRigidBody, raycaster: btVehicleRaycaster);
applyEngineForce(force: number, wheel: number): void;
setSteeringValue(steering: number, wheel: number): void;
getWheelTransformWS(wheelIndex: number): btTransform;
updateWheelTransform(wheelIndex: number, interpolatedTransform: boolean): void;
addWheel(connectionPointCS0: btVector3, wheelDirectionCS0: btVector3, wheelAxleCS: btVector3, suspensionRestLength: number, wheelRadius: number, tuning: btVehicleTuning, isFrontWheel: boolean): btWheelInfo;
getNumWheels(): number;
getRigidBody(): btRigidBody;
getWheelInfo(index: number): btWheelInfo;
setBrake(brake: number, wheelIndex: number): void;
setCoordinateSystem(rightIndex: number, upIndex: number, forwardIndex: number): void;
getCurrentSpeedKmHour(): number;
getChassisWorldTransform(): btTransform;
rayCast(wheel: btWheelInfo): number;
updateVehicle(step: number): void;
resetSuspension(): void;
getSteeringValue(wheel: number): number;
updateWheelTransformsWS(wheel: btWheelInfo, interpolatedTransform?: boolean): void;
setPitchControl(pitch: number): void;
updateSuspension(deltaTime: number): void;
updateFriction(timeStep: number): void;
getRightAxis(): number;
getUpAxis(): number;
getForwardAxis(): number;
getForwardVector(): btVector3;
getUserConstraintType(): number;
setUserConstraintType(userConstraintType: number): void;
setUserConstraintId(uid: number): void;
getUserConstraintId(): number;
}
class btGhostObject extends btCollisionObject {
constructor();
getNumOverlappingObjects(): number;
getOverlappingObject(index: number): btCollisionObject;
}
class btPairCachingGhostObject extends btGhostObject {
constructor();
}
class btGhostPairCallback {
constructor();
}
class btSoftBodyWorldInfo {
constructor();
get_air_density(): number;
set_air_density(air_density: number): void;
get_water_density(): number;
set_water_density(water_density: number): void;
get_water_offset(): number;
set_water_offset(water_offset: number): void;
get_m_maxDisplacement(): number;
set_m_maxDisplacement(m_maxDisplacement: number): void;
get_water_normal(): btVector3;
set_water_normal(water_normal: btVector3): void;
get_m_broadphase(): btBroadphaseInterface;
set_m_broadphase(m_broadphase: btBroadphaseInterface): void;
get_m_dispatcher(): btDispatcher;
set_m_dispatcher(m_dispatcher: btDispatcher): void;
get_m_gravity(): btVector3;
set_m_gravity(m_gravity: btVector3): void;
}
class Face {
get_m_n(): ReadonlyArray<Node>;
set_m_n(m_n: ReadonlyArray<Node>): void;
get_m_normal(): btVector3;
set_m_normal(m_normal: btVector3): void;
get_m_ra(): number;
set_m_ra(m_ra: number): void;
}
class tFaceArray {
size(): number;
at(n: number): Face;
}
class Node {
get_m_x(): btVector3;
set_m_x(m_x: btVector3): void;
get_m_q(): btVector3;
set_m_q(m_q: btVector3): void;
get_m_v(): btVector3;
set_m_v(m_v: btVector3): void;
get_m_f(): btVector3;
set_m_f(m_f: btVector3): void;
get_m_n(): btVector3;
set_m_n(m_n: btVector3): void;
get_m_im(): number;
set_m_im(m_im: number): void;
get_m_area(): number;
set_m_area(m_area: number): void;
}
class tNodeArray {
size(): number;
at(n: number): Node;
}
class Material {
get_m_kLST(): number;
set_m_kLST(m_kLST: number): void;
get_m_kAST(): number;
set_m_kAST(m_kAST: number): void;
get_m_kVST(): number;
set_m_kVST(m_kVST: number): void;
get_m_flags(): number;
set_m_flags(m_flags: number): void;
}
class tMaterialArray {
size(): number;
at(n: number): Material;
}
class Anchor {
get_m_node(): Node;
set_m_node(m_node: Node): void;
get_m_local(): btVector3;
set_m_local(m_local: btVector3): void;
get_m_body(): btRigidBody;
set_m_body(m_body: btRigidBody): void;
get_m_influence(): number;
set_m_influence(m_influence: number): void;
get_m_c0(): btMatrix3x3;
set_m_c0(m_c0: btMatrix3x3): void;
get_m_c1(): btVector3;
set_m_c1(m_c1: btVector3): void;
get_m_c2(): number;
set_m_c2(m_c2: number): void;
}
class tAnchorArray {
size(): number;
at(n: number): Anchor;
clear(): void;
push_back(val: Anchor): void;
pop_back(): void;
}
class Config {
get_kVCF(): number;
set_kVCF(kVCF: number): void;
get_kDP(): number;
set_kDP(kDP: number): void;
get_kDG(): number;
set_kDG(kDG: number): void;
get_kLF(): number;
set_kLF(kLF: number): void;
get_kPR(): number;
set_kPR(kPR: number): void;
get_kVC(): number;
set_kVC(kVC: number): void;
get_kDF(): number;
set_kDF(kDF: number): void;
get_kMT(): number;
set_kMT(kMT: number): void;
get_kCHR(): number;
set_kCHR(kCHR: number): void;
get_kKHR(): number;
set_kKHR(kKHR: number): void;
get_kSHR(): number;
set_kSHR(kSHR: number): void;
get_kAHR(): number;
set_kAHR(kAHR: number): void;
get_kSRHR_CL(): number;
set_kSRHR_CL(kSRHR_CL: number): void;
get_kSKHR_CL(): number;
set_kSKHR_CL(kSKHR_CL: number): void;
get_kSSHR_CL(): number;
set_kSSHR_CL(kSSHR_CL: number): void;
get_kSR_SPLT_CL(): number;
set_kSR_SPLT_CL(kSR_SPLT_CL: number): void;
get_kSK_SPLT_CL(): number;
set_kSK_SPLT_CL(kSK_SPLT_CL: number): void;
get_kSS_SPLT_CL(): number;
set_kSS_SPLT_CL(kSS_SPLT_CL: number): void;
get_maxvolume(): number;
set_maxvolume(maxvolume: number): void;
get_timescale(): number;
set_timescale(timescale: number): void;
get_viterations(): number;
set_viterations(viterations: number): void;
get_piterations(): number;
set_piterations(piterations: number): void;
get_diterations(): number;
set_diterations(diterations: number): void;
get_citerations(): number;
set_citerations(citerations: number): void;
get_collisions(): number;
set_collisions(collisions: number): void;
}
class btSoftBody extends btCollisionObject {
constructor(worldInfo: btSoftBodyWorldInfo, node_count: number, x: btVector3, m: ReadonlyArray<number>);
get_m_cfg(): Config;
set_m_cfg(m_cfg: Config): void;
get_m_nodes(): tNodeArray;
set_m_nodes(m_nodes: tNodeArray): void;
get_m_faces(): tFaceArray;
set_m_faces(m_faces: tFaceArray): void;
get_m_materials(): tMaterialArray;
set_m_materials(m_materials: tMaterialArray): void;
get_m_anchors(): tAnchorArray;
set_m_anchors(m_anchors: tAnchorArray): void;
checkLink(node0: number, node1: number): boolean;
checkFace(node0: number, node1: number, node2: number): boolean;
appendMaterial(): Material;
appendNode(x: btVector3, m: number): void;
appendLink(node0: number, node1: number, mat: Material, bcheckexist: boolean): void;
appendFace(node0: number, node1: number, node2: number, mat: Material): void;
appendTetra(node0: number, node1: number, node2: number, node3: number, mat: Material): void;
appendAnchor(node: number, body: btRigidBody, disableCollisionBetweenLinkedBodies: boolean, influence: number): void;
addForce(force: btVector3): void;
addForce(force: btVector3, node: number): void;
addAeroForceToNode(windVelocity: btVector3, nodeIndex: number): void;
getTotalMass(): number;
setTotalMass(mass: number, fromfaces: boolean): void;
setMass(node: number, mass: number): void;
transform(trs: btTransform): void;
translate(trs: btVector3): void;
rotate(rot: btQuaternion): void;
scale(scl: btVector3): void;
generateClusters(k: number, maxiterations?: number): number;
generateBendingConstraints(distance: number, mat: Material): number;
upcast(colObj: btCollisionObject): btSoftBody;
}
class btSoftBodyRigidBodyCollisionConfiguration extends btDefaultCollisionConfiguration {
constructor(info?: btDefaultCollisionConstructionInfo);
}
class btSoftBodySolver {
}
class btDefaultSoftBodySolver extends btSoftBodySolver {
constructor();
}
class btSoftBodyArray {
size(): number;
at(n: number): btSoftBody;
}
class btSoftRigidDynamicsWorld extends btDiscreteDynamicsWorld {
constructor(dispatcher: btDispatcher, pairCache: btBroadphaseInterface, constraintSolver: btConstraintSolver, collisionConfiguration: btCollisionConfiguration, softBodySolver: btSoftBodySolver);
addSoftBody(body: btSoftBody, collisionFilterGroup: number, collisionFilterMask: number): void;
removeSoftBody(body: btSoftBody): void;
removeCollisionObject(collisionObject: btCollisionObject): void;
getWorldInfo(): btSoftBodyWorldInfo;
getSoftBodyArray(): btSoftBodyArray;
}
class btSoftBodyHelpers {
constructor();
CreateRope(worldInfo: btSoftBodyWorldInfo, from: btVector3, to: btVector3, res: number, fixeds: number): btSoftBody;
CreatePatch(worldInfo: btSoftBodyWorldInfo, corner00: btVector3, corner10: btVector3, corner01: btVector3, corner11: btVector3, resx: number, resy: number, fixeds: number, gendiags: boolean): btSoftBody;
CreatePatchUV(worldInfo: btSoftBodyWorldInfo, corner00: btVector3, corner10: btVector3, corner01: btVector3, corner11: btVector3, resx: number, resy: number, fixeds: number, gendiags: boolean, tex_coords: ReadonlyArray<number>): btSoftBody;
CreateEllipsoid(worldInfo: btSoftBodyWorldInfo, center: btVector3, radius: btVector3, res: number): btSoftBody;
CreateFromTriMesh(worldInfo: btSoftBodyWorldInfo, vertices: ReadonlyArray<number>, triangles: ReadonlyArray<number>, ntriangles: number, randomizeConstraints: boolean): btSoftBody;
CreateFromConvexHull(worldInfo: btSoftBodyWorldInfo, vertices: btVector3, nvertices: number, randomizeConstraints: boolean): btSoftBody;
}
}
\ No newline at end of file
...@@ -13,13 +13,15 @@ ...@@ -13,13 +13,15 @@
"strict": true, /* Enable all strict type-checking options. */ "strict": true, /* Enable all strict type-checking options. */
// "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */ // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
"strictNullChecks": false, "strictNullChecks": false,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true, "esModuleInterop": true,
"skipLibCheck": true, /* Skip type checking of declaration files. */ "skipLibCheck": true, /* Skip type checking of declaration files. */
"forceConsistentCasingInFileNames": true, /* Disallow inconsistently-cased references to the same file. */ "forceConsistentCasingInFileNames": true, /* Disallow inconsistently-cased references to the same file. */
"typeRoots": ["node_modules/ammojs-typed/ammo/ambient"]
}, },
"include": [ "include": [
"src/**/*.ts" "src/**/*.ts"
], , "libs/ammo.d.ts", "libs/ammo.d.ts" ],
"exclude": [ "exclude": [
"node_modules" "node_modules"
] ]
......
...@@ -22,7 +22,7 @@ module.exports = { ...@@ -22,7 +22,7 @@ module.exports = {
}, },
resolve: { resolve: {
alias: { alias: {
'@': './src', '@': './src'
}, },
extensions: ['.ts', '.js', 'tsx'] extensions: ['.ts', '.js', 'tsx']
}, },
...@@ -34,6 +34,6 @@ module.exports = { ...@@ -34,6 +34,6 @@ module.exports = {
port: '0.0.0.0', port: '0.0.0.0',
hot: true, hot: true,
open: true, open: true,
port: 9016 port: 9017
} }
} }
\ No newline at end of file
Arguments:
/usr/local/bin/node /usr/local/bin/yarn add ammonjs
PATH:
/usr/local/bin:/usr/local/sbin:/Library/Frameworks/Python.framework/Versions/3.9/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin:/Library/Frameworks/Python.framework/Versions/3.9/bin
Yarn version:
1.22.10
Node version:
14.16.0
Platform:
darwin x64
Trace:
Error [ERR_TLS_CERT_ALTNAME_INVALID]: Hostname/IP does not match certificate's altnames: Host: registry.npm.org. is not in the cert's altnames: DNS:*.cloudwaysapps.com, DNS:cloudwaysapps.com
at Object.checkServerIdentity (tls.js:297:12)
at TLSSocket.onConnectSecure (_tls_wrap.js:1507:27)
at TLSSocket.emit (events.js:315:20)
at TLSSocket._finishInit (_tls_wrap.js:932:8)
at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:706:12)
npm manifest:
{
"name": "threexoimocarstudy-20220809",
"version": "1.0.0",
"description": "three and oimo for car",
"main": "index.ts",
"scripts": {
"dev": "webpack-dev-server",
"build": "webpack"
},
"keywords": [
"three",
"oimo"
],
"author": "lightfish",
"license": "ISC",
"dependencies": {
"@types/three": "^0.143.0",
"oimo": "^1.0.9",
"three": "^0.143.0",
"ts-loader": "^9.3.1",
"typescript": "^4.7.4",
"webpack": "^5.74.0",
"webpack-cli": "^4.10.0",
"webpack-dev-server": "^4.9.3"
}
}
yarn manifest:
No manifest
Lockfile:
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
# yarn lockfile v1
"@discoveryjs/json-ext@^0.5.0":
version "0.5.7"
resolved "http://npm.dui88.com:80/@discoveryjs%2fjson-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70"
integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==
"@jridgewell/gen-mapping@^0.3.0":
version "0.3.2"
resolved "http://npm.dui88.com:80/@jridgewell%2fgen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9"
integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==
dependencies:
"@jridgewell/set-array" "^1.0.1"
"@jridgewell/sourcemap-codec" "^1.4.10"
"@jridgewell/trace-mapping" "^0.3.9"
"@jridgewell/resolve-uri@^3.0.3":
version "3.1.0"
resolved "http://npm.dui88.com:80/@jridgewell%2fresolve-uri/-/resolve-uri-3.1.0.tgz#2203b118c157721addfe69d47b70465463066d78"
integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
"@jridgewell/set-array@^1.0.1":
version "1.1.2"
resolved "http://npm.dui88.com:80/@jridgewell%2fset-array/-/set-array-1.1.2.tgz#7c6cf998d6d20b914c0a55a91ae928ff25965e72"
integrity sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==
"@jridgewell/source-map@^0.3.2":
version "0.3.2"
resolved "http://npm.dui88.com:80/@jridgewell%2fsource-map/-/source-map-0.3.2.tgz#f45351aaed4527a298512ec72f81040c998580fb"
integrity sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==
dependencies:
"@jridgewell/gen-mapping" "^0.3.0"
"@jridgewell/trace-mapping" "^0.3.9"
"@jridgewell/sourcemap-codec@^1.4.10":
version "1.4.14"
resolved "http://npm.dui88.com:80/@jridgewell%2fsourcemap-codec/-/sourcemap-codec-1.4.14.tgz#add4c98d341472a289190b424efbdb096991bb24"
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
"@jridgewell/trace-mapping@^0.3.7", "@jridgewell/trace-mapping@^0.3.9":
version "0.3.14"
resolved "http://npm.dui88.com:80/@jridgewell%2ftrace-mapping/-/trace-mapping-0.3.14.tgz#b231a081d8f66796e475ad588a1ef473112701ed"
integrity sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==
dependencies:
"@jridgewell/resolve-uri" "^3.0.3"
"@jridgewell/sourcemap-codec" "^1.4.10"
"@leichtgewicht/ip-codec@^2.0.1":
version "2.0.4"
resolved "http://npm.dui88.com:80/@leichtgewicht%2fip-codec/-/ip-codec-2.0.4.tgz#b2ac626d6cb9c8718ab459166d4bb405b8ffa78b"
integrity sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==
"@types/body-parser@*":
version "1.19.2"
resolved "http://npm.dui88.com:80/@types%2fbody-parser/-/body-parser-1.19.2.tgz#aea2059e28b7658639081347ac4fab3de166e6f0"
integrity sha1-rqIFnii3ZYY5CBNHrE+rPeFm5vA=
dependencies:
"@types/connect" "*"
"@types/node" "*"
"@types/bonjour@^3.5.9":
version "3.5.10"
resolved "http://npm.dui88.com:80/@types%2fbonjour/-/bonjour-3.5.10.tgz#0f6aadfe00ea414edc86f5d106357cda9701e275"
integrity sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==
dependencies:
"@types/node" "*"
"@types/connect-history-api-fallback@^1.3.5":
version "1.3.5"
resolved "http://npm.dui88.com:80/@types%2fconnect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz#d1f7a8a09d0ed5a57aee5ae9c18ab9b803205dae"
integrity sha1-0feooJ0O1aV67lrpwYq5uAMgXa4=
dependencies:
"@types/express-serve-static-core" "*"
"@types/node" "*"
"@types/connect@*":
version "3.4.35"
resolved "http://npm.dui88.com:80/@types%2fconnect/-/connect-3.4.35.tgz#5fcf6ae445e4021d1fc2219a4873cc73a3bb2ad1"
integrity sha1-X89q5EXkAh0fwiGaSHPMc6O7KtE=
dependencies:
"@types/node" "*"
"@types/eslint-scope@^3.7.3":
version "3.7.4"
resolved "http://npm.dui88.com:80/@types%2feslint-scope/-/eslint-scope-3.7.4.tgz#37fc1223f0786c39627068a12e94d6e6fc61de16"
integrity sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==
dependencies:
"@types/eslint" "*"
"@types/estree" "*"
"@types/eslint@*":
version "8.4.5"
resolved "http://npm.dui88.com:80/@types%2feslint/-/eslint-8.4.5.tgz#acdfb7dd36b91cc5d812d7c093811a8f3d9b31e4"
integrity sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==
dependencies:
"@types/estree" "*"
"@types/json-schema" "*"
"@types/estree@*":
version "1.0.0"
resolved "http://npm.dui88.com:80/@types%2festree/-/estree-1.0.0.tgz#5fb2e536c1ae9bf35366eed879e827fa59ca41c2"
integrity sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==
"@types/estree@^0.0.51":
version "0.0.51"
resolved "http://npm.dui88.com:80/@types%2festree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40"
integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==
"@types/express-serve-static-core@*", "@types/express-serve-static-core@^4.17.18":
version "4.17.30"
resolved "http://npm.dui88.com:80/@types%2fexpress-serve-static-core/-/express-serve-static-core-4.17.30.tgz#0f2f99617fa8f9696170c46152ccf7500b34ac04"
integrity sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==
dependencies:
"@types/node" "*"
"@types/qs" "*"
"@types/range-parser" "*"
"@types/express@*", "@types/express@^4.17.13":
version "4.17.13"
resolved "http://npm.dui88.com:80/@types%2fexpress/-/express-4.17.13.tgz#a76e2995728999bab51a33fabce1d705a3709034"
integrity sha1-p24plXKJmbq1GjP6vOHXBaNwkDQ=
dependencies:
"@types/body-parser" "*"
"@types/express-serve-static-core" "^4.17.18"
"@types/qs" "*"
"@types/serve-static" "*"
"@types/http-proxy@^1.17.8":
version "1.17.9"
resolved "http://npm.dui88.com:80/@types%2fhttp-proxy/-/http-proxy-1.17.9.tgz#7f0e7931343761efde1e2bf48c40f02f3f75705a"
integrity sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==
dependencies:
"@types/node" "*"
"@types/json-schema@*", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9":
version "7.0.11"
resolved "http://npm.dui88.com:80/@types%2fjson-schema/-/json-schema-7.0.11.tgz#d421b6c527a3037f7c84433fd2c4229e016863d3"
integrity sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==
"@types/mime@*":
version "3.0.1"
resolved "http://npm.dui88.com:80/@types%2fmime/-/mime-3.0.1.tgz#5f8f2bca0a5863cb69bc0b0acd88c96cb1d4ae10"
integrity sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==
"@types/node@*":
version "18.6.5"
resolved "http://npm.dui88.com:80/@types%2fnode/-/node-18.6.5.tgz#06caea822caf9e59d5034b695186ee74154d2802"
integrity sha512-Xjt5ZGUa5WusGZJ4WJPbOT8QOqp6nDynVFRKcUt32bOgvXEoc6o085WNkYTMO7ifAj2isEfQQ2cseE+wT6jsRw==
"@types/qs@*":
version "6.9.7"
resolved "http://npm.dui88.com:80/@types%2fqs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb"
integrity sha1-Y7t9Bn2xB8weRXwwO8JdUR/r9ss=
"@types/range-parser@*":
version "1.2.4"
resolved "http://npm.dui88.com:80/@types%2frange-parser/-/range-parser-1.2.4.tgz#cd667bcfdd025213aafb7ca5915a932590acdcdc"
integrity sha1-zWZ7z90CUhOq+3ylkVqTJZCs3Nw=
"@types/retry@0.12.0":
version "0.12.0"
resolved "http://npm.dui88.com:80/@types%2fretry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d"
integrity sha1-KzXsz87n04zXKtmSMvvVi/+zyE0=
"@types/serve-index@^1.9.1":
version "1.9.1"
resolved "http://npm.dui88.com:80/@types%2fserve-index/-/serve-index-1.9.1.tgz#1b5e85370a192c01ec6cec4735cf2917337a6278"
integrity sha1-G16FNwoZLAHsbOxHNc8pFzN6Yng=
dependencies:
"@types/express" "*"
"@types/serve-static@*", "@types/serve-static@^1.13.10":
version "1.15.0"
resolved "http://npm.dui88.com:80/@types%2fserve-static/-/serve-static-1.15.0.tgz#c7930ff61afb334e121a9da780aac0d9b8f34155"
integrity sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==
dependencies:
"@types/mime" "*"
"@types/node" "*"
"@types/sockjs@^0.3.33":
version "0.3.33"
resolved "http://npm.dui88.com:80/@types%2fsockjs/-/sockjs-0.3.33.tgz#570d3a0b99ac995360e3136fd6045113b1bd236f"
integrity sha1-Vw06C5msmVNg4xNv1gRRE7G9I28=
dependencies:
"@types/node" "*"
"@types/three@^0.143.0":
version "0.143.0"
resolved "http://npm.dui88.com:80/@types%2fthree/-/three-0.143.0.tgz#686f1221c4c89d797713f0533d2f129afcc3572d"
integrity sha512-c5PonXOt8xk5q4ygmyjOX4Ec+FA7gwfdcMT/PveE9xrJs/0DDcf2lJkWrhEcmvx2ZefQCQBcogABnGqB0P4OsA==
dependencies:
"@types/webxr" "*"
"@types/webxr@*":
version "0.5.0"
resolved "http://npm.dui88.com:80/@types%2fwebxr/-/webxr-0.5.0.tgz#aae1cef3210d88fd4204f8c33385a0bbc4da07c9"
integrity sha512-IUMDPSXnYIbEO2IereEFcgcqfDREOgmbGqtrMpVPpACTU6pltYLwHgVkrnYv0XhWEcjio9sYEfIEzgn3c7nDqA==
"@types/ws@^8.5.1":
version "8.5.3"
resolved "http://npm.dui88.com:80/@types%2fws/-/ws-8.5.3.tgz#7d25a1ffbecd3c4f2d35068d0b283c037003274d"
integrity sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==
dependencies:
"@types/node" "*"
"@webassemblyjs/ast@1.11.1":
version "1.11.1"
resolved "http://npm.dui88.com:80/@webassemblyjs%2fast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7"
integrity sha1-K/12fq4aaZb0Mv9+jX/HVnnAtqc=
dependencies:
"@webassemblyjs/helper-numbers" "1.11.1"
"@webassemblyjs/helper-wasm-bytecode" "1.11.1"
"@webassemblyjs/floating-point-hex-parser@1.11.1":
version "1.11.1"
resolved "http://npm.dui88.com:80/@webassemblyjs%2ffloating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f"
integrity sha1-9sYacF8P16auyqToGY8j2dwXnk8=
"@webassemblyjs/helper-api-error@1.11.1":
version "1.11.1"
resolved "http://npm.dui88.com:80/@webassemblyjs%2fhelper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16"
integrity sha1-GmMZLYeI5cASgAump6RscFKI/RY=
"@webassemblyjs/helper-buffer@1.11.1":
version "1.11.1"
resolved "http://npm.dui88.com:80/@webassemblyjs%2fhelper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5"
integrity sha1-gyqQDrREiEzemnytRn+BUA9eWrU=
"@webassemblyjs/helper-numbers@1.11.1":
version "1.11.1"
resolved "http://npm.dui88.com:80/@webassemblyjs%2fhelper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae"
integrity sha1-ZNgdohn7u6HjvRv8dPboxOEKYq4=
dependencies:
"@webassemblyjs/floating-point-hex-parser" "1.11.1"
"@webassemblyjs/helper-api-error" "1.11.1"
"@xtuc/long" "4.2.2"
"@webassemblyjs/helper-wasm-bytecode@1.11.1":
version "1.11.1"
resolved "http://npm.dui88.com:80/@webassemblyjs%2fhelper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1"
integrity sha1-8ygkHkHnsZnQsgwY6IQpxEMyleE=
"@webassemblyjs/helper-wasm-section@1.11.1":
version "1.11.1"
resolved "http://npm.dui88.com:80/@webassemblyjs%2fhelper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a"
integrity sha1-Ie4GWntjXzGec48N1zv72igcCXo=
dependencies:
"@webassemblyjs/ast" "1.11.1"
"@webassemblyjs/helper-buffer" "1.11.1"
"@webassemblyjs/helper-wasm-bytecode" "1.11.1"
"@webassemblyjs/wasm-gen" "1.11.1"
"@webassemblyjs/ieee754@1.11.1":
version "1.11.1"
resolved "http://npm.dui88.com:80/@webassemblyjs%2fieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614"
integrity sha1-ljkp6bvQVwnn4SJDoJkYCBKZJhQ=
dependencies:
"@xtuc/ieee754" "^1.2.0"
"@webassemblyjs/leb128@1.11.1":
version "1.11.1"
resolved "http://npm.dui88.com:80/@webassemblyjs%2fleb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5"
integrity sha1-zoFLRVdOk9drrh+yZEq5zdlSeqU=
dependencies:
"@xtuc/long" "4.2.2"
"@webassemblyjs/utf8@1.11.1":
version "1.11.1"
resolved "http://npm.dui88.com:80/@webassemblyjs%2futf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff"
integrity sha1-0fi3ZDaefG5rrjUOhU3smlnwo/8=
"@webassemblyjs/wasm-edit@1.11.1":
version "1.11.1"
resolved "http://npm.dui88.com:80/@webassemblyjs%2fwasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6"
integrity sha1-rSBuv0v5WgWM6YgKjAksXeyBk9Y=
dependencies:
"@webassemblyjs/ast" "1.11.1"
"@webassemblyjs/helper-buffer" "1.11.1"
"@webassemblyjs/helper-wasm-bytecode" "1.11.1"
"@webassemblyjs/helper-wasm-section" "1.11.1"
"@webassemblyjs/wasm-gen" "1.11.1"
"@webassemblyjs/wasm-opt" "1.11.1"
"@webassemblyjs/wasm-parser" "1.11.1"
"@webassemblyjs/wast-printer" "1.11.1"
"@webassemblyjs/wasm-gen@1.11.1":
version "1.11.1"
resolved "http://npm.dui88.com:80/@webassemblyjs%2fwasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76"
integrity sha1-hsXqMEhJdZt9iMR6MvTwOa48j3Y=
dependencies:
"@webassemblyjs/ast" "1.11.1"
"@webassemblyjs/helper-wasm-bytecode" "1.11.1"
"@webassemblyjs/ieee754" "1.11.1"
"@webassemblyjs/leb128" "1.11.1"
"@webassemblyjs/utf8" "1.11.1"
"@webassemblyjs/wasm-opt@1.11.1":
version "1.11.1"
resolved "http://npm.dui88.com:80/@webassemblyjs%2fwasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2"
integrity sha1-ZXtMIgL0zzs0X4pMZGHIwkGJhfI=
dependencies:
"@webassemblyjs/ast" "1.11.1"
"@webassemblyjs/helper-buffer" "1.11.1"
"@webassemblyjs/wasm-gen" "1.11.1"
"@webassemblyjs/wasm-parser" "1.11.1"
"@webassemblyjs/wasm-parser@1.11.1":
version "1.11.1"
resolved "http://npm.dui88.com:80/@webassemblyjs%2fwasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199"
integrity sha1-hspzRTT0F+m9PGfHocddi+QfsZk=
dependencies:
"@webassemblyjs/ast" "1.11.1"
"@webassemblyjs/helper-api-error" "1.11.1"
"@webassemblyjs/helper-wasm-bytecode" "1.11.1"
"@webassemblyjs/ieee754" "1.11.1"
"@webassemblyjs/leb128" "1.11.1"
"@webassemblyjs/utf8" "1.11.1"
"@webassemblyjs/wast-printer@1.11.1":
version "1.11.1"
resolved "http://npm.dui88.com:80/@webassemblyjs%2fwast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0"
integrity sha1-0Mc77ajuxUJvEK6O9VzuXnCEwvA=
dependencies:
"@webassemblyjs/ast" "1.11.1"
"@xtuc/long" "4.2.2"
"@webpack-cli/configtest@^1.2.0":
version "1.2.0"
resolved "http://npm.dui88.com:80/@webpack-cli%2fconfigtest/-/configtest-1.2.0.tgz#7b20ce1c12533912c3b217ea68262365fa29a6f5"
integrity sha512-4FB8Tj6xyVkyqjj1OaTqCjXYULB9FMkqQ8yGrZjRDrYh0nOE+7Lhs45WioWQQMV+ceFlE368Ukhe6xdvJM9Egg==
"@webpack-cli/info@^1.5.0":
version "1.5.0"
resolved "http://npm.dui88.com:80/@webpack-cli%2finfo/-/info-1.5.0.tgz#6c78c13c5874852d6e2dd17f08a41f3fe4c261b1"
integrity sha512-e8tSXZpw2hPl2uMJY6fsMswaok5FdlGNRTktvFk2sD8RjH0hE2+XistawJx1vmKteh4NmGmNUrp+Tb2w+udPcQ==
dependencies:
envinfo "^7.7.3"
"@webpack-cli/serve@^1.7.0":
version "1.7.0"
resolved "http://npm.dui88.com:80/@webpack-cli%2fserve/-/serve-1.7.0.tgz#e1993689ac42d2b16e9194376cfb6753f6254db1"
integrity sha512-oxnCNGj88fL+xzV+dacXs44HcDwf1ovs3AuEzvP7mqXw7fQntqIhQ1BRmynh4qEKQSSSRSWVyXRjmTbZIX9V2Q==
"@xtuc/ieee754@^1.2.0":
version "1.2.0"
resolved "http://npm.dui88.com:80/@xtuc%2fieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790"
integrity sha1-7vAUoxRa5Hehy8AM0eVSM23Ot5A=
"@xtuc/long@4.2.2":
version "4.2.2"
resolved "http://npm.dui88.com:80/@xtuc%2flong/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d"
integrity sha1-0pHGpOl5ibXGHZrPOWrk/hM6cY0=
accepts@~1.3.4, accepts@~1.3.5, accepts@~1.3.8:
version "1.3.8"
resolved "http://npm.dui88.com:80/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e"
integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==
dependencies:
mime-types "~2.1.34"
negotiator "0.6.3"
acorn-import-assertions@^1.7.6:
version "1.8.0"
resolved "http://npm.dui88.com:80/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz#ba2b5939ce62c238db6d93d81c9b111b29b855e9"
integrity sha1-uitZOc5iwjjbbZPYHJsRGym4Vek=
acorn@^8.5.0, acorn@^8.7.1:
version "8.8.0"
resolved "http://npm.dui88.com:80/acorn/-/acorn-8.8.0.tgz#88c0187620435c7f6015803f5539dae05a9dbea8"
integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
ajv-formats@^2.1.1:
version "2.1.1"
resolved "http://npm.dui88.com:80/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520"
integrity sha1-bmaUAGWet0lzu/LjMycYCgmWtSA=
dependencies:
ajv "^8.0.0"
ajv-keywords@^3.5.2:
version "3.5.2"
resolved "http://npm.dui88.com:80/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d"
integrity sha1-MfKdpatuANHC0yms97WSlhTVAU0=
ajv-keywords@^5.0.0:
version "5.1.0"
resolved "http://npm.dui88.com:80/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16"
integrity sha1-adTThaRzPNvqtElkoRcKiPh/DhY=
dependencies:
fast-deep-equal "^3.1.3"
ajv@^6.12.5:
version "6.12.6"
resolved "http://npm.dui88.com:80/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4"
integrity sha1-uvWmLoArB9l3A0WG+MO69a3ybfQ=
dependencies:
fast-deep-equal "^3.1.1"
fast-json-stable-stringify "^2.0.0"
json-schema-traverse "^0.4.1"
uri-js "^4.2.2"
ajv@^8.0.0, ajv@^8.8.0:
version "8.11.0"
resolved "http://npm.dui88.com:80/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f"
integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==
dependencies:
fast-deep-equal "^3.1.1"
json-schema-traverse "^1.0.0"
require-from-string "^2.0.2"
uri-js "^4.2.2"
ansi-html-community@^0.0.8:
version "0.0.8"
resolved "http://npm.dui88.com:80/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41"
integrity sha1-afvE1sy+OD+XNpNK40w/gpDxv0E=
ansi-styles@^4.1.0:
version "4.3.0"
resolved "http://npm.dui88.com:80/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
integrity sha1-7dgDYornHATIWuegkG7a00tkiTc=
dependencies:
color-convert "^2.0.1"
anymatch@~3.1.2:
version "3.1.2"
resolved "http://npm.dui88.com:80/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716"
integrity sha1-wFV8CWrzLxBhmPT04qODU343hxY=
dependencies:
normalize-path "^3.0.0"
picomatch "^2.0.4"
array-flatten@1.1.1:
version "1.1.1"
resolved "http://npm.dui88.com:80/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2"
integrity sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=
array-flatten@^2.1.2:
version "2.1.2"
resolved "http://npm.dui88.com:80/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099"
integrity sha1-JO+AoowaiTYX4hSbDG0NeIKTsJk=
balanced-match@^1.0.0:
version "1.0.2"
resolved "http://npm.dui88.com:80/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
integrity sha1-6D46fj8wCzTLnYf2FfoMvzV2kO4=
batch@0.6.1:
version "0.6.1"
resolved "http://npm.dui88.com:80/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16"
integrity sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=
binary-extensions@^2.0.0:
version "2.2.0"
resolved "http://npm.dui88.com:80/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d"
integrity sha1-dfUC7q+f/eQvyYgpZFvk6na9ni0=
body-parser@1.20.0:
version "1.20.0"
resolved "http://npm.dui88.com:80/body-parser/-/body-parser-1.20.0.tgz#3de69bd89011c11573d7bfee6a64f11b6bd27cc5"
integrity sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==
dependencies:
bytes "3.1.2"
content-type "~1.0.4"
debug "2.6.9"
depd "2.0.0"
destroy "1.2.0"
http-errors "2.0.0"
iconv-lite "0.4.24"
on-finished "2.4.1"
qs "6.10.3"
raw-body "2.5.1"
type-is "~1.6.18"
unpipe "1.0.0"
bonjour-service@^1.0.11:
version "1.0.13"
resolved "http://npm.dui88.com:80/bonjour-service/-/bonjour-service-1.0.13.tgz#4ac003dc1626023252d58adf2946f57e5da450c1"
integrity sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==
dependencies:
array-flatten "^2.1.2"
dns-equal "^1.0.0"
fast-deep-equal "^3.1.3"
multicast-dns "^7.2.5"
brace-expansion@^1.1.7:
version "1.1.11"
resolved "http://npm.dui88.com:80/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd"
integrity sha1-PH/L9SnYcibz0vUrlm/1Jx60Qd0=
dependencies:
balanced-match "^1.0.0"
concat-map "0.0.1"
braces@^3.0.2, braces@~3.0.2:
version "3.0.2"
resolved "http://npm.dui88.com:80/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107"
integrity sha1-NFThpGLujVmeI23zNs2epPiv4Qc=
dependencies:
fill-range "^7.0.1"
browserslist@^4.14.5:
version "4.21.3"
resolved "http://npm.dui88.com:80/browserslist/-/browserslist-4.21.3.tgz#5df277694eb3c48bc5c4b05af3e8b7e09c5a6d1a"
integrity sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==
dependencies:
caniuse-lite "^1.0.30001370"
electron-to-chromium "^1.4.202"
node-releases "^2.0.6"
update-browserslist-db "^1.0.5"
buffer-from@^1.0.0:
version "1.1.2"
resolved "http://npm.dui88.com:80/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5"
integrity sha1-KxRqb9cugLT1XSVfNe1Zo6mkG9U=
bytes@3.0.0:
version "3.0.0"
resolved "http://npm.dui88.com:80/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048"
integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=
bytes@3.1.2:
version "3.1.2"
resolved "http://npm.dui88.com:80/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5"
integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
call-bind@^1.0.0:
version "1.0.2"
resolved "http://npm.dui88.com:80/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c"
integrity sha1-sdTonmiBGcPJqQOtMKuy9qkZvjw=
dependencies:
function-bind "^1.1.1"
get-intrinsic "^1.0.2"
caniuse-lite@^1.0.30001370:
version "1.0.30001374"
resolved "http://npm.dui88.com:80/caniuse-lite/-/caniuse-lite-1.0.30001374.tgz#3dab138e3f5485ba2e74bd13eca7fe1037ce6f57"
integrity sha512-mWvzatRx3w+j5wx/mpFN5v5twlPrabG8NqX2c6e45LCpymdoGqNvRkRutFUqpRTXKFQFNQJasvK0YT7suW6/Hw==
chalk@^4.1.0:
version "4.1.2"
resolved "http://npm.dui88.com:80/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
integrity sha1-qsTit3NKdAhnrrFr8CqtVWoeegE=
dependencies:
ansi-styles "^4.1.0"
supports-color "^7.1.0"
chokidar@^3.5.3:
version "3.5.3"
resolved "http://npm.dui88.com:80/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd"
integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==
dependencies:
anymatch "~3.1.2"
braces "~3.0.2"
glob-parent "~5.1.2"
is-binary-path "~2.1.0"
is-glob "~4.0.1"
normalize-path "~3.0.0"
readdirp "~3.6.0"
optionalDependencies:
fsevents "~2.3.2"
chrome-trace-event@^1.0.2:
version "1.0.3"
resolved "http://npm.dui88.com:80/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz#1015eced4741e15d06664a957dbbf50d041e26ac"
integrity sha1-EBXs7UdB4V0GZkqVfbv1DQQeJqw=
clone-deep@^4.0.1:
version "4.0.1"
resolved "http://npm.dui88.com:80/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387"
integrity sha1-wZ/Zvbv4WUK0/ZechNz31fB8I4c=
dependencies:
is-plain-object "^2.0.4"
kind-of "^6.0.2"
shallow-clone "^3.0.0"
color-convert@^2.0.1:
version "2.0.1"
resolved "http://npm.dui88.com:80/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
integrity sha1-ctOmjVmMm9s68q0ehPIdiWq9TeM=
dependencies:
color-name "~1.1.4"
color-name@~1.1.4:
version "1.1.4"
resolved "http://npm.dui88.com:80/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
integrity sha1-wqCah6y95pVD3m9j+jmVyCbFNqI=
colorette@^2.0.10, colorette@^2.0.14:
version "2.0.19"
resolved "http://npm.dui88.com:80/colorette/-/colorette-2.0.19.tgz#cdf044f47ad41a0f4b56b3a0d5b4e6e1a2d5a798"
integrity sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==
commander@^2.20.0:
version "2.20.3"
resolved "http://npm.dui88.com:80/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33"
integrity sha1-/UhehMA+tIgcIHIrpIA16FMa6zM=
commander@^7.0.0:
version "7.2.0"
resolved "http://npm.dui88.com:80/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
integrity sha1-o2y1fQtQHOEI5NIFWaFQo5HZerc=
compressible@~2.0.16:
version "2.0.18"
resolved "http://npm.dui88.com:80/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba"
integrity sha1-r1PMprBw1MPAdQ+9dyhqbXzEb7o=
dependencies:
mime-db ">= 1.43.0 < 2"
compression@^1.7.4:
version "1.7.4"
resolved "http://npm.dui88.com:80/compression/-/compression-1.7.4.tgz#95523eff170ca57c29a0ca41e6fe131f41e5bb8f"
integrity sha1-lVI+/xcMpXwpoMpB5v4TH0Hlu48=
dependencies:
accepts "~1.3.5"
bytes "3.0.0"
compressible "~2.0.16"
debug "2.6.9"
on-headers "~1.0.2"
safe-buffer "5.1.2"
vary "~1.1.2"
concat-map@0.0.1:
version "0.0.1"
resolved "http://npm.dui88.com:80/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
connect-history-api-fallback@^2.0.0:
version "2.0.0"
resolved "http://npm.dui88.com:80/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8"
integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==
content-disposition@0.5.4:
version "0.5.4"
resolved "http://npm.dui88.com:80/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe"
integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==
dependencies:
safe-buffer "5.2.1"
content-type@~1.0.4:
version "1.0.4"
resolved "http://npm.dui88.com:80/content-type/-/content-type-1.0.4.tgz#e138cc75e040c727b1966fe5e5f8c9aee256fe3b"
integrity sha1-4TjMdeBAxyexlm/l5fjJruJW/js=
cookie-signature@1.0.6:
version "1.0.6"
resolved "http://npm.dui88.com:80/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c"
integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw=
cookie@0.5.0:
version "0.5.0"
resolved "http://npm.dui88.com:80/cookie/-/cookie-0.5.0.tgz#d1f5d71adec6558c58f389987c366aa47e994f8b"
integrity sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==
core-util-is@~1.0.0:
version "1.0.3"
resolved "http://npm.dui88.com:80/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85"
integrity sha1-pgQtNjTCsn6TKPg3uWX6yDgI24U=
cross-spawn@^7.0.3:
version "7.0.3"
resolved "http://npm.dui88.com:80/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
integrity sha1-9zqFudXUHQRVUcF34ogtSshXKKY=
dependencies:
path-key "^3.1.0"
shebang-command "^2.0.0"
which "^2.0.1"
debug@2.6.9:
version "2.6.9"
resolved "http://npm.dui88.com:80/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
integrity sha1-XRKFFd8TT/Mn6QpMk/Tgd6U2NB8=
dependencies:
ms "2.0.0"
debug@^4.1.0:
version "4.3.4"
resolved "http://npm.dui88.com:80/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865"
integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==
dependencies:
ms "2.1.2"
default-gateway@^6.0.3:
version "6.0.3"
resolved "http://npm.dui88.com:80/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71"
integrity sha1-gZSUyIgFO9t0PtvzQ9bN9/KUOnE=
dependencies:
execa "^5.0.0"
define-lazy-prop@^2.0.0:
version "2.0.0"
resolved "http://npm.dui88.com:80/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f"
integrity sha1-P3rkIRKbyqrJvHSQXJigAJ7J7n8=
depd@2.0.0:
version "2.0.0"
resolved "http://npm.dui88.com:80/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df"
integrity sha1-tpYWPMdXVg0JzyLMj60Vcbeedt8=
depd@~1.1.2:
version "1.1.2"
resolved "http://npm.dui88.com:80/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9"
integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=
destroy@1.2.0:
version "1.2.0"
resolved "http://npm.dui88.com:80/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015"
integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==
detect-node@^2.0.4:
version "2.1.0"
resolved "http://npm.dui88.com:80/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1"
integrity sha1-yccHdaScPQO8LAbZpzvlUPl4+LE=
dns-equal@^1.0.0:
version "1.0.0"
resolved "http://npm.dui88.com:80/dns-equal/-/dns-equal-1.0.0.tgz#b39e7f1da6eb0a75ba9c17324b34753c47e0654d"
integrity sha1-s55/HabrCnW6nBcySzR1PEfgZU0=
dns-packet@^5.2.2:
version "5.4.0"
resolved "http://npm.dui88.com:80/dns-packet/-/dns-packet-5.4.0.tgz#1f88477cf9f27e78a213fb6d118ae38e759a879b"
integrity sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==
dependencies:
"@leichtgewicht/ip-codec" "^2.0.1"
ee-first@1.1.1:
version "1.1.1"
resolved "http://npm.dui88.com:80/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d"
integrity sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=
electron-to-chromium@^1.4.202:
version "1.4.212"
resolved "http://npm.dui88.com:80/electron-to-chromium/-/electron-to-chromium-1.4.212.tgz#20cd48e88288fd2428138c108804edb1961bf559"
integrity sha512-LjQUg1SpLj2GfyaPDVBUHdhmlDU1vDB4f0mJWSGkISoXQrn5/lH3ECPCuo2Bkvf6Y30wO+b69te+rZK/llZmjg==
encodeurl@~1.0.2:
version "1.0.2"
resolved "http://npm.dui88.com:80/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=
enhanced-resolve@^5.0.0, enhanced-resolve@^5.10.0:
version "5.10.0"
resolved "http://npm.dui88.com:80/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6"
integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.2.0"
envinfo@^7.7.3:
version "7.8.1"
resolved "http://npm.dui88.com:80/envinfo/-/envinfo-7.8.1.tgz#06377e3e5f4d379fea7ac592d5ad8927e0c4d475"
integrity sha1-Bjd+Pl9NN5/qesWS1a2JJ+DE1HU=
es-module-lexer@^0.9.0:
version "0.9.3"
resolved "http://npm.dui88.com:80/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19"
integrity sha1-bxPbAMw4QXE32vdDZvU1yOtDjxk=
escalade@^3.1.1:
version "3.1.1"
resolved "http://npm.dui88.com:80/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40"
integrity sha1-2M/ccACWXFoBdLSoLqpcBVJ0LkA=
escape-html@~1.0.3:
version "1.0.3"
resolved "http://npm.dui88.com:80/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
integrity sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=
eslint-scope@5.1.1:
version "5.1.1"
resolved "http://npm.dui88.com:80/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c"
integrity sha1-54blmmbLkrP2wfsNUIqrF0hI9Iw=
dependencies:
esrecurse "^4.3.0"
estraverse "^4.1.1"
esrecurse@^4.3.0:
version "4.3.0"
resolved "http://npm.dui88.com:80/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921"
integrity sha1-eteWTWeauyi+5yzsY3WLHF0smSE=
dependencies:
estraverse "^5.2.0"
estraverse@^4.1.1:
version "4.3.0"
resolved "http://npm.dui88.com:80/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d"
integrity sha1-OYrT88WiSUi+dyXoPRGn3ijNvR0=
estraverse@^5.2.0:
version "5.3.0"
resolved "http://npm.dui88.com:80/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123"
integrity sha1-LupSkHAvJquP5TcDcP+GyWXSESM=
etag@~1.8.1:
version "1.8.1"
resolved "http://npm.dui88.com:80/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
integrity sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=
eventemitter3@^4.0.0:
version "4.0.7"
resolved "http://npm.dui88.com:80/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f"
integrity sha1-Lem2j2Uo1WRO9cWVJqG0oHMGFp8=
events@^3.2.0:
version "3.3.0"
resolved "http://npm.dui88.com:80/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400"
integrity sha1-Mala0Kkk4tLEGagTrrLE6HjqdAA=
execa@^5.0.0:
version "5.1.1"
resolved "http://npm.dui88.com:80/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd"
integrity sha1-+ArZy/Qpj3vR1MlVXCHpN0HEEd0=
dependencies:
cross-spawn "^7.0.3"
get-stream "^6.0.0"
human-signals "^2.1.0"
is-stream "^2.0.0"
merge-stream "^2.0.0"
npm-run-path "^4.0.1"
onetime "^5.1.2"
signal-exit "^3.0.3"
strip-final-newline "^2.0.0"
express@^4.17.3:
version "4.18.1"
resolved "http://npm.dui88.com:80/express/-/express-4.18.1.tgz#7797de8b9c72c857b9cd0e14a5eea80666267caf"
integrity sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==
dependencies:
accepts "~1.3.8"
array-flatten "1.1.1"
body-parser "1.20.0"
content-disposition "0.5.4"
content-type "~1.0.4"
cookie "0.5.0"
cookie-signature "1.0.6"
debug "2.6.9"
depd "2.0.0"
encodeurl "~1.0.2"
escape-html "~1.0.3"
etag "~1.8.1"
finalhandler "1.2.0"
fresh "0.5.2"
http-errors "2.0.0"
merge-descriptors "1.0.1"
methods "~1.1.2"
on-finished "2.4.1"
parseurl "~1.3.3"
path-to-regexp "0.1.7"
proxy-addr "~2.0.7"
qs "6.10.3"
range-parser "~1.2.1"
safe-buffer "5.2.1"
send "0.18.0"
serve-static "1.15.0"
setprototypeof "1.2.0"
statuses "2.0.1"
type-is "~1.6.18"
utils-merge "1.0.1"
vary "~1.1.2"
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
version "3.1.3"
resolved "http://npm.dui88.com:80/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525"
integrity sha1-On1WtVnWy8PrUSMlJE5hmmXGxSU=
fast-json-stable-stringify@^2.0.0:
version "2.1.0"
resolved "http://npm.dui88.com:80/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633"
integrity sha1-h0v2nG9ATCtdmcSBNBOZ/VWJJjM=
fastest-levenshtein@^1.0.12:
version "1.0.16"
resolved "http://npm.dui88.com:80/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz#210e61b6ff181de91ea9b3d1b84fdedd47e034e5"
integrity sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==
faye-websocket@^0.11.3:
version "0.11.4"
resolved "http://npm.dui88.com:80/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da"
integrity sha1-fw2Sdc/dhqHJY9yLZfzEUe3Lsdo=
dependencies:
websocket-driver ">=0.5.1"
fill-range@^7.0.1:
version "7.0.1"
resolved "http://npm.dui88.com:80/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40"
integrity sha1-GRmmp8df44ssfHflGYU12prN2kA=
dependencies:
to-regex-range "^5.0.1"
finalhandler@1.2.0:
version "1.2.0"
resolved "http://npm.dui88.com:80/finalhandler/-/finalhandler-1.2.0.tgz#7d23fe5731b207b4640e4fcd00aec1f9207a7b32"
integrity sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==
dependencies:
debug "2.6.9"
encodeurl "~1.0.2"
escape-html "~1.0.3"
on-finished "2.4.1"
parseurl "~1.3.3"
statuses "2.0.1"
unpipe "~1.0.0"
find-up@^4.0.0:
version "4.1.0"
resolved "http://npm.dui88.com:80/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19"
integrity sha1-l6/n1s3AvFkoWEt8jXsW6KmqXRk=
dependencies:
locate-path "^5.0.0"
path-exists "^4.0.0"
follow-redirects@^1.0.0:
version "1.15.1"
resolved "http://npm.dui88.com:80/follow-redirects/-/follow-redirects-1.15.1.tgz#0ca6a452306c9b276e4d3127483e29575e207ad5"
integrity sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==
forwarded@0.2.0:
version "0.2.0"
resolved "http://npm.dui88.com:80/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811"
integrity sha1-ImmTZCiq1MFcfr6XeahL8LKoGBE=
fresh@0.5.2:
version "0.5.2"
resolved "http://npm.dui88.com:80/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7"
integrity sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=
fs-monkey@^1.0.3:
version "1.0.3"
resolved "http://npm.dui88.com:80/fs-monkey/-/fs-monkey-1.0.3.tgz#ae3ac92d53bb328efe0e9a1d9541f6ad8d48e2d3"
integrity sha1-rjrJLVO7Mo7+DpodlUH2rY1I4tM=
fs.realpath@^1.0.0:
version "1.0.0"
resolved "http://npm.dui88.com:80/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f"
integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8=
fsevents@~2.3.2:
version "2.3.2"
resolved "http://npm.dui88.com:80/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a"
integrity sha1-ilJveLj99GI7cJ4Ll1xSwkwC/Ro=
function-bind@^1.1.1:
version "1.1.1"
resolved "http://npm.dui88.com:80/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d"
integrity sha1-pWiZ0+o8m6uHS7l3O3xe3pL0iV0=
get-intrinsic@^1.0.2:
version "1.1.2"
resolved "http://npm.dui88.com:80/get-intrinsic/-/get-intrinsic-1.1.2.tgz#336975123e05ad0b7ba41f152ee4aadbea6cf598"
integrity sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==
dependencies:
function-bind "^1.1.1"
has "^1.0.3"
has-symbols "^1.0.3"
get-stream@^6.0.0:
version "6.0.1"
resolved "http://npm.dui88.com:80/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7"
integrity sha1-omLY7vZ6ztV8KFKtYWdSakPL97c=
glob-parent@~5.1.2:
version "5.1.2"
resolved "http://npm.dui88.com:80/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
integrity sha1-hpgyxYA0/mikCTwX3BXoNA2EAcQ=
dependencies:
is-glob "^4.0.1"
glob-to-regexp@^0.4.1:
version "0.4.1"
resolved "http://npm.dui88.com:80/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e"
integrity sha1-x1KXCHyFG5pXi9IX3VmpL1n+VG4=
glob@^7.1.3:
version "7.2.3"
resolved "http://npm.dui88.com:80/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b"
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
inherits "2"
minimatch "^3.1.1"
once "^1.3.0"
path-is-absolute "^1.0.0"
graceful-fs@^4.1.2, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9:
version "4.2.10"
resolved "http://npm.dui88.com:80/graceful-fs/-/graceful-fs-4.2.10.tgz#147d3a006da4ca3ce14728c7aefc287c367d7a6c"
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
handle-thing@^2.0.0:
version "2.0.1"
resolved "http://npm.dui88.com:80/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e"
integrity sha1-hX95zjWVgMNA1DCBzGSJcNC7I04=
has-flag@^4.0.0:
version "4.0.0"
resolved "http://npm.dui88.com:80/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
integrity sha1-lEdx/ZyByBJlxNaUGGDaBrtZR5s=
has-symbols@^1.0.3:
version "1.0.3"
resolved "http://npm.dui88.com:80/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8"
integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==
has@^1.0.3:
version "1.0.3"
resolved "http://npm.dui88.com:80/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796"
integrity sha1-ci18v8H2qoJB8W3YFOAR4fQeh5Y=
dependencies:
function-bind "^1.1.1"
hpack.js@^2.1.6:
version "2.1.6"
resolved "http://npm.dui88.com:80/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2"
integrity sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=
dependencies:
inherits "^2.0.1"
obuf "^1.0.0"
readable-stream "^2.0.1"
wbuf "^1.1.0"
html-entities@^2.3.2:
version "2.3.3"
resolved "http://npm.dui88.com:80/html-entities/-/html-entities-2.3.3.tgz#117d7626bece327fc8baace8868fa6f5ef856e46"
integrity sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==
http-deceiver@^1.2.7:
version "1.2.7"
resolved "http://npm.dui88.com:80/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87"
integrity sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=
http-errors@2.0.0:
version "2.0.0"
resolved "http://npm.dui88.com:80/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3"
integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
dependencies:
depd "2.0.0"
inherits "2.0.4"
setprototypeof "1.2.0"
statuses "2.0.1"
toidentifier "1.0.1"
http-errors@~1.6.2:
version "1.6.3"
resolved "http://npm.dui88.com:80/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d"
integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=
dependencies:
depd "~1.1.2"
inherits "2.0.3"
setprototypeof "1.1.0"
statuses ">= 1.4.0 < 2"
http-parser-js@>=0.5.1:
version "0.5.8"
resolved "http://npm.dui88.com:80/http-parser-js/-/http-parser-js-0.5.8.tgz#af23090d9ac4e24573de6f6aecc9d84a48bf20e3"
integrity sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==
http-proxy-middleware@^2.0.3:
version "2.0.6"
resolved "http://npm.dui88.com:80/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz#e1a4dd6979572c7ab5a4e4b55095d1f32a74963f"
integrity sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==
dependencies:
"@types/http-proxy" "^1.17.8"
http-proxy "^1.18.1"
is-glob "^4.0.1"
is-plain-obj "^3.0.0"
micromatch "^4.0.2"
http-proxy@^1.18.1:
version "1.18.1"
resolved "http://npm.dui88.com:80/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549"
integrity sha1-QBVB8FNIhLv5UmAzTnL4juOXZUk=
dependencies:
eventemitter3 "^4.0.0"
follow-redirects "^1.0.0"
requires-port "^1.0.0"
human-signals@^2.1.0:
version "2.1.0"
resolved "http://npm.dui88.com:80/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0"
integrity sha1-3JH8ukLk0G5Kuu0zs+ejwC9RTqA=
iconv-lite@0.4.24:
version "0.4.24"
resolved "http://npm.dui88.com:80/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b"
integrity sha1-ICK0sl+93CHS9SSXSkdKr+czkIs=
dependencies:
safer-buffer ">= 2.1.2 < 3"
import-local@^3.0.2:
version "3.1.0"
resolved "http://npm.dui88.com:80/import-local/-/import-local-3.1.0.tgz#b4479df8a5fd44f6cdce24070675676063c95cb4"
integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==
dependencies:
pkg-dir "^4.2.0"
resolve-cwd "^3.0.0"
inflight@^1.0.4:
version "1.0.6"
resolved "http://npm.dui88.com:80/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9"
integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=
dependencies:
once "^1.3.0"
wrappy "1"
inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.3:
version "2.0.4"
resolved "http://npm.dui88.com:80/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
integrity sha1-D6LGT5MpF8NDOg3tVTY6rjdBa3w=
inherits@2.0.3:
version "2.0.3"
resolved "http://npm.dui88.com:80/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
interpret@^2.2.0:
version "2.2.0"
resolved "http://npm.dui88.com:80/interpret/-/interpret-2.2.0.tgz#1a78a0b5965c40a5416d007ad6f50ad27c417df9"
integrity sha1-GnigtZZcQKVBbQB61vUK0nxBffk=
ipaddr.js@1.9.1:
version "1.9.1"
resolved "http://npm.dui88.com:80/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3"
integrity sha1-v/OFQ+64mEglB5/zoqjmy9RngbM=
ipaddr.js@^2.0.1:
version "2.0.1"
resolved "http://npm.dui88.com:80/ipaddr.js/-/ipaddr.js-2.0.1.tgz#eca256a7a877e917aeb368b0a7497ddf42ef81c0"
integrity sha1-7KJWp6h36Reus2iwp0l930LvgcA=
is-binary-path@~2.1.0:
version "2.1.0"
resolved "http://npm.dui88.com:80/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09"
integrity sha1-6h9/O4DwZCNug0cPhsCcJU+0Wwk=
dependencies:
binary-extensions "^2.0.0"
is-core-module@^2.9.0:
version "2.10.0"
resolved "http://npm.dui88.com:80/is-core-module/-/is-core-module-2.10.0.tgz#9012ede0a91c69587e647514e1d5277019e728ed"
integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==
dependencies:
has "^1.0.3"
is-docker@^2.0.0, is-docker@^2.1.1:
version "2.2.1"
resolved "http://npm.dui88.com:80/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa"
integrity sha1-M+6r4jz+hvFL3kQIoCwM+4U6zao=
is-extglob@^2.1.1:
version "2.1.1"
resolved "http://npm.dui88.com:80/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=
is-glob@^4.0.1, is-glob@~4.0.1:
version "4.0.3"
resolved "http://npm.dui88.com:80/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
integrity sha1-ZPYeQsu7LuwgcanawLKLoeZdUIQ=
dependencies:
is-extglob "^2.1.1"
is-number@^7.0.0:
version "7.0.0"
resolved "http://npm.dui88.com:80/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
integrity sha1-dTU0W4lnNNX4DE0GxQlVUnoU8Ss=
is-plain-obj@^3.0.0:
version "3.0.0"
resolved "http://npm.dui88.com:80/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7"
integrity sha1-r28uoUrFpkYYOlu9tbqrvBVq2dc=
is-plain-object@^2.0.4:
version "2.0.4"
resolved "http://npm.dui88.com:80/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
integrity sha1-LBY7P6+xtgbZ0Xko8FwqHDjgdnc=
dependencies:
isobject "^3.0.1"
is-stream@^2.0.0:
version "2.0.1"
resolved "http://npm.dui88.com:80/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077"
integrity sha1-+sHj1TuXrVqdCunO8jifWBClwHc=
is-wsl@^2.2.0:
version "2.2.0"
resolved "http://npm.dui88.com:80/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271"
integrity sha1-dKTHbnfKn9P5MvKQwX6jJs0VcnE=
dependencies:
is-docker "^2.0.0"
isarray@~1.0.0:
version "1.0.0"
resolved "http://npm.dui88.com:80/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=
isexe@^2.0.0:
version "2.0.0"
resolved "http://npm.dui88.com:80/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=
isobject@^3.0.1:
version "3.0.1"
resolved "http://npm.dui88.com:80/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8=
jest-worker@^27.4.5:
version "27.5.1"
resolved "http://npm.dui88.com:80/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0"
integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==
dependencies:
"@types/node" "*"
merge-stream "^2.0.0"
supports-color "^8.0.0"
json-parse-even-better-errors@^2.3.1:
version "2.3.1"
resolved "http://npm.dui88.com:80/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d"
integrity sha1-fEeAWpQxmSjgV3dAXcEuH3pO4C0=
json-schema-traverse@^0.4.1:
version "0.4.1"
resolved "http://npm.dui88.com:80/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660"
integrity sha1-afaofZUTq4u4/mO9sJecRI5oRmA=
json-schema-traverse@^1.0.0:
version "1.0.0"
resolved "http://npm.dui88.com:80/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2"
integrity sha1-rnvLNlard6c7pcSb9lTzjmtoYOI=
kind-of@^6.0.2:
version "6.0.3"
resolved "http://npm.dui88.com:80/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
integrity sha1-B8BQNKbDSfoG4k+jWqdttFgM5N0=
loader-runner@^4.2.0:
version "4.3.0"
resolved "http://npm.dui88.com:80/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1"
integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==
locate-path@^5.0.0:
version "5.0.0"
resolved "http://npm.dui88.com:80/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0"
integrity sha1-Gvujlq/WdqbUJQTQpno6frn2KqA=
dependencies:
p-locate "^4.1.0"
lru-cache@^6.0.0:
version "6.0.0"
resolved "http://npm.dui88.com:80/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94"
integrity sha1-bW/mVw69lqr5D8rR2vo7JWbbOpQ=
dependencies:
yallist "^4.0.0"
media-typer@0.3.0:
version "0.3.0"
resolved "http://npm.dui88.com:80/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=
memfs@^3.4.3:
version "3.4.7"
resolved "http://npm.dui88.com:80/memfs/-/memfs-3.4.7.tgz#e5252ad2242a724f938cb937e3c4f7ceb1f70e5a"
integrity sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==
dependencies:
fs-monkey "^1.0.3"
merge-descriptors@1.0.1:
version "1.0.1"
resolved "http://npm.dui88.com:80/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
integrity sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=
merge-stream@^2.0.0:
version "2.0.0"
resolved "http://npm.dui88.com:80/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60"
integrity sha1-UoI2KaFN0AyXcPtq1H3GMQ8sH2A=
methods@~1.1.2:
version "1.1.2"
resolved "http://npm.dui88.com:80/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee"
integrity sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=
micromatch@^4.0.0, micromatch@^4.0.2:
version "4.0.5"
resolved "http://npm.dui88.com:80/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6"
integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==
dependencies:
braces "^3.0.2"
picomatch "^2.3.1"
mime-db@1.52.0, "mime-db@>= 1.43.0 < 2":
version "1.52.0"
resolved "http://npm.dui88.com:80/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.24, mime-types@~2.1.34:
version "2.1.35"
resolved "http://npm.dui88.com:80/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
dependencies:
mime-db "1.52.0"
mime@1.6.0:
version "1.6.0"
resolved "http://npm.dui88.com:80/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
integrity sha1-Ms2eXGRVO9WNGaVor0Uqz/BJgbE=
mimic-fn@^2.1.0:
version "2.1.0"
resolved "http://npm.dui88.com:80/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b"
integrity sha1-ftLCzMyvhNP/y3pptXcR/CCDQBs=
minimalistic-assert@^1.0.0:
version "1.0.1"
resolved "http://npm.dui88.com:80/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7"
integrity sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=
minimatch@^3.1.1:
version "3.1.2"
resolved "http://npm.dui88.com:80/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b"
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
dependencies:
brace-expansion "^1.1.7"
ms@2.0.0:
version "2.0.0"
resolved "http://npm.dui88.com:80/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=
ms@2.1.2:
version "2.1.2"
resolved "http://npm.dui88.com:80/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009"
integrity sha1-0J0fNXtEP0kzgqjrPM0YOHKuYAk=
ms@2.1.3:
version "2.1.3"
resolved "http://npm.dui88.com:80/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
integrity sha1-V0yBOM4dK1hh8LRFedut1gxmFbI=
multicast-dns@^7.2.5:
version "7.2.5"
resolved "http://npm.dui88.com:80/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced"
integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==
dependencies:
dns-packet "^5.2.2"
thunky "^1.0.2"
negotiator@0.6.3:
version "0.6.3"
resolved "http://npm.dui88.com:80/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd"
integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==
neo-async@^2.6.2:
version "2.6.2"
resolved "http://npm.dui88.com:80/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha1-tKr7k+OustgXTKU88WOrfXMIMF8=
node-forge@^1:
version "1.3.1"
resolved "http://npm.dui88.com:80/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3"
integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==
node-releases@^2.0.6:
version "2.0.6"
resolved "http://npm.dui88.com:80/node-releases/-/node-releases-2.0.6.tgz#8a7088c63a55e493845683ebf3c828d8c51c5503"
integrity sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==
normalize-path@^3.0.0, normalize-path@~3.0.0:
version "3.0.0"
resolved "http://npm.dui88.com:80/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65"
integrity sha1-Dc1p/yOhybEf0JeDFmRKA4ghamU=
npm-run-path@^4.0.1:
version "4.0.1"
resolved "http://npm.dui88.com:80/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea"
integrity sha1-t+zR5e1T2o43pV4cImnguX7XSOo=
dependencies:
path-key "^3.0.0"
object-inspect@^1.9.0:
version "1.12.2"
resolved "http://npm.dui88.com:80/object-inspect/-/object-inspect-1.12.2.tgz#c0641f26394532f28ab8d796ab954e43c009a8ea"
integrity sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==
obuf@^1.0.0, obuf@^1.1.2:
version "1.1.2"
resolved "http://npm.dui88.com:80/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e"
integrity sha1-Cb6jND1BhZ69RGKS0RydTbYZCE4=
oimo@^1.0.9:
version "1.0.9"
resolved "http://npm.dui88.com:80/oimo/-/oimo-1.0.9.tgz#0b592e361c799103fdb04fb3be1264245ef6884b"
integrity sha1-C1kuNhx5kQP9sE+zvhJkJF72iEs=
on-finished@2.4.1:
version "2.4.1"
resolved "http://npm.dui88.com:80/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f"
integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
dependencies:
ee-first "1.1.1"
on-headers@~1.0.2:
version "1.0.2"
resolved "http://npm.dui88.com:80/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
integrity sha1-dysK5qqlJcOZ5Imt+tkMQD6zwo8=
once@^1.3.0:
version "1.4.0"
resolved "http://npm.dui88.com:80/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1"
integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E=
dependencies:
wrappy "1"
onetime@^5.1.2:
version "5.1.2"
resolved "http://npm.dui88.com:80/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e"
integrity sha1-0Oluu1awdHbfHdnEgG5SN5hcpF4=
dependencies:
mimic-fn "^2.1.0"
open@^8.0.9:
version "8.4.0"
resolved "http://npm.dui88.com:80/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8"
integrity sha1-NFMhrhj4E4+CVlqRD9xrOejCRPg=
dependencies:
define-lazy-prop "^2.0.0"
is-docker "^2.1.1"
is-wsl "^2.2.0"
p-limit@^2.2.0:
version "2.3.0"
resolved "http://npm.dui88.com:80/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1"
integrity sha1-PdM8ZHohT9//2DWTPrCG2g3CHbE=
dependencies:
p-try "^2.0.0"
p-locate@^4.1.0:
version "4.1.0"
resolved "http://npm.dui88.com:80/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07"
integrity sha1-o0KLtwiLOmApL2aRkni3wpetTwc=
dependencies:
p-limit "^2.2.0"
p-retry@^4.5.0:
version "4.6.2"
resolved "http://npm.dui88.com:80/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16"
integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==
dependencies:
"@types/retry" "0.12.0"
retry "^0.13.1"
p-try@^2.0.0:
version "2.2.0"
resolved "http://npm.dui88.com:80/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6"
integrity sha1-yyhoVA4xPWHeWPr741zpAE1VQOY=
parseurl@~1.3.2, parseurl@~1.3.3:
version "1.3.3"
resolved "http://npm.dui88.com:80/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4"
integrity sha1-naGee+6NEt/wUT7Vt2lXeTvC6NQ=
path-exists@^4.0.0:
version "4.0.0"
resolved "http://npm.dui88.com:80/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3"
integrity sha1-UTvb4tO5XXdi6METfvoZXGxhtbM=
path-is-absolute@^1.0.0:
version "1.0.1"
resolved "http://npm.dui88.com:80/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f"
integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
path-key@^3.0.0, path-key@^3.1.0:
version "3.1.1"
resolved "http://npm.dui88.com:80/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
integrity sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=
path-parse@^1.0.7:
version "1.0.7"
resolved "http://npm.dui88.com:80/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735"
integrity sha1-+8EUtgykKzDZ2vWFjkvWi77bZzU=
path-to-regexp@0.1.7:
version "0.1.7"
resolved "http://npm.dui88.com:80/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
integrity sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=
picocolors@^1.0.0:
version "1.0.0"
resolved "http://npm.dui88.com:80/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c"
integrity sha1-y1vcdP8/UYkiNur3nWi8RFZKuBw=
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.3.1:
version "2.3.1"
resolved "http://npm.dui88.com:80/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
pkg-dir@^4.2.0:
version "4.2.0"
resolved "http://npm.dui88.com:80/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3"
integrity sha1-8JkTPfft5CLoHR2ESCcO6z5CYfM=
dependencies:
find-up "^4.0.0"
process-nextick-args@~2.0.0:
version "2.0.1"
resolved "http://npm.dui88.com:80/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2"
integrity sha1-eCDZsWEgzFXKmud5JoCufbptf+I=
proxy-addr@~2.0.7:
version "2.0.7"
resolved "http://npm.dui88.com:80/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025"
integrity sha1-8Z/mnOqzEe65S0LnDowgcPm6ECU=
dependencies:
forwarded "0.2.0"
ipaddr.js "1.9.1"
punycode@^2.1.0:
version "2.1.1"
resolved "http://npm.dui88.com:80/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec"
integrity sha1-tYsBCsQMIsVldhbI0sLALHv0eew=
qs@6.10.3:
version "6.10.3"
resolved "http://npm.dui88.com:80/qs/-/qs-6.10.3.tgz#d6cde1b2ffca87b5aa57889816c5f81535e22e8e"
integrity sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==
dependencies:
side-channel "^1.0.4"
randombytes@^2.1.0:
version "2.1.0"
resolved "http://npm.dui88.com:80/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a"
integrity sha1-32+ENy8CcNxlzfYpE0mrekc9Tyo=
dependencies:
safe-buffer "^5.1.0"
range-parser@^1.2.1, range-parser@~1.2.1:
version "1.2.1"
resolved "http://npm.dui88.com:80/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031"
integrity sha1-PPNwI9GZ4cJNGlW4SADC8+ZGgDE=
raw-body@2.5.1:
version "2.5.1"
resolved "http://npm.dui88.com:80/raw-body/-/raw-body-2.5.1.tgz#fe1b1628b181b700215e5fd42389f98b71392857"
integrity sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==
dependencies:
bytes "3.1.2"
http-errors "2.0.0"
iconv-lite "0.4.24"
unpipe "1.0.0"
readable-stream@^2.0.1:
version "2.3.7"
resolved "http://npm.dui88.com:80/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57"
integrity sha1-Hsoc9xGu+BTAT2IlKjamL2yyO1c=
dependencies:
core-util-is "~1.0.0"
inherits "~2.0.3"
isarray "~1.0.0"
process-nextick-args "~2.0.0"
safe-buffer "~5.1.1"
string_decoder "~1.1.1"
util-deprecate "~1.0.1"
readable-stream@^3.0.6:
version "3.6.0"
resolved "http://npm.dui88.com:80/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198"
integrity sha1-M3u9o63AcGvT4CRCaihtS0sskZg=
dependencies:
inherits "^2.0.3"
string_decoder "^1.1.1"
util-deprecate "^1.0.1"
readdirp@~3.6.0:
version "3.6.0"
resolved "http://npm.dui88.com:80/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7"
integrity sha1-dKNwvYVxFuJFspzJc0DNQxoCpsc=
dependencies:
picomatch "^2.2.1"
rechoir@^0.7.0:
version "0.7.1"
resolved "http://npm.dui88.com:80/rechoir/-/rechoir-0.7.1.tgz#9478a96a1ca135b5e88fc027f03ee92d6c645686"
integrity sha1-lHipahyhNbXoj8An8D7pLWxkVoY=
dependencies:
resolve "^1.9.0"
require-from-string@^2.0.2:
version "2.0.2"
resolved "http://npm.dui88.com:80/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909"
integrity sha1-iaf92TgmEmcxjq/hT5wy5ZjDaQk=
requires-port@^1.0.0:
version "1.0.0"
resolved "http://npm.dui88.com:80/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff"
integrity sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=
resolve-cwd@^3.0.0:
version "3.0.0"
resolved "http://npm.dui88.com:80/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d"
integrity sha1-DwB18bslRHZs9zumpuKt/ryxPy0=
dependencies:
resolve-from "^5.0.0"
resolve-from@^5.0.0:
version "5.0.0"
resolved "http://npm.dui88.com:80/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69"
integrity sha1-w1IlhD3493bfIcV1V7wIfp39/Gk=
resolve@^1.9.0:
version "1.22.1"
resolved "http://npm.dui88.com:80/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177"
integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
dependencies:
is-core-module "^2.9.0"
path-parse "^1.0.7"
supports-preserve-symlinks-flag "^1.0.0"
retry@^0.13.1:
version "0.13.1"
resolved "http://npm.dui88.com:80/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658"
integrity sha1-GFsVh6z2eRnWOzVzSeA1N7JIRlg=
rimraf@^3.0.2:
version "3.0.2"
resolved "http://npm.dui88.com:80/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a"
integrity sha1-8aVAK6YiCtUswSgrrBrjqkn9Bho=
dependencies:
glob "^7.1.3"
safe-buffer@5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
version "5.1.2"
resolved "http://npm.dui88.com:80/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d"
integrity sha1-mR7GnSluAxN0fVm9/St0XDX4go0=
safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
version "5.2.1"
resolved "http://npm.dui88.com:80/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
integrity sha1-Hq+fqb2x/dTsdfWPnNtOa3gn7sY=
"safer-buffer@>= 2.1.2 < 3":
version "2.1.2"
resolved "http://npm.dui88.com:80/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a"
integrity sha1-RPoWGwGHuVSd2Eu5GAL5vYOFzWo=
schema-utils@^3.1.0, schema-utils@^3.1.1:
version "3.1.1"
resolved "http://npm.dui88.com:80/schema-utils/-/schema-utils-3.1.1.tgz#bc74c4b6b6995c1d88f76a8b77bea7219e0c8281"
integrity sha1-vHTEtraZXB2I92qLd76nIZ4MgoE=
dependencies:
"@types/json-schema" "^7.0.8"
ajv "^6.12.5"
ajv-keywords "^3.5.2"
schema-utils@^4.0.0:
version "4.0.0"
resolved "http://npm.dui88.com:80/schema-utils/-/schema-utils-4.0.0.tgz#60331e9e3ae78ec5d16353c467c34b3a0a1d3df7"
integrity sha1-YDMenjrnjsXRY1PEZ8NLOgodPfc=
dependencies:
"@types/json-schema" "^7.0.9"
ajv "^8.8.0"
ajv-formats "^2.1.1"
ajv-keywords "^5.0.0"
select-hose@^2.0.0:
version "2.0.0"
resolved "http://npm.dui88.com:80/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca"
integrity sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=
selfsigned@^2.0.1:
version "2.0.1"
resolved "http://npm.dui88.com:80/selfsigned/-/selfsigned-2.0.1.tgz#8b2df7fa56bf014d19b6007655fff209c0ef0a56"
integrity sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==
dependencies:
node-forge "^1"
semver@^7.3.4:
version "7.3.7"
resolved "http://npm.dui88.com:80/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f"
integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
dependencies:
lru-cache "^6.0.0"
send@0.18.0:
version "0.18.0"
resolved "http://npm.dui88.com:80/send/-/send-0.18.0.tgz#670167cc654b05f5aa4a767f9113bb371bc706be"
integrity sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==
dependencies:
debug "2.6.9"
depd "2.0.0"
destroy "1.2.0"
encodeurl "~1.0.2"
escape-html "~1.0.3"
etag "~1.8.1"
fresh "0.5.2"
http-errors "2.0.0"
mime "1.6.0"
ms "2.1.3"
on-finished "2.4.1"
range-parser "~1.2.1"
statuses "2.0.1"
serialize-javascript@^6.0.0:
version "6.0.0"
resolved "http://npm.dui88.com:80/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8"
integrity sha1-765diPRdeSQUHai1w6en5mP+/rg=
dependencies:
randombytes "^2.1.0"
serve-index@^1.9.1:
version "1.9.1"
resolved "http://npm.dui88.com:80/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239"
integrity sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=
dependencies:
accepts "~1.3.4"
batch "0.6.1"
debug "2.6.9"
escape-html "~1.0.3"
http-errors "~1.6.2"
mime-types "~2.1.17"
parseurl "~1.3.2"
serve-static@1.15.0:
version "1.15.0"
resolved "http://npm.dui88.com:80/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
dependencies:
encodeurl "~1.0.2"
escape-html "~1.0.3"
parseurl "~1.3.3"
send "0.18.0"
setprototypeof@1.1.0:
version "1.1.0"
resolved "http://npm.dui88.com:80/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656"
integrity sha1-0L2FU2iHtv58DYGMuWLZ2RxU5lY=
setprototypeof@1.2.0:
version "1.2.0"
resolved "http://npm.dui88.com:80/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424"
integrity sha1-ZsmiSnP5/CjL5msJ/tPTPcrxtCQ=
shallow-clone@^3.0.0:
version "3.0.1"
resolved "http://npm.dui88.com:80/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3"
integrity sha1-jymBrZJTH1UDWwH7IwdppA4C76M=
dependencies:
kind-of "^6.0.2"
shebang-command@^2.0.0:
version "2.0.0"
resolved "http://npm.dui88.com:80/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
integrity sha1-zNCvT4g1+9wmW4JGGq8MNmY/NOo=
dependencies:
shebang-regex "^3.0.0"
shebang-regex@^3.0.0:
version "3.0.0"
resolved "http://npm.dui88.com:80/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
integrity sha1-rhbxZE2HPsrYQ7AwexQzYtTEIXI=
side-channel@^1.0.4:
version "1.0.4"
resolved "http://npm.dui88.com:80/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf"
integrity sha1-785cj9wQTudRslxY1CkAEfpeos8=
dependencies:
call-bind "^1.0.0"
get-intrinsic "^1.0.2"
object-inspect "^1.9.0"
signal-exit@^3.0.3:
version "3.0.7"
resolved "http://npm.dui88.com:80/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
sockjs@^0.3.24:
version "0.3.24"
resolved "http://npm.dui88.com:80/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce"
integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==
dependencies:
faye-websocket "^0.11.3"
uuid "^8.3.2"
websocket-driver "^0.7.4"
source-map-support@~0.5.20:
version "0.5.21"
resolved "http://npm.dui88.com:80/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f"
integrity sha1-BP58f54e0tZiIzwoyys1ufY/bk8=
dependencies:
buffer-from "^1.0.0"
source-map "^0.6.0"
source-map@^0.6.0:
version "0.6.1"
resolved "http://npm.dui88.com:80/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
integrity sha1-dHIq8y6WFOnCh6jQu95IteLxomM=
spdy-transport@^3.0.0:
version "3.0.0"
resolved "http://npm.dui88.com:80/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31"
integrity sha1-ANSGOmQArXXfkzYaFghgXl3NzzE=
dependencies:
debug "^4.1.0"
detect-node "^2.0.4"
hpack.js "^2.1.6"
obuf "^1.1.2"
readable-stream "^3.0.6"
wbuf "^1.7.3"
spdy@^4.0.2:
version "4.0.2"
resolved "http://npm.dui88.com:80/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b"
integrity sha1-t09GYgOj7aRSwCSSuR+56EonZ3s=
dependencies:
debug "^4.1.0"
handle-thing "^2.0.0"
http-deceiver "^1.2.7"
select-hose "^2.0.0"
spdy-transport "^3.0.0"
statuses@2.0.1:
version "2.0.1"
resolved "http://npm.dui88.com:80/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63"
integrity sha1-VcsADM8dSHKL0jxoWgY5mM8aG2M=
"statuses@>= 1.4.0 < 2":
version "1.5.0"
resolved "http://npm.dui88.com:80/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c"
integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=
string_decoder@^1.1.1:
version "1.3.0"
resolved "http://npm.dui88.com:80/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
integrity sha1-QvEUWUpGzxqOMLCoT1bHjD7awh4=
dependencies:
safe-buffer "~5.2.0"
string_decoder@~1.1.1:
version "1.1.1"
resolved "http://npm.dui88.com:80/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8"
integrity sha1-nPFhG6YmhdcDCunkujQUnDrwP8g=
dependencies:
safe-buffer "~5.1.0"
strip-final-newline@^2.0.0:
version "2.0.0"
resolved "http://npm.dui88.com:80/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad"
integrity sha1-ibhS+y/L6Tb29LMYevsKEsGrWK0=
supports-color@^7.1.0:
version "7.2.0"
resolved "http://npm.dui88.com:80/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
integrity sha1-G33NyzK4E4gBs+R4umpRyqiWSNo=
dependencies:
has-flag "^4.0.0"
supports-color@^8.0.0:
version "8.1.1"
resolved "http://npm.dui88.com:80/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
integrity sha1-zW/BfihQDP9WwbhsCn/UpUpzAFw=
dependencies:
has-flag "^4.0.0"
supports-preserve-symlinks-flag@^1.0.0:
version "1.0.0"
resolved "http://npm.dui88.com:80/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09"
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
tapable@^2.1.1, tapable@^2.2.0:
version "2.2.1"
resolved "http://npm.dui88.com:80/tapable/-/tapable-2.2.1.tgz#1967a73ef4060a82f12ab96af86d52fdb76eeca0"
integrity sha1-GWenPvQGCoLxKrlq+G1S/bdu7KA=
terser-webpack-plugin@^5.1.3:
version "5.3.3"
resolved "http://npm.dui88.com:80/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz#8033db876dd5875487213e87c627bca323e5ed90"
integrity sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==
dependencies:
"@jridgewell/trace-mapping" "^0.3.7"
jest-worker "^27.4.5"
schema-utils "^3.1.1"
serialize-javascript "^6.0.0"
terser "^5.7.2"
terser@^5.7.2:
version "5.14.2"
resolved "http://npm.dui88.com:80/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10"
integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==
dependencies:
"@jridgewell/source-map" "^0.3.2"
acorn "^8.5.0"
commander "^2.20.0"
source-map-support "~0.5.20"
three@^0.143.0:
version "0.143.0"
resolved "http://npm.dui88.com:80/three/-/three-0.143.0.tgz#1455bca132cc2b20beb7f41d313e10c29e5ed9df"
integrity sha512-oKcAGYHhJ46TGEuHjodo2n6TY2R6lbvrkp+feKZxqsUL/WkH7GKKaeu6RHeyb2Xjfk2dPLRKLsOP0KM2VgT8Zg==
thunky@^1.0.2:
version "1.1.0"
resolved "http://npm.dui88.com:80/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d"
integrity sha1-Wrr3FKlAXbBQRzK7zNLO3Z75U30=
to-regex-range@^5.0.1:
version "5.0.1"
resolved "http://npm.dui88.com:80/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
integrity sha1-FkjESq58jZiKMmAY7XL1tN0DkuQ=
dependencies:
is-number "^7.0.0"
toidentifier@1.0.1:
version "1.0.1"
resolved "http://npm.dui88.com:80/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35"
integrity sha1-O+NDIaiKgg7RvYDfqjPkefu43TU=
ts-loader@^9.3.1:
version "9.3.1"
resolved "http://npm.dui88.com:80/ts-loader/-/ts-loader-9.3.1.tgz#fe25cca56e3e71c1087fe48dc67f4df8c59b22d4"
integrity sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw==
dependencies:
chalk "^4.1.0"
enhanced-resolve "^5.0.0"
micromatch "^4.0.0"
semver "^7.3.4"
type-is@~1.6.18:
version "1.6.18"
resolved "http://npm.dui88.com:80/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131"
integrity sha1-TlUs0F3wlGfcvE73Od6J8s83wTE=
dependencies:
media-typer "0.3.0"
mime-types "~2.1.24"
typescript@^4.7.4:
version "4.7.4"
resolved "http://npm.dui88.com:80/typescript/-/typescript-4.7.4.tgz#1a88596d1cf47d59507a1bcdfb5b9dfe4d488235"
integrity sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==
unpipe@1.0.0, unpipe@~1.0.0:
version "1.0.0"
resolved "http://npm.dui88.com:80/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec"
integrity sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=
update-browserslist-db@^1.0.5:
version "1.0.5"
resolved "http://npm.dui88.com:80/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz#be06a5eedd62f107b7c19eb5bcefb194411abf38"
integrity sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==
dependencies:
escalade "^3.1.1"
picocolors "^1.0.0"
uri-js@^4.2.2:
version "4.4.1"
resolved "http://npm.dui88.com:80/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e"
integrity sha1-mxpSWVIlhZ5V9mnZKPiMbFfyp34=
dependencies:
punycode "^2.1.0"
util-deprecate@^1.0.1, util-deprecate@~1.0.1:
version "1.0.2"
resolved "http://npm.dui88.com:80/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=
utils-merge@1.0.1:
version "1.0.1"
resolved "http://npm.dui88.com:80/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713"
integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=
uuid@^8.3.2:
version "8.3.2"
resolved "http://npm.dui88.com:80/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2"
integrity sha1-gNW1ztJxu5r2xEXyGhoExgbO++I=
vary@~1.1.2:
version "1.1.2"
resolved "http://npm.dui88.com:80/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
integrity sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=
watchpack@^2.4.0:
version "2.4.0"
resolved "http://npm.dui88.com:80/watchpack/-/watchpack-2.4.0.tgz#fa33032374962c78113f93c7f2fb4c54c9862a5d"
integrity sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==
dependencies:
glob-to-regexp "^0.4.1"
graceful-fs "^4.1.2"
wbuf@^1.1.0, wbuf@^1.7.3:
version "1.7.3"
resolved "http://npm.dui88.com:80/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df"
integrity sha1-wdjRSTFtPqhShIiVy2oL/oh7h98=
dependencies:
minimalistic-assert "^1.0.0"
webpack-cli@^4.10.0:
version "4.10.0"
resolved "http://npm.dui88.com:80/webpack-cli/-/webpack-cli-4.10.0.tgz#37c1d69c8d85214c5a65e589378f53aec64dab31"
integrity sha512-NLhDfH/h4O6UOy+0LSso42xvYypClINuMNBVVzX4vX98TmTaTUxwRbXdhucbFMd2qLaCTcLq/PdYrvi8onw90w==
dependencies:
"@discoveryjs/json-ext" "^0.5.0"
"@webpack-cli/configtest" "^1.2.0"
"@webpack-cli/info" "^1.5.0"
"@webpack-cli/serve" "^1.7.0"
colorette "^2.0.14"
commander "^7.0.0"
cross-spawn "^7.0.3"
fastest-levenshtein "^1.0.12"
import-local "^3.0.2"
interpret "^2.2.0"
rechoir "^0.7.0"
webpack-merge "^5.7.3"
webpack-dev-middleware@^5.3.1:
version "5.3.3"
resolved "http://npm.dui88.com:80/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f"
integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==
dependencies:
colorette "^2.0.10"
memfs "^3.4.3"
mime-types "^2.1.31"
range-parser "^1.2.1"
schema-utils "^4.0.0"
webpack-dev-server@^4.9.3:
version "4.9.3"
resolved "http://npm.dui88.com:80/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz#2360a5d6d532acb5410a668417ad549ee3b8a3c9"
integrity sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw==
dependencies:
"@types/bonjour" "^3.5.9"
"@types/connect-history-api-fallback" "^1.3.5"
"@types/express" "^4.17.13"
"@types/serve-index" "^1.9.1"
"@types/serve-static" "^1.13.10"
"@types/sockjs" "^0.3.33"
"@types/ws" "^8.5.1"
ansi-html-community "^0.0.8"
bonjour-service "^1.0.11"
chokidar "^3.5.3"
colorette "^2.0.10"
compression "^1.7.4"
connect-history-api-fallback "^2.0.0"
default-gateway "^6.0.3"
express "^4.17.3"
graceful-fs "^4.2.6"
html-entities "^2.3.2"
http-proxy-middleware "^2.0.3"
ipaddr.js "^2.0.1"
open "^8.0.9"
p-retry "^4.5.0"
rimraf "^3.0.2"
schema-utils "^4.0.0"
selfsigned "^2.0.1"
serve-index "^1.9.1"
sockjs "^0.3.24"
spdy "^4.0.2"
webpack-dev-middleware "^5.3.1"
ws "^8.4.2"
webpack-merge@^5.7.3:
version "5.8.0"
resolved "http://npm.dui88.com:80/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61"
integrity sha1-Kznb8ir4d3atdEw5AiNzHTCmj2E=
dependencies:
clone-deep "^4.0.1"
wildcard "^2.0.0"
webpack-sources@^3.2.3:
version "3.2.3"
resolved "http://npm.dui88.com:80/webpack-sources/-/webpack-sources-3.2.3.tgz#2d4daab8451fd4b240cc27055ff6a0c2ccea0cde"
integrity sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==
webpack@^5.74.0:
version "5.74.0"
resolved "http://npm.dui88.com:80/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980"
integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==
dependencies:
"@types/eslint-scope" "^3.7.3"
"@types/estree" "^0.0.51"
"@webassemblyjs/ast" "1.11.1"
"@webassemblyjs/wasm-edit" "1.11.1"
"@webassemblyjs/wasm-parser" "1.11.1"
acorn "^8.7.1"
acorn-import-assertions "^1.7.6"
browserslist "^4.14.5"
chrome-trace-event "^1.0.2"
enhanced-resolve "^5.10.0"
es-module-lexer "^0.9.0"
eslint-scope "5.1.1"
events "^3.2.0"
glob-to-regexp "^0.4.1"
graceful-fs "^4.2.9"
json-parse-even-better-errors "^2.3.1"
loader-runner "^4.2.0"
mime-types "^2.1.27"
neo-async "^2.6.2"
schema-utils "^3.1.0"
tapable "^2.1.1"
terser-webpack-plugin "^5.1.3"
watchpack "^2.4.0"
webpack-sources "^3.2.3"
websocket-driver@>=0.5.1, websocket-driver@^0.7.4:
version "0.7.4"
resolved "http://npm.dui88.com:80/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760"
integrity sha1-ia1Slbv2S0gKvLox5JU6ynBvV2A=
dependencies:
http-parser-js ">=0.5.1"
safe-buffer ">=5.1.0"
websocket-extensions ">=0.1.1"
websocket-extensions@>=0.1.1:
version "0.1.4"
resolved "http://npm.dui88.com:80/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42"
integrity sha1-f4RzvIOd/YdgituV1+sHUhFXikI=
which@^2.0.1:
version "2.0.2"
resolved "http://npm.dui88.com:80/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
integrity sha1-fGqN0KY2oDJ+ELWckobu6T8/UbE=
dependencies:
isexe "^2.0.0"
wildcard@^2.0.0:
version "2.0.0"
resolved "http://npm.dui88.com:80/wildcard/-/wildcard-2.0.0.tgz#a77d20e5200c6faaac979e4b3aadc7b3dd7f8fec"
integrity sha1-p30g5SAMb6qsl55LOq3Hs91/j+w=
wrappy@1:
version "1.0.2"
resolved "http://npm.dui88.com:80/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=
ws@^8.4.2:
version "8.8.1"
resolved "http://npm.dui88.com:80/ws/-/ws-8.8.1.tgz#5dbad0feb7ade8ecc99b830c1d77c913d4955ff0"
integrity sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==
yallist@^4.0.0:
version "4.0.0"
resolved "http://npm.dui88.com:80/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha1-m7knkNnA7/7GO+c1GeEaNQGaOnI=
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment