motionlink-cli
Version:
Making it easy to use Notion as a Content Management system for personal websites, portfolios, blogs, business homepages, and other kinds of static websites.
69 lines • 2.66 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Host = void 0;
const express_1 = __importDefault(require("express"));
const openurl_1 = __importDefault(require("openurl"));
const logger_1 = require("../logger");
const HANDLER_PORT = 8080;
var Host;
(function (Host) {
Host["none"] = "none";
Host["netlify"] = "netlify";
})(Host = exports.Host || (exports.Host = {}));
class ConsoleService {
constructor() {
this.logger = (0, logger_1.getLogger)();
}
/**
* Makes a connect request to the Motionlink Console.
*
* Returns the Motionlink vars and host site url string on success, throws on error.
*
* If given host was none, the returned site url is empty.
*/
async connect(githubRepoUrl, host, consoleUrl) {
return new Promise((resolve, reject) => {
const app = (0, express_1.default)();
if (!Boolean(consoleUrl)) {
consoleUrl = 'https://app.motionlink.co';
}
let server;
app.get('/callback', (req, res) => {
const status = req.query.status === 'true';
if (status) {
resolve({
secureUrl: req.query.secureUrl,
vars: req.query.vars,
});
}
else {
reject(req.query.message);
}
res.redirect(`${consoleUrl}/connect_completed`);
setTimeout(() => server.close(), 2000);
});
server = app.listen(HANDLER_PORT, async () => {
const redirectUri = `http://localhost:${HANDLER_PORT}/callback`;
const queryUrl = new URL(`${consoleUrl}/market`);
queryUrl.searchParams.append('source', githubRepoUrl);
queryUrl.searchParams.append('host', host);
queryUrl.searchParams.append('redirect_uri', redirectUri);
queryUrl.searchParams.append('q', 'connect');
this.logger.logWithColor(queryUrl.href);
openurl_1.default.open(queryUrl.href);
});
});
}
static get instance() {
var _a;
return (_a = this._instance) !== null && _a !== void 0 ? _a : (this._instance = new ConsoleService());
}
static setMockedInstance(instance) {
this._instance = instance;
}
}
exports.default = ConsoleService;
//# sourceMappingURL=console_service.js.map