@@ -22,30 +22,32 @@ if [ ! -f "package.json" ]; then
2222 exit 1
2323fi
2424
25- if ! ls ./* .node 1> /dev/null 2>&1 ; then
26- echo " ❌ Error: No .node binary found. Run 'npm run build' first." >&2
25+ # In CI the .node binary is already in npm/linux-x64-gnu/; locally it's in the project root.
26+ if ls npm/linux-x64-gnu/* .node 1> /dev/null 2>&1 ; then
27+ echo " 📦 Platform binary already present in npm/linux-x64-gnu/"
28+ elif ls ./* .node 1> /dev/null 2>&1 ; then
29+ NATIVE_BINARY=$( ls ./* .node | head -1)
30+ BINARY_NAME=$( basename " ${NATIVE_BINARY} " )
31+ echo " 📦 Copying ${BINARY_NAME} into platform package..."
32+ cp " ${NATIVE_BINARY} " npm/linux-x64-gnu/" ${BINARY_NAME} "
33+ else
34+ echo " ❌ Error: No .node binary found. Run 'npm run build' first, or ensure CI artifacts are staged." >&2
2735 exit 1
2836fi
2937
30- # ── Step 1: Copy the .node binary into the platform package ─────────
31- echo " 📦 Preparing platform package..."
32- NATIVE_BINARY=$( ls ./* .node | head -1)
33- BINARY_NAME=$( basename " ${NATIVE_BINARY} " )
34- cp " ${NATIVE_BINARY} " npm/linux-x64-gnu/" ${BINARY_NAME} "
35-
36- # ── Step 2: Pack platform package ───────────────────────────────────
38+ # ── Step 1: Pack platform package ───────────────────────────────────
3739echo " 📦 Packing platform package (linux-x64-gnu)..."
3840PLATFORM_TGZ=$( npm pack ./npm/linux-x64-gnu --pack-destination " ${PACK_DIR} " 2> /dev/null)
3941PLATFORM_TGZ_PATH=" ${PACK_DIR} /${PLATFORM_TGZ} "
4042echo " → ${PLATFORM_TGZ_PATH} "
4143
42- # ── Step 3 : Pack main package ───────────────────────────────────────
44+ # ── Step 2 : Pack main package ───────────────────────────────────────
4345echo " 📦 Packing main package..."
4446MAIN_TGZ=$( npm pack --pack-destination " ${PACK_DIR} " 2> /dev/null)
4547MAIN_TGZ_PATH=" ${PACK_DIR} /${MAIN_TGZ} "
4648echo " → ${MAIN_TGZ_PATH} "
4749
48- # ── Step 4 : Inspect tarball contents ────────────────────────────────
50+ # ── Step 3 : Inspect tarball contents ────────────────────────────────
4951echo " "
5052echo " 🔍 Platform package contents:"
5153tar tzf " ${PLATFORM_TGZ_PATH} " | sed ' s/^/ /'
@@ -54,7 +56,7 @@ echo ""
5456echo " 🔍 Main package contents:"
5557tar tzf " ${MAIN_TGZ_PATH} " | sed ' s/^/ /'
5658
57- # ── Step 5 : Validate main package contents ──────────────────────────
59+ # ── Step 4 : Validate main package contents ──────────────────────────
5860echo " "
5961echo " ✅ Validating main package contents..."
6062MAIN_FILES=$( tar tzf " ${MAIN_TGZ_PATH} " )
@@ -79,7 +81,14 @@ for p in "${BANNED_PATTERNS[@]}"; do
7981 fi
8082done
8183
82- # ── Step 6: Validate platform package contents ──────────────────────
84+ if echo " ${MAIN_FILES} " | grep -q ' \.node$' ; then
85+ echo " ❌ LEAKED: .node binary in main package (should only be in platform packages)" >&2
86+ exit 1
87+ else
88+ echo " ✅ No leak: *.node"
89+ fi
90+
91+ # ── Step 5: Validate platform package contents ──────────────────────
8392echo " "
8493echo " ✅ Validating platform package contents..."
8594PLATFORM_FILES=$( tar tzf " ${PLATFORM_TGZ_PATH} " )
91100 exit 1
92101fi
93102
94- # ── Step 7 : Install from tarballs into a clean directory ────────────
103+ # ── Step 6 : Install from tarballs into a clean directory ────────────
95104echo " "
96105echo " 📥 Installing from tarballs into ${INSTALL_DIR} ..."
97106cd " ${INSTALL_DIR} "
@@ -101,7 +110,7 @@ npm init -y --silent >/dev/null 2>&1
101110npm install " ${PLATFORM_TGZ_PATH} " --no-save 2>&1 | sed ' s/^/ /'
102111npm install " ${MAIN_TGZ_PATH} " --no-save 2>&1 | sed ' s/^/ /'
103112
104- # ── Step 8 : Smoke test — require and check exports ──────────────────
113+ # ── Step 7 : Smoke test — require and check exports ──────────────────
105114echo " "
106115echo " 🧪 Smoke test: require('@hyperlight/js-host-api')..."
107116EXPORTS=$( node -e "
@@ -115,7 +124,7 @@ EXPORTS=$(node -e "
115124" )
116125echo " ${EXPORTS} "
117126
118- # ── Step 9 : Hello World — end-to-end sandbox test ───────────────────
127+ # ── Step 8 : Hello World — end-to-end sandbox test ───────────────────
119128echo " "
120129echo " 🧪 Hello World: create sandbox, load handler, call it..."
121130node -e "
@@ -144,9 +153,6 @@ node -e "
144153 main().catch(err => { console.error(' ❌', err.message); process.exit(1); });
145154"
146155
147- # ── Cleanup temp .node from platform dir ────────────────────────────
148- rm -f " ${SCRIPT_DIR} /npm/linux-x64-gnu/${BINARY_NAME} "
149-
150156# ── Done ────────────────────────────────────────────────────────────
151157echo " "
152158echo " 🎉 All checks passed! Package is ready to ship."
0 commit comments