Skip to main content
Module

x/xumm/generate-deno.sh

XUMM Typescript / Javascript SDK - Interact with the XUMM Developer API the easy way
Go to Latest
File
#!/usr/bin/env bash
echo "Parsing TS to Deno"
replaceTsPath(){ grep -R "from '$1'" ./deno/*|grep '.ts:'|cut -d ":" -f 1|sort|uniq|xargs -I___ sed -i -e "s+from '$1'+from '$2'+g" ___}
# Remove TS filesfind ./deno -iname '*.ts' -delete
# Create subdirectories based on src structurefind ./src -type d |sed "s/^.\/src/deno/g"|xargs -I___ mkdir -p ___
# Copy TS files from ./src to ./denofind ./src -iname '*.ts'|sed "s/^.\/src//g"|xargs -I___ cp ./src___ ./deno___
# Transform TS / Deno paths (import / export)replaceTsPath '../' '../index.ts'replaceTsPath './types' './types/index.ts'replaceTsPath './types/xumm-api' './types/xumm-api/index.ts'replaceTsPath './utils' './utils.ts'replaceTsPath './xumm-api' './xumm-api/index.ts'replaceTsPath './SubscriptionCallbackParams' './SubscriptionCallbackParams.ts'replaceTsPath './ApplicationDetails' './ApplicationDetails.ts'replaceTsPath './AnyJson' './AnyJson.ts'
replaceTsPath './Storage' './Storage.ts'replaceTsPath './Payload' './Payload.ts'replaceTsPath './Meta' './Meta.ts'replaceTsPath './xApp' './xApp.ts'
# Transform TS / Deno paths globally in type export sed -i -e "s+from './\(.*\)/\([a-zA-Z]*\)'+from './\1/\2.ts'+g" ./deno/types/index.ts
sed -i -e "s+: WebSocket.MessageEvent+: MessageEvent+g" ./deno/Payload.tssed -i -e "s+: WebSocket.CloseEvent+: CloseEvent+g" ./deno/Payload.ts
# Replace SDK user agentpackageVersion=$(cat package.json|grep version|cut -d '"' -f 4)sed -i -e "s+'User-Agent': .*+'User-Agent': 'xumm-sdk/deno:${packageVersion}',+g" deno/Meta.tssed -i -e "s+if.*global.*window.*+if (typeof Deno !== 'undefined') {+g" deno/Meta.tssed -i -e "s+Running in node+Running in Deno+g" deno/Meta.ts
# Remove/replace TS specific packagessed -i -e "s/\.\/index/.\/index.ts/g" ./deno/Meta.tssed -i -e "/import.*'os'/d" ./deno/Meta.tssed -i -e "/fetchPonyfill/d" ./deno/Meta.tssed -i -e "/import.*'..\/package.json'/d" ./deno/Meta.tssed -i -e "/import.*'..\/package.json'/d" ./deno/Meta.tssed -i -e "/import.*node-fetch'/d" ./deno/Meta.ts
sed -i -e "s+.*from 'dotenv'+import 'https://deno.land/x/dotenv/load.ts'+g" ./deno/index.ts
# Fix index Env/Dotenv import Deno vs Nodesed -i -e "/.*\/\* Node \*\/.*/d" ./deno/index.tssed -i -e "/.*\@ts-ignore/d" ./deno/index.tssed -i -e "s+/\* Deno \*/ ++g" ./deno/index.tssed -i -e "s/window.URLSearchParams/URLSearchParams/g" ./deno/index.tssed -i -e "s/\.\/types\/index/.\/types\/index.ts/g" ./deno/index.ts
# Meta AnyJson | Any » Unknownsed -i -e "s/, any/, unknown/" ./deno/types/Meta/AnyJson.ts
# CamelCasesed -i -e "s/user_device/'user_device'/" ./deno/types/xApp/xAppOttData.tssed -i -e "s/account_info/'account_info'/" ./deno/types/xApp/xAppOttData.ts
# Remove ws lib. import / namespacesed -i -e "/import type WebSocket from 'ws'/d" ./deno/types/Payload/PayloadSubscription.tssed -i -e "/import WebSocket from 'ws'/d" ./deno/Payload.ts
# Update WS connection (skip mock)sed -i -e "/.*global as any.*MockedWebSocket.*/d" ./deno/Payload.tssed -i -e "s+ : \(new WebSocket.*\)+const socket = \1+g" ./deno/Payload.ts
# Deno specific DebugreplaceTsPath 'debug' 'https://deno.land/x/debug/mod.ts'
# Clean OSX sed backup files:find ./deno -iname '*.ts-e' -delete
##### RUN CHECKSecho "Done, generated"echoecho "Generated, running basic checks (Deno Docker)"# echo "Cleaning"# docker rmi hayd/denoecho "Running"docker run --rm -v $(pwd)/.deno-cache:/deno-dir -v $(pwd):/root/xumm-sdk hayd/deno sh -c 'cd ~/xumm-sdk; deno lint --unstable mod.ts deno/*.ts deno/*/*; deno test --allow-env=DEBUG,XUMM_APIKEY,XUMM_APISECRET --allow-read=.env,.env.defaults mod.ts'echo "Done"echo