UNPKG

@strapi/strapi

Version:

An open source headless CMS solution to create and manage your own API. It provides a powerful dashboard and features to make your life easier. Databases supported: MySQL, MariaDB, PostgreSQL, SQLite

81 lines (75 loc) 2.48 kB
'use strict'; var fs = require('fs'); var path = require('path'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var fs__default = /*#__PURE__*/_interopDefault(fs); var path__default = /*#__PURE__*/_interopDefault(path); const DEFAULT_OUT_DIR = 'dist'; /** * Strip `//` and `/* *\/` comments from JSON-like text without loading `typescript`. */ const stripJsonComments = (input)=>{ let result = ''; let inString = false; let stringChar = ''; let i = 0; while(i < input.length){ const char = input[i]; const next = input[i + 1]; if (inString) { result += char; if (char === '\\') { result += input[i + 1] ?? ''; i += 2; } else if (char === stringChar) { inString = false; i += 1; } else { i += 1; } } else if (char === '"' || char === "'") { inString = true; stringChar = char; result += char; i += 1; } else if (char === '/' && next === '/') { while(i < input.length && input[i] !== '\n'){ i += 1; } } else if (char === '/' && next === '*') { i += 2; while(i < input.length && !(input[i] === '*' && input[i + 1] === '/')){ i += 1; } i += 2; } else { result += char; i += 1; } } return result; }; /** * Read `compilerOptions.outDir` from tsconfig.json without loading `typescript` or * `@strapi/typescript-utils`. Returns null when the file cannot be parsed or when * `extends` may define outDir (fall back to resolveOutDir). */ const tryQuickOutDir = (appDir, tsconfigPath)=>{ let raw; try { const contents = fs__default.default.readFileSync(tsconfigPath, 'utf8'); raw = JSON.parse(stripJsonComments(contents)); } catch { return null; } if (!raw || typeof raw !== 'object') { return null; } const config = raw; const localOutDir = config.compilerOptions?.outDir; if (config.extends && localOutDir === undefined) { return null; } return path__default.default.resolve(appDir, localOutDir ?? DEFAULT_OUT_DIR); }; exports.stripJsonComments = stripJsonComments; exports.tryQuickOutDir = tryQuickOutDir; //# sourceMappingURL=try-quick-outdir.js.map