UNPKG

envio

Version:

A latency and sync speed optimized, developer friendly blockchain data indexer.

204 lines (191 loc) • 7.17 kB
// Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; var Utils = require("./Utils.res.js"); var Js_exn = require("rescript/lib/js/js_exn.js"); var Belt_Array = require("rescript/lib/js/belt_Array.js"); var Belt_Option = require("rescript/lib/js/belt_Option.js"); var Caml_option = require("rescript/lib/js/caml_option.js"); var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js"); var MissingRequiredTopic0 = /* @__PURE__ */Caml_exceptions.create("LogSelection.MissingRequiredTopic0"); function makeTopicSelection(topic0, topic1Opt, topic2Opt, topic3Opt) { var topic1 = topic1Opt !== undefined ? topic1Opt : []; var topic2 = topic2Opt !== undefined ? topic2Opt : []; var topic3 = topic3Opt !== undefined ? topic3Opt : []; if (Utils.$$Array.isEmpty(topic0)) { return { TAG: "Error", _0: { RE_EXN_ID: MissingRequiredTopic0 } }; } else { return { TAG: "Ok", _0: { topic0: topic0, topic1: topic1, topic2: topic2, topic3: topic3 } }; } } function hasFilters(param) { return Belt_Option.isSome(Caml_option.undefined_to_opt([ param.topic1, param.topic2, param.topic3 ].find(function (topic) { return !Utils.$$Array.isEmpty(topic); }))); } function compressTopicSelections(topicSelections) { var topic0sOfSelectionsWithoutFilters = []; var selectionsWithFilters = []; Belt_Array.forEach(topicSelections, (function (selection) { if (hasFilters(selection)) { selectionsWithFilters.push(selection); return ; } else { return Belt_Array.forEach(selection.topic0, (function (topic0) { topic0sOfSelectionsWithoutFilters.push(topic0); })); } })); if (topic0sOfSelectionsWithoutFilters.length === 0) { return selectionsWithFilters; } var selectionWithoutFilters_topic1 = []; var selectionWithoutFilters_topic2 = []; var selectionWithoutFilters_topic3 = []; var selectionWithoutFilters = { topic0: topic0sOfSelectionsWithoutFilters, topic1: selectionWithoutFilters_topic1, topic2: selectionWithoutFilters_topic2, topic3: selectionWithoutFilters_topic3 }; return Belt_Array.concat([selectionWithoutFilters], selectionsWithFilters); } function make(addresses, topicSelections) { var topicSelections$1 = compressTopicSelections(topicSelections); return { addresses: addresses, topicSelections: topicSelections$1 }; } var emptyTopics = []; function noopGetter(param) { return emptyTopics; } function parseEventFiltersOrThrow(eventFilters, sighash, params, topic1Opt, topic2Opt, topic3Opt) { var topic1 = topic1Opt !== undefined ? topic1Opt : noopGetter; var topic2 = topic2Opt !== undefined ? topic2Opt : noopGetter; var topic3 = topic3Opt !== undefined ? topic3Opt : noopGetter; var filterByAddresses = { contents: false }; var topic0 = [sighash]; var $$default = { topic0: topic0, topic1: emptyTopics, topic2: emptyTopics, topic3: emptyTopics }; var parse = function (eventFilters) { var tmp; tmp = !Array.isArray(eventFilters) && (eventFilters === null || typeof eventFilters !== "object") && typeof eventFilters !== "number" && typeof eventFilters !== "string" && typeof eventFilters !== "boolean" ? [eventFilters] : ( Array.isArray(eventFilters) ? ( eventFilters.length !== 0 ? eventFilters : [{}] ) : [eventFilters] ); return tmp.map(function (eventFilter) { if (!Array.isArray(eventFilter) && (eventFilter === null || typeof eventFilter !== "object") && typeof eventFilter !== "number" && typeof eventFilter !== "string" && typeof eventFilter !== "boolean") { return Js_exn.raiseError("Invalid event filters configuration. Expected an object"); } if (!(typeof eventFilter === "object" && !Array.isArray(eventFilter))) { return Js_exn.raiseError("Invalid event filters configuration. Expected an object"); } var filterKeys = Object.keys(eventFilter); if (filterKeys.length !== 0) { filterKeys.forEach(function (key) { if (!params.includes(key)) { return Js_exn.raiseError("Invalid event filters configuration. The event doesn't have an indexed parameter \"" + key + "\" and can't use it for filtering"); } }); return { topic0: topic0, topic1: topic1(eventFilter), topic2: topic2(eventFilter), topic3: topic3(eventFilter) }; } else { return $$default; } }); }; var getEventFiltersOrThrow; if (eventFilters !== undefined) { if (typeof eventFilters === "function") { try { var args = Object.defineProperty({ chainId: 0, addresses: [] }, "addresses", { get: (function () { filterByAddresses.contents = true; return []; }) }); eventFilters(args); } catch (exn){ } getEventFiltersOrThrow = filterByAddresses.contents ? (function (chain) { return { TAG: "Dynamic", _0: (function (addresses) { return parse(eventFilters({ chainId: chain, addresses: addresses })); }) }; }) : (function (chain) { return { TAG: "Static", _0: parse(eventFilters({ chainId: chain, addresses: [] })) }; }); } else { var $$static = { TAG: "Static", _0: parse(eventFilters) }; getEventFiltersOrThrow = (function (param) { return $$static; }); } } else { var $$static$1 = { TAG: "Static", _0: [$$default] }; getEventFiltersOrThrow = (function (param) { return $$static$1; }); } return { getEventFiltersOrThrow: getEventFiltersOrThrow, filterByAddresses: filterByAddresses.contents }; } exports.MissingRequiredTopic0 = MissingRequiredTopic0; exports.makeTopicSelection = makeTopicSelection; exports.hasFilters = hasFilters; exports.compressTopicSelections = compressTopicSelections; exports.make = make; exports.parseEventFiltersOrThrow = parseEventFiltersOrThrow; /* Utils Not a pure module */