Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/typescript-bindings.yml
Original file line number Diff line number Diff line change
Expand Up @@ -148,12 +148,12 @@ jobs:
# Check simd for compat builds
- name: Check 2d simd compat build
run: |
if ! wasm-objdump -d rapier-compat/builds/2d-simd/pkg/rapier_wasm2d_bg.wasm | grep :\\sfd ; then
if ! wasm-objdump -d rapier-compat/builds/2d-simd/pkg/dist/rapier_wasm2d_bg.wasm | grep :\\sfd ; then
>&2 echo "ERROR: 2d simd compat build does not include simd opcode prefix." && exit 1;
fi
- name: Check 3d simd compat build
run: |
if ! wasm-objdump -d rapier-compat/builds/3d-simd/pkg/rapier_wasm3d_bg.wasm | grep :\\sfd ; then
if ! wasm-objdump -d rapier-compat/builds/3d-simd/pkg/dist/rapier_wasm3d_bg.wasm | grep :\\sfd ; then
>&2 echo "ERROR: 3d simd compat build does not include simd opcode prefix." && exit 1;
fi
# Upload
Expand Down
5 changes: 5 additions & 0 deletions typescript/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,11 @@

### Breaking changes

- The files of the `-compat` packages moved from the package root into `dist/`
(`dist/rapier.mjs`, `dist/rapier.cjs`, `dist/rapier.d.ts`). Imports resolved through
the package entry (bundlers, `+esm` CDN URLs) are unaffected; pinned CDN URLs or deep
imports referencing the old root-level files must add the `dist/` segment.

- Removed `IntegrationParameters.minIslandSize`: awake bodies are now solved as a single
active set, so there is no island size to tune.
- `NarrowPhase.contactPair` takes the `RigidBodySet` as its third argument. Solver
Expand Down
10 changes: 5 additions & 5 deletions typescript/rapier-compat/build-rust.sh
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
#!/bin/bash
#!/bin/sh


help()
Expand All @@ -17,14 +17,14 @@ do
esac
done

if [[ -z "$dimension" ]]; then
if [ -z "$dimension" ]; then
help; exit 2;
fi
if [[ -z "$feature" ]]; then
if [ -z "$feature" ]; then
help; exit 3;
fi

if [[ $feature == "non-deterministic" ]]; then
if [ "$feature" = "non-deterministic" ]; then
feature_postfix=""
else
feature_postfix="-${feature}"
Expand All @@ -41,7 +41,7 @@ fi

# Working dir in wasm-pack is the project root so we need that "../../"

if [[ $feature == "simd" ]]; then
if [ "$feature" = "simd" ]; then
export additional_rustflags='-C target-feature=+simd128'
else
export additional_rustflags=''
Expand Down
4 changes: 2 additions & 2 deletions typescript/rapier-compat/fix_raw_file.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ do
# whatever the feature variant (-deterministic/-simd) of the build.
dimension="${feature%%-*}"

echo 'export * from "'"./rapier_wasm$dimension"'"' > builds/${feature}/pkg/raw.d.ts
echo "export * from \"./rapier_wasm${dimension}\";" > "builds/${feature}/pkg/dist/raw.d.ts"

done;
done;
17 changes: 10 additions & 7 deletions typescript/rapier-compat/gen_src.sh
Original file line number Diff line number Diff line change
Expand Up @@ -40,19 +40,22 @@ do
feature="${1}d-${2}";
fi

mkdir -p ./builds/${feature}/pkg/
pkg_dir="./builds/${feature}/pkg"
dist_dir="${pkg_dir}/dist"

cp ./builds/${feature}/wasm-build/rapier_wasm* ./builds/${feature}/pkg/
cp -r ./gen${dimension}d ./builds/${feature}/
mkdir -p "${dist_dir}"

cp ./builds/${feature}/wasm-build/rapier_wasm* "${dist_dir}/"
cp -r "./gen${dimension}d" "./builds/${feature}/"

# copy tsconfig, as they contain paths
cp ./tsconfig.common.json ./tsconfig.json ./builds/${feature}/
cp ./tsconfig.pkg${dimension}d.json ./builds/${feature}/tsconfig.pkg.json
cp ./tsconfig.common.json ./tsconfig.json "./builds/${feature}/"
cp "./tsconfig.pkg${dimension}d.json" "./builds/${feature}/tsconfig.pkg.json"

# "import.meta" causes Babel to choke, but the code path is never taken so just remove it.
sed -i.bak 's/import.meta.url/"<deleted>"/g' ./builds/${feature}/pkg/rapier_wasm${dimension}d.js
sed -i.bak 's/import.meta.url/"<deleted>"/g' "${dist_dir}/rapier_wasm${dimension}d.js"

# Clean up backup files.
find ./builds/${feature}/pkg/ -type f -name '*.bak' | xargs rm
find "${dist_dir}" -type f -name '*.bak' -delete

done
140 changes: 74 additions & 66 deletions typescript/rapier-compat/rollup.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,73 +7,81 @@ import {base64} from "rollup-plugin-base64";
import copy from "rollup-plugin-copy";
import filesize from "rollup-plugin-filesize";

