UNPKG

9.84 kBJavaScriptView Raw
1"use strict";
2var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3 if (k2 === undefined) k2 = k;
4 Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5}) : (function(o, m, k, k2) {
6 if (k2 === undefined) k2 = k;
7 o[k2] = m[k];
8}));
9var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10 Object.defineProperty(o, "default", { enumerable: true, value: v });
11}) : function(o, v) {
12 o["default"] = v;
13});
14var __importStar = (this && this.__importStar) || function (mod) {
15 if (mod && mod.__esModule) return mod;
16 var result = {};
17 if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18 __setModuleDefault(result, mod);
19 return result;
20};
21Object.defineProperty(exports, "__esModule", { value: true });
22exports.isValidAddress = exports.isValidSecret = exports.schemaValidate = void 0;
23const _ = __importStar(require("lodash"));
24const assert = __importStar(require("assert"));
25const { Validator } = require('jsonschema');
26const errors_1 = require("./errors");
27const ripple_address_codec_1 = require("ripple-address-codec");
28const utils_1 = require("./utils");
29Object.defineProperty(exports, "isValidSecret", { enumerable: true, get: function () { return utils_1.isValidSecret; } });
30function loadSchemas() {
31 const schemas = [
32 require('./schemas/objects/tx-json.json'),
33 require('./schemas/objects/transaction-type.json'),
34 require('./schemas/objects/hash128.json'),
35 require('./schemas/objects/hash256.json'),
36 require('./schemas/objects/sequence.json'),
37 require('./schemas/objects/ticket-sequence.json'),
38 require('./schemas/objects/signature.json'),
39 require('./schemas/objects/issue.json'),
40 require('./schemas/objects/ledger-version.json'),
41 require('./schemas/objects/max-adjustment.json'),
42 require('./schemas/objects/memo.json'),
43 require('./schemas/objects/memos.json'),
44 require('./schemas/objects/public-key.json'),
45 require('./schemas/objects/private-key.json'),
46 require('./schemas/objects/uint32.json'),
47 require('./schemas/objects/value.json'),
48 require('./schemas/objects/source-adjustment.json'),
49 require('./schemas/objects/destination-adjustment.json'),
50 require('./schemas/objects/tag.json'),
51 require('./schemas/objects/lax-amount.json'),
52 require('./schemas/objects/lax-lax-amount.json'),
53 require('./schemas/objects/min-adjustment.json'),
54 require('./schemas/objects/source-exact-adjustment.json'),
55 require('./schemas/objects/destination-exact-adjustment.json'),
56 require('./schemas/objects/destination-address-tag.json'),
57 require('./schemas/objects/transaction-hash.json'),
58 require('./schemas/objects/address.json'),
59 require('./schemas/objects/x-address.json'),
60 require('./schemas/objects/classic-address.json'),
61 require('./schemas/objects/adjustment.json'),
62 require('./schemas/objects/quality.json'),
63 require('./schemas/objects/amount.json'),
64 require('./schemas/objects/amountbase.json'),
65 require('./schemas/objects/balance.json'),
66 require('./schemas/objects/blob.json'),
67 require('./schemas/objects/currency.json'),
68 require('./schemas/objects/signed-value.json'),
69 require('./schemas/objects/orderbook.json'),
70 require('./schemas/objects/instructions.json'),
71 require('./schemas/objects/settings-plus-memos.json'),
72 require('./schemas/specifications/settings.json'),
73 require('./schemas/specifications/payment.json'),
74 require('./schemas/specifications/get-payment.json'),
75 require('./schemas/specifications/escrow-cancellation.json'),
76 require('./schemas/specifications/order-cancellation.json'),
77 require('./schemas/specifications/order.json'),
78 require('./schemas/specifications/escrow-execution.json'),
79 require('./schemas/specifications/escrow-creation.json'),
80 require('./schemas/specifications/payment-channel-create.json'),
81 require('./schemas/specifications/payment-channel-fund.json'),
82 require('./schemas/specifications/payment-channel-claim.json'),
83 require('./schemas/specifications/check-create.json'),
84 require('./schemas/specifications/check-cash.json'),
85 require('./schemas/specifications/check-cancel.json'),
86 require('./schemas/specifications/trustline.json'),
87 require('./schemas/specifications/deposit-preauth.json'),
88 require('./schemas/specifications/account-delete.json'),
89 require('./schemas/output/sign.json'),
90 require('./schemas/output/submit.json'),
91 require('./schemas/output/get-account-info.json'),
92 require('./schemas/output/get-account-objects.json'),
93 require('./schemas/output/get-balances.json'),
94 require('./schemas/output/get-balance-sheet.json'),
95 require('./schemas/output/get-ledger.json'),
96 require('./schemas/output/get-orderbook.json'),
97 require('./schemas/output/get-orders.json'),
98 require('./schemas/output/order-change.json'),
99 require('./schemas/output/get-payment-channel.json'),
100 require('./schemas/output/prepare.json'),
101 require('./schemas/output/ledger-event.json'),
102 require('./schemas/output/get-paths.json'),
103 require('./schemas/output/get-server-info.json'),
104 require('./schemas/output/get-settings.json'),
105 require('./schemas/output/orderbook-orders.json'),
106 require('./schemas/output/outcome.json'),
107 require('./schemas/output/get-transaction.json'),
108 require('./schemas/output/get-transactions.json'),
109 require('./schemas/output/get-trustlines.json'),
110 require('./schemas/output/sign-payment-channel-claim.json'),
111 require('./schemas/output/verify-payment-channel-claim.json'),
112 require('./schemas/input/get-balances.json'),
113 require('./schemas/input/get-balance-sheet.json'),
114 require('./schemas/input/get-ledger.json'),
115 require('./schemas/input/get-orders.json'),
116 require('./schemas/input/get-orderbook.json'),
117 require('./schemas/input/get-paths.json'),
118 require('./schemas/input/get-payment-channel.json'),
119 require('./schemas/input/api-options.json'),
120 require('./schemas/input/get-settings.json'),
121 require('./schemas/input/get-account-info.json'),
122 require('./schemas/input/get-account-objects.json'),
123 require('./schemas/input/get-transaction.json'),
124 require('./schemas/input/get-transactions.json'),
125 require('./schemas/input/get-trustlines.json'),
126 require('./schemas/input/prepare-payment.json'),
127 require('./schemas/input/prepare-order.json'),
128 require('./schemas/input/prepare-trustline.json'),
129 require('./schemas/input/prepare-order-cancellation.json'),
130 require('./schemas/input/prepare-settings.json'),
131 require('./schemas/input/prepare-escrow-creation.json'),
132 require('./schemas/input/prepare-escrow-cancellation.json'),
133 require('./schemas/input/prepare-escrow-execution.json'),
134 require('./schemas/input/prepare-payment-channel-create.json'),
135 require('./schemas/input/prepare-payment-channel-fund.json'),
136 require('./schemas/input/prepare-payment-channel-claim.json'),
137 require('./schemas/input/prepare-check-create.json'),
138 require('./schemas/input/prepare-check-cash.json'),
139 require('./schemas/input/prepare-check-cancel.json'),
140 require('./schemas/input/prepare-ticket-create.json'),
141 require('./schemas/input/compute-ledger-hash.json'),
142 require('./schemas/input/sign.json'),
143 require('./schemas/input/submit.json'),
144 require('./schemas/input/generate-address.json'),
145 require('./schemas/input/sign-payment-channel-claim.json'),
146 require('./schemas/input/verify-payment-channel-claim.json'),
147 require('./schemas/input/combine.json')
148 ];
149 const titles = schemas.map((schema) => schema.title);
150 const duplicates = Object.keys(_.pickBy(_.countBy(titles), (count) => count > 1));
151 assert.ok(duplicates.length === 0, 'Duplicate schemas for: ' + duplicates);
152 const validator = new Validator();
153 validator.customFormats.xAddress = function (instance) {
154 if (instance == null) {
155 return true;
156 }
157 return ripple_address_codec_1.isValidXAddress(instance);
158 };
159 validator.customFormats.classicAddress = function (instance) {
160 if (instance == null) {
161 return true;
162 }
163 return isValidAddress(instance);
164 };
165 validator.customFormats.secret = function (instance) {
166 if (instance == null) {
167 return true;
168 }
169 return utils_1.isValidSecret(instance);
170 };
171 schemas.forEach((schema) => validator.addSchema(schema, '/' + schema.title));
172 return validator;
173}
174const schemaValidator = loadSchemas();
175function schemaValidate(schemaName, object) {
176 const schema = schemaValidator.getSchema('/' + schemaName);
177 if (schema == null) {
178 throw new errors_1.ValidationError('no schema for ' + schemaName);
179 }
180 const result = schemaValidator.validate(object, schema);
181 if (!result.valid) {
182 throw new errors_1.ValidationError(result.errors.join());
183 }
184}
185exports.schemaValidate = schemaValidate;
186function isValidAddress(address) {
187 return ripple_address_codec_1.isValidXAddress(address) || ripple_address_codec_1.isValidClassicAddress(address);
188}
189exports.isValidAddress = isValidAddress;
190//# sourceMappingURL=schema-validator.js.map
\No newline at end of file