create-prpc-app
Version:
Create brand new pRPC app within seconds
79 lines (78 loc) • 3.46 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.updateJson = exports.getUserPackageManager = exports.modifyJSON = exports.validateName = exports.formatError = exports.execa = void 0;
const fs_extra_1 = __importDefault(require("fs-extra"));
const path_1 = __importDefault(require("path"));
const child_process_1 = require("child_process");
const util_1 = require("util");
exports.execa = (0, util_1.promisify)(child_process_1.exec);
const DEFAULT_ERR = 'Something Went Wrong';
const errCheck = (message) => (message === null || message === void 0 ? void 0 : message.length) ? message : DEFAULT_ERR;
const formatError = (err) => {
if (typeof err === 'string')
return errCheck(err);
else if (typeof err === 'object') {
if (Array.isArray(err)) {
if (err.length) {
return (0, exports.formatError)(err.shift());
}
else
return errCheck();
}
else if (err && 'message' in err) {
return (0, exports.formatError)(err.message);
}
else if (err && 'stack' in err) {
return (0, exports.formatError)(err.stack);
}
}
return errCheck();
};
exports.formatError = formatError;
const validateName = (name) => {
if (!name.length)
return false;
return /^(?:@[a-z0-9-*~][a-z0-9-*._~]*\/)?[a-z0-9-~][a-z0-9-._~]*$/.test(name)
? true
: 'This is not a valid name';
};
exports.validateName = validateName;
function modifyJSON(userDir,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
cb) {
return __awaiter(this, void 0, void 0, function* () {
const json = yield fs_extra_1.default.readJSON(path_1.default.join(userDir, 'package.json'));
const newJson = yield cb(Object.assign({}, json));
yield fs_extra_1.default.writeFile(path_1.default.join(userDir, 'package.json'), JSON.stringify(newJson, null, 2));
return newJson;
});
}
exports.modifyJSON = modifyJSON;
const getUserPackageManager = () => {
const userAgent = process.env.npm_config_user_agent;
if (userAgent === null || userAgent === void 0 ? void 0 : userAgent.startsWith('yarn'))
return 'yarn';
if (userAgent === null || userAgent === void 0 ? void 0 : userAgent.startsWith('pnpm'))
return 'pnpm';
return 'npm';
};
exports.getUserPackageManager = getUserPackageManager;
const updateJson = (ctx) => __awaiter(void 0, void 0, void 0, function* () {
yield modifyJSON(ctx.userDir, (json) => {
json.name = ctx.appName;
return json;
});
});
exports.updateJson = updateJson;