Research
Security News
Kill Switch Hidden in npm Packages Typosquatting Chalk and Chokidar
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.
ammojs-typed
Advanced tools
This project provides the Ammo.js modules with typescript definitions.
Use npm or yarn to install this version of ammojs from npm
$ npm install ammojs-typed
or from github
$ npm install github:giniedp/ammojs-typed
Configure your tsconfig.json
to lookup the ambient types
"typeRoots": ["node_modules/ammojs-typed/ammo/ambient"]
Then at some point require ammo.js (depends on your build chain)
require('ammojs-typed')
or reference the script
<script src="./ammo.js">
And use the global Ammo
object
Ammo().then(() => {
new Ammo.btVector3(1, 2, 3)
})
You probably need to set the following compilerOptions
in tsconfig.json
"allowSyntheticDefaultImports": true,
"esModuleInterop": true
Then import ammo like this
import Ammo from 'ammojs-typed'
This works but be cautious here. The default import gives you the bootstrap function.
After bootstrapping the api is not available through the Ammo
symbol by default.
Ammo().then(api => {
const v1 = new api.btVector3(1, 2, 3)
const v2 = new Ammo.btVector3(1, 2, 3) // <-- runtime error here
})
You can work around that by booting like this
Ammo(Ammo).then(() => {
const v2 = new Ammo.btVector3(1, 2, 3) // <-- works
})
Enable same compilerOptions
as above
import('./ammo.js') // use dynamic import
.then((Module) => Module.default()) // bootstrap ammo.js
.then((ammo) => {
const v1 = new ammo.btVector3(1, 2, 3) // use ammo here
})
Since typescript 3.8 you can use type only imports. So with dynamic imports you can safely import ammo.js types, without including them in you bundle like this
import type Ammo from './ammo.js'
import('./ammo.js') // use dynamic import
.then((Module) => Module.default()) // bootstrap ammo.js
.then((ammo) => {
let v1: Ammo.btVector3 = null
// ...
v1 = v
})
Clone this repository and install node dependencies
git clone git@github.com:giniedp/ammojs-typed.git
cd ammojs-typed
npm install
Place the ammo.idl
and ammo.js
into the ./ammo
folder.
To download the latest version from the ammo.js repository run
$ npm run download
Make your adjustments to the IDL file if needed (see below) and run
$ npm run generate
This will parse the ./ammo/ammo.idl
and generate a ./ammo/ammo.d.ts
as well as ./ammo/ambient/ammo.d.ts
The btVector4
implements the shape of btVector3
which causes a signature mismatch of the setValue
method which typescript complains about. Add the following to the btVector4
+void setValue(float x, float y, float z);
The btDbvtBroadphase
should derive from btBroadphaseInterface
-interface btDbvtBroadphase {
+interface btDbvtBroadphase: btBroadphaseInterface {
FAQs
Ammo.js with type definitions
The npm package ammojs-typed receives a total of 331 weekly downloads. As such, ammojs-typed popularity was classified as not popular.
We found that ammojs-typed demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
Socket researchers found several malicious npm packages typosquatting Chalk and Chokidar, targeting Node.js developers with kill switches and data theft.
Security News
pnpm 10 blocks lifecycle scripts by default to improve security, addressing supply chain attack risks but sparking debate over compatibility and workflow changes.
Product
Socket now supports uv.lock files to ensure consistent, secure dependency resolution for Python projects and enhance supply chain security.