tsds-publish
Version:
Development stack for TypeScript libraries
179 lines • 7.5 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
Object.defineProperty(exports, "default", {
enumerable: true,
get: function() {
return publish;
}
});
var _crossspawncb = /*#__PURE__*/ _interop_require_default(require("cross-spawn-cb"));
var _fs = /*#__PURE__*/ _interop_require_default(require("fs"));
var _fsremovecompat = require("fs-remove-compat");
var _getoptscompat = /*#__PURE__*/ _interop_require_default(require("getopts-compat"));
var _nodeversioncall = require("node-version-call");
var _path = /*#__PURE__*/ _interop_require_default(require("path"));
var _queuecb = /*#__PURE__*/ _interop_require_default(require("queue-cb"));
var _url = /*#__PURE__*/ _interop_require_default(require("url"));
var _hasChangedts = /*#__PURE__*/ _interop_require_default(require("./lib/hasChanged.js"));
function _define_property(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function _interop_require_default(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
function _object_spread(target) {
for(var i = 1; i < arguments.length; i++){
var source = arguments[i] != null ? arguments[i] : {};
var ownKeys = Object.keys(source);
if (typeof Object.getOwnPropertySymbols === "function") {
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function(sym) {
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
}));
}
ownKeys.forEach(function(key) {
_define_property(target, key, source[key]);
});
}
return target;
}
function ownKeys(object, enumerableOnly) {
var keys = Object.keys(object);
if (Object.getOwnPropertySymbols) {
var symbols = Object.getOwnPropertySymbols(object);
if (enumerableOnly) {
symbols = symbols.filter(function(sym) {
return Object.getOwnPropertyDescriptor(object, sym).enumerable;
});
}
keys.push.apply(keys, symbols);
}
return keys;
}
function _object_spread_props(target, source) {
source = source != null ? source : {};
if (Object.getOwnPropertyDescriptors) {
Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
} else {
ownKeys(Object(source)).forEach(function(key) {
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
});
}
return target;
}
var major = +process.versions.node.split('.')[0];
var __dirname = _path.default.dirname(typeof __filename === 'undefined' ? _url.default.fileURLToPath(require("url").pathToFileURL(__filename).toString()) : __filename);
var dist = _path.default.join(__dirname, '..');
function run(args, options_, callback) {
var _options_package;
var cwd = options_.cwd || process.cwd();
var options = _object_spread({}, options_);
options.package = options.package || JSON.parse(_fs.default.readFileSync(_path.default.join(cwd, 'package.json'), 'utf8'));
if ((_options_package = options.package) === null || _options_package === void 0 ? void 0 : _options_package.private) {
var _options_package1;
console.log("Skipping ".concat((_options_package1 = options.package) === null || _options_package1 === void 0 ? void 0 : _options_package1.name, ". Private"));
return callback();
}
var opts = (0, _getoptscompat.default)(args, {
alias: {
otp: 'o',
'dry-run': 'd'
},
boolean: [
'yolo',
'dry-run'
]
});
(0, _hasChangedts.default)(options, function(err, result) {
var _options_package;
if (err) return callback(err);
if (!(result === null || result === void 0 ? void 0 : result.changed)) {
var _options_package1;
console.log("Skipping ".concat((_options_package1 = options.package) === null || _options_package1 === void 0 ? void 0 : _options_package1.name, ". ").concat(result === null || result === void 0 ? void 0 : result.reason));
callback();
return;
}
console.log("Publishing ".concat((_options_package = options.package) === null || _options_package === void 0 ? void 0 : _options_package.name, ". ").concat(result === null || result === void 0 ? void 0 : result.reason));
var queue = new _queuecb.default(1);
// run tests
if (!opts.yolo) {
queue.defer(function(cb) {
return (0, _fsremovecompat.safeRm)(_path.default.join(cwd, 'node_modules'), function(err) {
return cb(err);
});
});
queue.defer(_crossspawncb.default.bind(null, 'npm', [
'ci'
], _object_spread_props(_object_spread({}, options), {
cwd: cwd
})));
queue.defer(_crossspawncb.default.bind(null, 'npm', [
'test'
], _object_spread_props(_object_spread({}, options), {
cwd: cwd
})));
}
// update the version
var versionArgs = [
'version',
opts._.length > 0 ? opts._[0] : 'patch'
];
queue.defer(function(cb) {
return (0, _crossspawncb.default)('npm', versionArgs, options, function(err) {
if (err) return cb(err);
options.package = JSON.parse(_fs.default.readFileSync(_path.default.join(cwd, 'package.json'), 'utf8'));
cb();
});
});
// do publish
// Safeguard: block actual publish in test environment without --dry-run
if (process.env.NODE_ENV === 'test' && !opts['dry-run']) {
return callback(new Error('Cannot publish in test environment without --dry-run'));
}
var publishArgs = [
'publish'
];
if (opts['dry-run']) publishArgs.push('--dry-run');
if (opts.otp) publishArgs.push("--otp=".concat(opts.otp));
queue.defer(_crossspawncb.default.bind(null, 'npm', publishArgs, options));
queue.defer(function(cb) {
return (0, _crossspawncb.default)('git', [
'add',
'.'
], options, function() {
return cb();
});
});
queue.defer(function(cb) {
var _options_package;
return (0, _crossspawncb.default)('git', [
'commit',
'-m',
"".concat((_options_package = options.package) === null || _options_package === void 0 ? void 0 : _options_package.version)
], options, function() {
return cb();
});
});
queue.await(callback);
});
}
var worker = major >= 20 ? run : (0, _nodeversioncall.bind)('>=20', _path.default.join(dist, 'cjs', 'command.js'), {
callbacks: true
});
function publish(args, options, callback) {
worker(args, options, callback);
}
/* CJS INTEROP */ if (exports.__esModule && exports.default) { try { Object.defineProperty(exports.default, '__esModule', { value: true }); for (var key in exports) { exports.default[key] = exports[key]; } } catch (_) {}; module.exports = exports.default; }