UNPKG

envio

Version:

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

106 lines (94 loc) 3.66 kB
// Generated by ReScript, PLEASE EDIT WITH CARE 'use strict'; var Js_exn = require("rescript/lib/js/js_exn.js"); var EntityHistory = require("./db/EntityHistory.res.js"); var ErrorHandling = require("./ErrorHandling.res.js"); var Caml_exceptions = require("rescript/lib/js/caml_exceptions.js"); var Caml_js_exceptions = require("rescript/lib/js/caml_js_exceptions.js"); var StorageError = /* @__PURE__ */Caml_exceptions.create("Persistence.StorageError"); var entityHistoryActionEnumConfig_name = EntityHistory.RowAction.name; var entityHistoryActionEnumConfig_variants = EntityHistory.RowAction.variants; var entityHistoryActionEnumConfig_schema = EntityHistory.RowAction.schema; var entityHistoryActionEnumConfig = { name: entityHistoryActionEnumConfig_name, variants: entityHistoryActionEnumConfig_variants, schema: entityHistoryActionEnumConfig_schema, default: "SET" }; function make(userEntities, dcRegistryEntityConfig, allEnums, staticTables, storage, onStorageInitialize) { var allEntities = userEntities.concat([dcRegistryEntityConfig]); var allEnums$1 = allEnums.concat([entityHistoryActionEnumConfig]); return { userEntities: userEntities, staticTables: staticTables, allEntities: allEntities, allEnums: allEnums$1, storageStatus: "Unknown", storage: storage, onStorageInitialize: onStorageInitialize }; } async function init(persistence, skipIsInitializedCheckOpt, resetOpt) { var skipIsInitializedCheck = skipIsInitializedCheckOpt !== undefined ? skipIsInitializedCheckOpt : false; var reset = resetOpt !== undefined ? resetOpt : false; try { var promise = persistence.storageStatus; var shouldRun; if (typeof promise !== "object") { shouldRun = true; } else if (promise.TAG === "Initializing") { await promise._0; shouldRun = reset; } else { shouldRun = reset; } if (!shouldRun) { return ; } var resolveRef = { contents: null }; var promise$1 = new Promise((function (resolve, param) { resolveRef.contents = resolve; })); persistence.storageStatus = { TAG: "Initializing", _0: promise$1 }; if (!(reset || skipIsInitializedCheck) && await persistence.storage.isInitialized()) { persistence.storageStatus = { TAG: "Ready", cleanRun: false }; } else { await persistence.storage.initialize(persistence.allEntities, persistence.staticTables, persistence.allEnums, reset || !skipIsInitializedCheck); persistence.storageStatus = { TAG: "Ready", cleanRun: true }; var onStorageInitialize = persistence.onStorageInitialize; if (onStorageInitialize !== undefined) { await onStorageInitialize(); } } return resolveRef.contents(); } catch (raw_exn){ var exn = Caml_js_exceptions.internalToOCamlException(raw_exn); return ErrorHandling.mkLogAndRaise(undefined, "EE800: Failed to initialize the indexer storage.", exn); } } function getInitializedStorageOrThrow(persistence) { var match = persistence.storageStatus; if (typeof match !== "object" || match.TAG === "Initializing") { return Js_exn.raiseError("Failed to access the indexer storage. The Persistence layer is not initialized."); } else { return persistence.storage; } } exports.StorageError = StorageError; exports.entityHistoryActionEnumConfig = entityHistoryActionEnumConfig; exports.make = make; exports.init = init; exports.getInitializedStorageOrThrow = getInitializedStorageOrThrow; /* EntityHistory Not a pure module */