UNPKG

@vtex/api

Version:
85 lines (84 loc) 3.59 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFallbackFile = exports.saveVersion = exports.updateMetaInfoCache = exports.getMetaInfoKey = void 0; const crypto_1 = __importDefault(require("crypto")); const ramda_1 = require("ramda"); const semver = __importStar(require("semver")); const getMetaInfoKey = (account, workspace) => `${account}-${workspace}-meta-infos`; exports.getMetaInfoKey = getMetaInfoKey; const hashMD5 = (text) => crypto_1.default .createHash('md5') .update(text) .digest('hex'); const updateMetaInfoCache = async (cacheStorage, account, workspace, dependencies, logger) => { if (workspace !== 'master') { return; } const key = (0, exports.getMetaInfoKey)(account, workspace); const hash = hashMD5(dependencies.toString()); try { const storedDependencies = await cacheStorage.get(key) || ''; if (hash !== hashMD5(storedDependencies.toString())) { await cacheStorage.set(key, dependencies); } } catch (error) { logger.error({ error, message: 'Apps disk cache update failed' }); } return; }; exports.updateMetaInfoCache = updateMetaInfoCache; const getFallbackKey = (appName, major) => `${appName}@${major}`; const saveVersion = async (app, cacheStorage) => { const [appName, version] = app.split('@'); const major = (0, ramda_1.head)(version.split('.')) || ''; const fallbackKey = getFallbackKey(appName, major); if (cacheStorage.has(fallbackKey)) { const savedVersion = await cacheStorage.get(fallbackKey); if (savedVersion && (version === `${major}.x` || semver.gt(version, savedVersion))) { await cacheStorage.set(fallbackKey, version); } } else { await cacheStorage.set(fallbackKey, version); } }; exports.saveVersion = saveVersion; const getFallbackFile = async (app, path, cacheStorage, apps) => { const [appName, version] = app.split('@'); const major = (0, ramda_1.head)(version.split('.')) || ''; const fallbackKey = getFallbackKey(appName, major); const fallbackVersion = await cacheStorage.get(fallbackKey); if (fallbackVersion) { const appFallbackVersion = `${appName}@${fallbackVersion}`; return apps.getAppFile(appFallbackVersion, path); } throw Error('Fallback version was not found'); }; exports.getFallbackFile = getFallbackFile;