UNPKG

@kobold/excel

Version:

Kobold excel data handler

72 lines (52 loc) 2.22 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault"); var _Object$defineProperty = require("@babel/runtime-corejs3/core-js/object/define-property"); _Object$defineProperty(exports, "__esModule", { value: true }); exports.Excel = void 0; var _map = _interopRequireDefault(require("@babel/runtime-corejs3/core-js/map")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime-corejs3/helpers/defineProperty")); var _files = require("./files"); var _sheet = require("./sheet"); var _utilities = require("./utilities"); // TODO: Where should this live as well? Here? In a more obvious location? Next to the enum? const fallbackLanguage = _files.Language.ENGLISH; class Excel { constructor(opts) { (0, _defineProperty2.default)(this, "kobold", void 0); (0, _defineProperty2.default)(this, "defaultLanguage", void 0); (0, _defineProperty2.default)(this, "rootListCache", void 0); (0, _defineProperty2.default)(this, "sheetCache", new _map.default()); this.kobold = opts.kobold; this.defaultLanguage = opts.language; } async getSheet(RowClass, opts) { var _ref, _opts$language; const language = (_ref = (_opts$language = opts === null || opts === void 0 ? void 0 : opts.language) !== null && _opts$language !== void 0 ? _opts$language : this.defaultLanguage) !== null && _ref !== void 0 ? _ref : fallbackLanguage; const cacheKey = `${RowClass.sheet}:${language}`; let sheet = this.sheetCache.get(cacheKey); if (sheet != null) { return sheet; } // Make sure the sheet (technically) exists const sheetName = RowClass.sheet; const { sheets } = await this.getRootList(); (0, _utilities.assert)(sheets.has(sheetName), `Sheet ${sheetName} is not listed in the root excel list.`); sheet = new _sheet.Sheet({ kobold: this.kobold, RowClass, language }); this.sheetCache.set(cacheKey, sheet); return sheet; } async getRootList() { if (this.rootListCache == null) { this.rootListCache = await this.kobold.getFile('exd/root.exl', _files.ExcelList); } return this.rootListCache; } } exports.Excel = Excel;