UNPKG

@apillon/sdk

Version:

▶◀ Apillon SDK for NodeJS ▶◀

101 lines 3.8 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.compressIndexerSourceCode = exports.getIgnorePatterns = exports.createSquidIgnore = void 0; /* eslint-disable security/detect-non-literal-fs-filename */ const node_fs_1 = __importDefault(require("node:fs")); const node_path_1 = __importDefault(require("node:path")); const glob_1 = require("glob"); const ignore_1 = __importDefault(require("ignore")); const targz_1 = __importDefault(require("targz")); const apillon_logger_1 = require("../lib/apillon-logger"); function createSquidIgnore(squidDir) { const ig = (0, ignore_1.default)().add( // default ignore patterns ['node_modules', '.git']); const ignoreFilePaths = (0, glob_1.globSync)(['.squidignore', '**/.squidignore'], { cwd: squidDir, nodir: true, posix: true, }); if (!ignoreFilePaths.length) { return ig.add([ // squid uploaded archives directory '/builds', // squid built files '/lib', // IDE files '.idea', '.vscode', ]); } for (const ignoreFilePath of ignoreFilePaths) { const raw = node_fs_1.default .readFileSync(node_path_1.default.resolve(squidDir, ignoreFilePath)) .toString(); const ignoreDir = node_path_1.default.dirname(ignoreFilePath); const patterns = getIgnorePatterns(ignoreDir, raw); ig.add(patterns); } return ig; } exports.createSquidIgnore = createSquidIgnore; function getIgnorePatterns(ignoreDir, raw) { const lines = raw.split('\n'); const patterns = []; for (let line of lines) { line = line.trim(); if (line.length === 0) continue; if (line.startsWith('#')) continue; let pattern = line.startsWith('/') || line.startsWith('*/') || line.startsWith('**/') ? line : `**/${line}`; pattern = ignoreDir === '.' ? pattern : `${toRootPattern(ignoreDir)}${toRootPattern(pattern)}`; patterns.push(pattern); } return patterns; } exports.getIgnorePatterns = getIgnorePatterns; function toRootPattern(pattern) { return pattern.startsWith('/') ? pattern : `/${pattern}`; } function compressIndexerSourceCode(srcDir, destDir) { const squidIgnore = createSquidIgnore(srcDir); let filesCount = 0; node_fs_1.default.mkdirSync(node_path_1.default.dirname(destDir), { recursive: true }); return new Promise((resolve, reject) => { targz_1.default.compress({ src: srcDir, dest: destDir, tar: { ignore: (name) => { const relativePath = node_path_1.default.relative(node_path_1.default.resolve(srcDir), node_path_1.default.resolve(name)); if (squidIgnore.ignores(relativePath)) { apillon_logger_1.ApillonLogger.log(`ignoring ${relativePath}`); return true; } apillon_logger_1.ApillonLogger.log(`adding ${relativePath}`); filesCount++; return false; }, }, }, (err) => { if (err) { apillon_logger_1.ApillonLogger.log(err); reject(`Compression failed. ${err.message ? `Error: ${err.message}` : ''}`); } else { resolve(filesCount); } }); }); } exports.compressIndexerSourceCode = compressIndexerSourceCode; //# sourceMappingURL=indexer-utils.js.map