UNPKG

piral-cli

Version:

The standard CLI for creating and building a Piral instance or a Pilet.

74 lines 2.79 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getPiletSpecMeta = getPiletSpecMeta; const fs_1 = require("fs"); const hash_1 = require("./hash"); const checkV1 = /^\/\/\s*@pilet\s+v:1\s*\(([A-Za-z0-9\_\:\-]+)\)/; const checkV2 = /^\/\/\s*@pilet\s+v:2\s*(?:\(([A-Za-z0-9\_\:\-]+),\s*(.*)\))?/; const checkV3 = /^\/\/\s*@pilet\s+v:3\s*(?:\(([A-Za-z0-9\_\:\-]+),\s*(.*)\))?/; const isUrl = /^https?:\/\//; function getDependencies(deps, basePath) { try { const depMap = JSON.parse(deps); if (depMap && typeof depMap === 'object') { return Object.keys(depMap).reduce((obj, depName) => { const depUrl = depMap[depName]; if (typeof depUrl === 'string') { const url = isUrl.test(depUrl) ? depUrl : `${basePath}${depUrl}`; obj[depName] = url; } return obj; }, {}); } } catch { } return {}; } function getPiletSpecMeta(target, basePath) { if ((0, fs_1.existsSync)(target) && (0, fs_1.statSync)(target).isFile()) { const content = (0, fs_1.readFileSync)(target, 'utf8'); if (checkV1.test(content)) { // uses single argument; requireRef (required) const [, requireRef] = checkV1.exec(content); return { spec: 'v1', requireRef, integrity: (0, hash_1.computeIntegrity)(content), }; } else if (checkV2.test(content)) { // uses two arguments; requireRef and dependencies as JSON (required) const [, requireRef, plainDependencies] = checkV2.exec(content); return { spec: 'v2', requireRef, dependencies: getDependencies(plainDependencies, basePath), }; } else if (checkV3.test(content)) { // uses two arguments; requireRef and dependencies as JSON (required) const [, requireRef, plainDependencies] = checkV3.exec(content); return { spec: 'v3', requireRef, dependencies: getDependencies(plainDependencies, basePath), }; } else if (content.includes('"Container initialization failed as it has already been initialized with a different share scope"') && /^var [A-Za-z0-9_]+;/.test(content)) { return { spec: 'mf', }; } else { // uses no arguments return { spec: 'v0', hash: (0, hash_1.computeHash)(content), noCache: true, }; } } return {}; } //# sourceMappingURL=spec.js.map