ReviewOS

craft-native/craft

fix(mobile): ship declarations from standalone iOS and Android packages

#286
Closed glennmichael123 opened this 9 days ago ·
9 days ago

Summary

Both standalone mobile packages declare a TypeScript export target that their clean builds and npm tarballs do not contain:

  • @craft-native/android: exports["."].types -> ./dist/index.d.ts
  • @craft-native/ios: exports["."].types -> ./dist/index.d.ts

packages/android/build.ts and packages/ios/build.ts only invoke bun build, which emits JavaScript. After bun run build && bun pm pack, each archive contains package/dist/index.js but no package/dist/index.d.ts.

Reproduction

cd packages/android
bun run build
bun pm pack --destination /tmp/craft-pack

tar -tzf /tmp/craft-pack/craft-native-android-0.0.92.tgz | sort
tar -xOzf /tmp/craft-pack/craft-native-android-0.0.92.tgz package/package.json | jq .exports

Repeat under packages/ios; both declared type targets are absent. A complete audit of all eight publishable package manifests found these as two of only three missing export targets.

Impact

TypeScript consumers of the standalone @craft-native/android and @craft-native/ios entry points cannot resolve the advertised declarations. The root craft-native package does ship its mobile subpath declarations, so the defect is specific to the independently published packages.

Expected

  • Generate and include dist/index.d.ts in both package builds.
  • Add a pack-time CI assertion that every main, types, bin, and exports file target exists in the produced tarball.

Found during the release-readiness audit tracked alongside #272.

Sign in to comment on this issue.