UNPKG

@hashgraph/solo

Version:

An opinionated CLI tool to deploy and manage private Hedera Networks.

61 lines 2.88 kB
// SPDX-License-Identifier: Apache-2.0 var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; import fs from 'node:fs/promises'; import { PathEx } from '../../../business/utils/path-ex.js'; import { inject, injectable } from 'tsyringe-neo'; import { InjectTokens } from '../../../core/dependency-injection/inject-tokens.js'; import { patchInject } from '../../../core/dependency-injection/container-helper.js'; let FileSystemCacheCatalogStore = class FileSystemCacheCatalogStore { basePath; catalogFileName = 'cache-catalog.json'; baseDirectory; constructor(basePath) { this.basePath = basePath; this.basePath = patchInject(basePath, InjectTokens.HomeDirectory, this.constructor.name); this.baseDirectory = PathEx.join(this.basePath, 'cache'); } async save(catalog) { const path = this.getCatalogPath(); await fs.mkdir(this.baseDirectory, { recursive: true }); await fs.writeFile(path, JSON.stringify(catalog, undefined, 2)); } async load() { const path = this.getCatalogPath(); const raw = await fs.readFile(path, 'utf8'); return JSON.parse(raw); } async exists() { return fs .access(this.getCatalogPath()) .then(() => true) .catch(() => false); } async clear() { await fs.rm(this.baseDirectory, { recursive: true, force: true }); } resolvePath(target, directoryPath) { const safeName = `${target.name}__${target.version}`.replaceAll('/', '__').replaceAll(':', '__'); return PathEx.join(this.baseDirectory, directoryPath, `${safeName}.tar`); } getCatalogPath() { return PathEx.join(this.baseDirectory, this.catalogFileName); } }; FileSystemCacheCatalogStore = __decorate([ injectable(), __param(0, inject(InjectTokens.HomeDirectory)), __metadata("design:paramtypes", [String]) ], FileSystemCacheCatalogStore); export { FileSystemCacheCatalogStore }; //# sourceMappingURL=file-system-cache-catalog-store.js.map