build-fast-web.sh (5498B)
1 #!/usr/bin/env bash 2 3 set -eu 4 set -x 5 6 export DIST=build/web 7 export NODE_PATH=$DIST:vendor 8 9 export BUNDLE_OPTIONS='--bundle --format=esm --target=esnext' 10 11 function build_idb() { 12 rm -rf packages/idb-bridge/{node_modules,lib,dist,tsconfig.tsbuildinfo} 13 idb_dir=$DIST/@gnu-taler/idb-bridge 14 mkdir -p $idb_dir 15 esbuild $BUNDLE_OPTIONS packages/idb-bridge/src/index.ts > $idb_dir/index.js 16 } 17 18 function build_taler_util() { 19 taler_util_dir=$DIST/@gnu-taler/taler-util 20 mkdir -p $taler_util_dir 21 rm -rf packages/taler-util/{node_modules,lib,dist,tsconfig.tsbuildinfo} 22 23 esbuild $BUNDLE_OPTIONS packages/taler-util/src/index.ts > $taler_util_dir/index.js 24 } 25 26 function build_fflate() { 27 fflate_dir=$DIST/fflate 28 mkdir -p $fflate_dir 29 esbuild $BUNDLE_OPTIONS vendor/fflate/src/index.ts > $fflate_dir/index.js 30 } 31 32 function build_ct() { 33 ct_dir=$DIST/cancellationtoken 34 mkdir -p $ct_dir 35 esbuild $BUNDLE_OPTIONS vendor/cancellationtoken/src/index.ts > $ct_dir/index.js 36 } 37 38 function build_wallet_core() { 39 taler_wallet_core_dir=$DIST/@gnu-taler/taler-wallet-core 40 41 rm -rf packages/taler-wallet-core/{node_modules,lib,dist,tsconfig.tsbuildinfo} 42 43 mkdir -p $taler_wallet_core_dir 44 esbuild $BUNDLE_OPTIONS --external:@gnu-taler/taler-util packages/taler-wallet-core/src/index.browser.ts > $taler_wallet_core_dir/index.js 45 } 46 47 function build_wallet_embedded() { 48 taler_wallet_embedded_dir=$DIST/@gnu-taler/taler-wallet-embedded 49 rm -rf packages/taler-wallet-embedded/{node_modules,lib,dist,tsconfig.tsbuildinfo} 50 51 mkdir -p $taler_wallet_embedded_dir 52 esbuild $BUNDLE_OPTIONS packages/taler-wallet-embedded/src/index.ts > $taler_wallet_embedded_dir/taler-wallet-embedded.js 53 } 54 55 function build_vendor() { 56 mkdir -p $DIST/$1 57 58 esbuild $BUNDLE_OPTIONS vendor/$1/src/index.js > $DIST/$1/index.js 59 } 60 61 function build_preact() { 62 mkdir -p $DIST/preact/{debug,hooks} 63 64 esbuild $BUNDLE_OPTIONS vendor/preact/src/index.js > $DIST/preact/index.js 65 esbuild $BUNDLE_OPTIONS --external:preact vendor/preact/hooks/src/index.js > $DIST/preact/hooks/index.js 66 esbuild $BUNDLE_OPTIONS --external:preact vendor/preact/debug/src/index.js > $DIST/preact/debug/index.js 67 } 68 69 function build_preact-router() { 70 mkdir -p $DIST/preact-router/match 71 72 esbuild $BUNDLE_OPTIONS --external:preact vendor/preact-router/src/index.js > $DIST/preact-router/index.js 73 esbuild $BUNDLE_OPTIONS --loader:.js=jsx --external:preact --external:preact-router vendor/preact-router/src/match.js > $DIST/preact-router/match/index.js 74 } 75 76 function build_preact_compat() { 77 mkdir -p $DIST/{react/jsx-runtime,react-dom/test-utils} 78 79 esbuild $BUNDLE_OPTIONS --loader:.js=jsx vendor/preact/compat/src/index.js > $DIST/react/index.js 80 81 esbuild $BUNDLE_OPTIONS --loader:.js=jsx --external:preact vendor/preact/compat/src/index.js > $DIST/react/index.js 82 esbuild $BUNDLE_OPTIONS --loader:.js=jsx --external:preact vendor/preact/compat/src/index.js > $DIST/react-dom/index.js 83 esbuild $BUNDLE_OPTIONS --loader:.js=jsx vendor/preact/jsx-runtime/src/index.js > $DIST/react/jsx-runtime/index.js 84 esbuild $BUNDLE_OPTIONS --loader:.js=jsx vendor/preact/test-utils/src/index.js > $DIST/react-dom/test-utils/index.js 85 } 86 87 function build_qrcode() { 88 mkdir -p $DIST/qrcode-generator 89 90 esbuild $BUNDLE_OPTIONS vendor/qrcode-generator/js/qrcode.js > $DIST/qrcode-generator/index.js 91 } 92 93 function build_history() { 94 mkdir -p $DIST/{history,resolve-pathname,value-equal,tiny-warning,tiny-invariant} 95 96 esbuild $BUNDLE_OPTIONS --loader:.js=ts vendor/tiny-warning/src/index.js > $DIST/tiny-warning/index.js 97 esbuild $BUNDLE_OPTIONS --loader:.js=ts vendor/tiny-invariant/src/index.js > $DIST/tiny-invariant/index.js 98 99 esbuild $BUNDLE_OPTIONS vendor/resolve-pathname/modules/index.js > $DIST/resolve-pathname/index.js 100 esbuild $BUNDLE_OPTIONS vendor/value-equal/modules/index.js > $DIST/value-equal/index.js 101 102 esbuild $BUNDLE_OPTIONS vendor/history/modules/index.js > $DIST/history/index.js 103 } 104 105 function build_linaria() { 106 mkdir -p $DIST/@linaria/{react,core} 107 mkdir -p $DIST/@emotion/is-prop-valid 108 109 esbuild $BUNDLE_OPTIONS vendor/@emotion/is-prop-valid/index.js > $DIST/@emotion/is-prop-valid/index.js 110 111 esbuild $BUNDLE_OPTIONS vendor/@linaria/packages/core/src/index.ts > $DIST/@linaria/core/index.js 112 esbuild $BUNDLE_OPTIONS --external:preact vendor/@linaria/packages/react/src/index.ts > $DIST/@linaria/react/index.js 113 } 114 115 function build_wallet_webextension() { 116 rm -rf packages/taler-wallet-webextension/{node_modules,lib,dist,tsconfig.tsbuildinfo,extension} 117 118 taler_wallet_webextension_dir=packages/taler-wallet-webextension/dist 119 mkdir -p $taler_wallet_webextension_dir 120 121 esbuild $BUNDLE_OPTIONS packages/taler-wallet-webextension/src/background.ts > $taler_wallet_webextension_dir/background.js 122 esbuild $BUNDLE_OPTIONS packages/taler-wallet-webextension/src/browserWorkerEntry.ts > $taler_wallet_webextension_dir/browserWorkerEntry.js 123 124 # implemented as a script because right now esbuild binary does not support plugins 125 # FIXME: remove javascript when possible 126 node ./contrib/build-fast-with-linaria.mjs packages/taler-wallet-webextension/src/popupEntryPoint.tsx $taler_wallet_webextension_dir 127 node ./contrib/build-fast-with-linaria.mjs packages/taler-wallet-webextension/src/walletEntryPoint.tsx $taler_wallet_webextension_dir 128 } 129 130 131 build_idb 132 build_taler_util 133 build_fflate 134 build_wallet_core 135 136 build_vendor date-fns 137 138 build_preact 139 build_preact-router 140 build_preact_compat 141 142 build_qrcode 143 build_history 144 build_linaria 145 146 build_wallet_webextension