import * as wmill from "https://deno.land/x/windmill@v1.39.0/mod.ts"
export async function main() {
const state = await wmill.getInternalState();
const previousLatestId = state?.latestId ?? 0;
// Fetch and validate
const data = await (await fetch('https://hub.windmill.dev/searchData')).json();
const asks = assertAsks(data.asks);
const newAsks = asks.filter(ask => ask.ask_id > previousLatestId);
// Update state
const latestId: number = asks.reduce((prevId, ask) => {
return Math.max(prevId, ask.ask_id);
}, previousLatestId);
const newState = {
...state,
latestId,
};
await wmill.setInternalState(newState);
console.info('old state', state);
console.info('new state', newState);
// Return new asks
return newAsks;
}
function assertAsks(asks: any): { ask_id: number }[] {
if (!Array.isArray(asks)) {
throw Error('"asks" must be an array');
}
if (!asks.every((ask: any) => !!ask && Number.isInteger(ask.ask_id))) {
throw Error('Not all asks have an integer "ask_id"');
}
return asks;
}
Submitted by jaller94 933 days ago