taler-typescript-core

Wallet core logic and WebUIs for various components
Log | Files | Refs | Submodules | README | LICENSE

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