const config = (dim, features_postfix) => ({
input: `builds/${features_postfix}/gen${dim}/rapier.ts`,
output: [
{
file: `builds/${features_postfix}/pkg/rapier.mjs`,
format: "es",
sourcemap: true,
exports: "named",
},
{
file: `builds/${features_postfix}/pkg/rapier.cjs`,
format: "cjs",
sourcemap: true,
exports: "named",
},
],
plugins: [
copy({
targets: [
{
src: `builds/${features_postfix}/wasm-build/package.json`,
dest: `builds/${features_postfix}/pkg/`,
transform(content) {
let config = JSON.parse(content.toString());
config.name = `@dimforge/rapier${features_postfix}-compat`;
config.description +=
" Compatibility package with inlined webassembly as base64.";
config.types = "rapier.d.ts";
config.main = "rapier.cjs";
config.module = "rapier.mjs";
config.exports = {
".": {
types: "./rapier.d.ts",
require: "./rapier.cjs",
import: "./rapier.mjs",
},
};
// delete config.module;
config.files = ["*"];
return JSON.stringify(config, undefined, 2);
const config = (dim, features_postfix) => {
const pkgDir = `builds/${features_postfix}/pkg`;
const distDir = `${pkgDir}/dist`;
return {
input: `builds/${features_postfix}/gen${dim}/rapier.ts`,
output: [
{
file: `${distDir}/rapier.mjs`,
format: "es",
sourcemap: true,
exports: "named",
},
{
file: `${distDir}/rapier.cjs`,
format: "cjs",
sourcemap: true,
exports: "named",
},
],
plugins: [
copy({
targets: [
{
src: `builds/${features_postfix}/wasm-build/package.json`,
dest: pkgDir,
transform(content) {
let config = JSON.parse(content.toString());
config.name = `@dimforge/rapier${features_postfix}-compat`;
config.description +=
" Compatibility package with inlined webassembly as base64.";
config.types = "dist/rapier.d.ts";
config.main = "dist/rapier.cjs";
config.module = "dist/rapier.mjs";
config.exports = {
".": {
types: "./dist/rapier.d.ts",
require: "./dist/rapier.cjs",
import: "./dist/rapier.mjs",
},
};
// delete config.module;
config.files = ["dist"];
// The base manifest's `sideEffects: ["./*.js"]` matches
// nothing (the bundles are .cjs/.mjs), which bundlers already
// treat as "no side effects"; say so explicitly.
config.sideEffects = false;
return JSON.stringify(config, undefined, 2);
},
},
},
{
src: `../rapier${features_postfix}/LICENSE`,
dest: `builds/${features_postfix}/pkg`,
},
{
src: `../rapier${features_postfix}/README.md`,
dest: `builds/${features_postfix}/pkg`,
},
],
}),
base64({include: "**/*.wasm"}),
terser(),
nodeResolve(),
commonjs(),
typescript({
tsconfig: path.resolve(
__dirname,
`builds/${features_postfix}/tsconfig.pkg.json`,
),
sourceMap: true,
inlineSources: true,
}),
filesize(),
],
});
{
src: `../builds/rapier${features_postfix}/LICENSE`,
dest: pkgDir,
},
{
src: `../builds/rapier${features_postfix}/README.md`,
dest: pkgDir,
},
],
}),
base64({include: "**/*.wasm"}),
terser(),
nodeResolve(),
commonjs(),
typescript({
tsconfig: path.resolve(
__dirname,
`builds/${features_postfix}/tsconfig.pkg.json`,
),
sourceMap: true,
inlineSources: true,
}),
filesize(),
],
};
};

export default [
config("2d", "2d"),
Expand Down
4 changes: 2 additions & 2 deletions typescript/rapier-compat/src2d/init.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// @ts-ignore
import wasmBase64 from "../pkg/rapier_wasm2d_bg.wasm";
import wasmInit from "../pkg/rapier_wasm2d";
import wasmBase64 from "../pkg/dist/rapier_wasm2d_bg.wasm";
import wasmInit from "../pkg/dist/rapier_wasm2d";
import base64 from "base64-js";

/**
Expand Down
2 changes: 1 addition & 1 deletion typescript/rapier-compat/src2d/raw.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export * from "../pkg/rapier_wasm2d";
export * from "../pkg/dist/rapier_wasm2d";
4 changes: 2 additions & 2 deletions typescript/rapier-compat/src3d/init.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
// @ts-ignore
import wasmBase64 from "../pkg/rapier_wasm3d_bg.wasm";
import wasmInit from "../pkg/rapier_wasm3d";
import wasmBase64 from "../pkg/dist/rapier_wasm3d_bg.wasm";
import wasmInit from "../pkg/dist/rapier_wasm3d";
import base64 from "base64-js";

/**
Expand Down
2 changes: 1 addition & 1 deletion typescript/rapier-compat/src3d/raw.ts
Original file line number Diff line number Diff line change
@@ -1 +1 @@
export * from "../pkg/rapier_wasm3d";
export * from "../pkg/dist/rapier_wasm3d";
3 changes: 2 additions & 1 deletion typescript/rapier-compat/tsconfig.pkg2d.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"extends": "./tsconfig.common.json",
"compilerOptions": {
"rootDir": "./gen2d",
"outDir": "./2d"
"outDir": "./pkg/dist",
"declarationDir": "./pkg/dist"
},
"files": ["./gen2d/rapier.ts"]
}
3 changes: 2 additions & 1 deletion typescript/rapier-compat/tsconfig.pkg3d.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"extends": "./tsconfig.common.json",
"compilerOptions": {
"rootDir": "./gen3d",
"outDir": "."
"outDir": "./pkg/dist",
"declarationDir": "./pkg/dist"
},
"files": ["./gen3d/rapier.ts"]
}
Loading