|
| 1 | +#!/usr/bin/env bash |
| 2 | + |
| 3 | +set -euo pipefail |
| 4 | + |
| 5 | +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" |
| 6 | +ROOT_DIR="$SCRIPT_DIR" |
| 7 | +BUNDLE_DIR="$ROOT_DIR/tmp/bundle-test" |
| 8 | +ESBUILD="$ROOT_DIR/node_modules/.bin/esbuild" |
| 9 | + |
| 10 | +if [[ ! -x "$ESBUILD" ]]; then |
| 11 | + echo "esbuild not found at $ESBUILD; run yarn install first." >&2 |
| 12 | + exit 1 |
| 13 | +fi |
| 14 | + |
| 15 | +mkdir -p "$BUNDLE_DIR" |
| 16 | + |
| 17 | +# Ensure entry files exist so the script is self-contained. |
| 18 | +cat >"$BUNDLE_DIR/constants-entry.js" <<'JS' |
| 19 | +const { NETWORK_CONTEXT_BY_NETWORK } = require('@lit-protocol/constants'); |
| 20 | +
|
| 21 | +if (!NETWORK_CONTEXT_BY_NETWORK?.datil) { |
| 22 | + throw new Error('datil context missing'); |
| 23 | +} |
| 24 | +
|
| 25 | +console.log('datil contracts count:', NETWORK_CONTEXT_BY_NETWORK.datil.data.length); |
| 26 | +JS |
| 27 | + |
| 28 | +cat >"$BUNDLE_DIR/contracts-sdk-entry.js" <<'JS' |
| 29 | +const { LitContracts } = require('@lit-protocol/contracts-sdk'); |
| 30 | +
|
| 31 | +if (typeof LitContracts !== 'function') { |
| 32 | + throw new Error('LitContracts constructor not found'); |
| 33 | +} |
| 34 | +
|
| 35 | +console.log('LitContracts ready'); |
| 36 | +JS |
| 37 | + |
| 38 | +echo "Bundling constants mapper (browser)..." |
| 39 | +"$ESBUILD" "$BUNDLE_DIR/constants-entry.js" \ |
| 40 | + --bundle \ |
| 41 | + --platform=browser \ |
| 42 | + --format=esm \ |
| 43 | + --outfile="$BUNDLE_DIR/constants-bundle.js" \ |
| 44 | + --metafile="$BUNDLE_DIR/constants-meta.json" \ |
| 45 | + --log-level=info >/dev/null |
| 46 | + |
| 47 | +echo "Bundling contracts SDK (node target for CJS)..." |
| 48 | +"$ESBUILD" "$BUNDLE_DIR/contracts-sdk-entry.js" \ |
| 49 | + --bundle \ |
| 50 | + --platform=node \ |
| 51 | + --format=cjs \ |
| 52 | + --outfile="$BUNDLE_DIR/contracts-sdk-bundle.cjs" \ |
| 53 | + --metafile="$BUNDLE_DIR/contracts-sdk-meta.json" \ |
| 54 | + --log-level=info >/dev/null |
| 55 | + |
| 56 | +summarise_meta () { |
| 57 | + local label="$1" |
| 58 | + local meta_path="$2" |
| 59 | + echo "" |
| 60 | + echo "$label" |
| 61 | + META_PATH="$meta_path" node - <<'NODE' |
| 62 | +const path = require('path'); |
| 63 | +const metaPath = process.env.META_PATH; |
| 64 | +const meta = require(metaPath); |
| 65 | +const entries = Object.entries(meta.inputs) |
| 66 | + .filter(([p]) => p.includes(path.join('@lit-protocol', 'contracts'))); |
| 67 | +
|
| 68 | +if (entries.length === 0) { |
| 69 | + console.log(' <no @lit-protocol/contracts files detected>'); |
| 70 | + process.exit(0); |
| 71 | +} |
| 72 | +
|
| 73 | +let total = 0; |
| 74 | +for (const [file, info] of entries) { |
| 75 | + total += info.bytes; |
| 76 | + console.log( |
| 77 | + ` ${file} -> ${(info.bytes / 1024).toFixed(2)} KiB` |
| 78 | + ); |
| 79 | +} |
| 80 | +
|
| 81 | +console.log( |
| 82 | + ` Total -> ${(total / 1024 / 1024).toFixed(3)} MiB` |
| 83 | +); |
| 84 | +NODE |
| 85 | +} |
| 86 | + |
| 87 | +summarise_meta "Constants bundle includes:" "$BUNDLE_DIR/constants-meta.json" |
| 88 | +summarise_meta "Contracts SDK bundle includes:" "$BUNDLE_DIR/contracts-sdk-meta.json" |
| 89 | + |
| 90 | +echo "" |
| 91 | +echo "Artifacts written to $BUNDLE_DIR" |
0 commit comments