forked from tahowallet/extension
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgenerate-validators.ts
53 lines (47 loc) · 1.65 KB
/
generate-validators.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
import AjvJTD from "ajv/dist/jtd"
import AjvJSON from "ajv"
import standaloneCode from "ajv/dist/standalone"
import { writeFileSync } from "fs"
import path from "path"
import { schema } from "@uniswap/token-lists"
import { swapPriceJTD, swapQuoteJTD } from "./lib/validate/0x-swap"
import {
alchemyGetAssetTransfersJTD,
alchemyTokenBalanceJTD,
alchemyTokenMetadataJTD,
} from "./lib/validate/alchemy"
import { metadataJTD } from "./lib/validate/erc721"
import { coingeckoPriceSchema } from "./lib/validate/prices"
const ajvJTD = new AjvJTD({
allErrors: true,
code: { source: true, es5: true },
})
.addSchema(metadataJTD, "isValidMetadata")
.addSchema(alchemyGetAssetTransfersJTD, "isValidAlchemyAssetTransferResponse")
.addSchema(alchemyTokenBalanceJTD, "isValidAlchemyTokenBalanceResponse")
.addSchema(alchemyTokenMetadataJTD, "isValidAlchemyTokenMetadataResponse")
.addSchema(swapPriceJTD, "isValidSwapPriceResponse")
.addSchema(swapQuoteJTD, "isValidSwapQuoteResponse")
const ajvJSON = new AjvJSON({
allErrors: true,
code: { source: true },
formats: { "date-time": true, uri: true },
})
.addSchema(coingeckoPriceSchema, "isValidCoinGeckoPriceResponse")
.addSchema(schema, "isValidUniswapTokenListResponse")
const jtdModuleCode = standaloneCode(ajvJTD).replace(
'/*# sourceURL="https://uniswap.org/tokenlist.schema.json" */',
"",
)
const jsonModuleCode = standaloneCode(ajvJSON).replace(
'/*# sourceURL="https://uniswap.org/tokenlist.schema.json" */',
"",
)
writeFileSync(
path.join(__dirname, "/lib/validate/jtd-validators.js"),
jtdModuleCode,
)
writeFileSync(
path.join(__dirname, "/lib/validate/json-validators.js"),
jsonModuleCode,
)