@knapsack/app
Version:
Build Design Systems with Knapsack
103 lines • 4.32 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.setupRoutes = setupRoutes;
const fs_extra_1 = require("fs-extra");
const path_1 = require("path");
const handlebars_helpers_1 = require("../lib/handlebars-helpers");
const routes_1 = require("../lib/routes");
function setupRoutes({ patterns, allAssetSetIds, }) {
const allPatterns = patterns.getPatterns();
function getDemoUrls() {
return allPatterns === null || allPatterns === void 0 ? void 0 : allPatterns.map((pattern) => {
var _a;
return ({
id: pattern.id,
title: pattern.title,
url: (0, routes_1.createPatternUrl)({
patternId: pattern.id,
}),
templates: (_a = pattern.templates) === null || _a === void 0 ? void 0 : _a.map((template) => {
var _a, _b;
return ({
id: template.id,
title: (_a = template.title) !== null && _a !== void 0 ? _a : template.id,
url: (0, routes_1.createPatternUrl)({
patternId: pattern.id,
templateId: template.id,
}),
demoUrls: (_b = template.demoIds) === null || _b === void 0 ? void 0 : _b.flatMap((demoId) => {
if (allAssetSetIds.length === 0) {
return [
(0, routes_1.createDemoUrl)({
patternId: pattern.id,
templateId: template.id,
demoId,
assetSetId: '',
}),
];
}
return allAssetSetIds.map((assetSetId) => {
return (0, routes_1.createDemoUrl)({
patternId: pattern.id,
templateId: template.id,
demoId,
assetSetId,
});
});
}),
});
}),
});
});
}
const demoUrlsDataEndpoint = {
method: 'GET',
path: '/demo-urls-data',
handle: async () => getDemoUrls(),
};
/** This page is mainly so IE can get a list of links to view the individual templates outside of the system */
const demoUrlsEndpoint = {
method: 'GET',
path: '/demo-urls',
handle: async () => {
const demoUrlsHbsPath = (0, path_1.join)(__dirname, './templates/demo-urls.html.hbs');
if (!(0, fs_extra_1.existsSync)(demoUrlsHbsPath)) {
throw new Error(`Demo URLs handlebars template does not exist: ${demoUrlsHbsPath}`);
}
const patternDemos = getDemoUrls();
const demoUrlsHbs = await (0, fs_extra_1.readFile)(demoUrlsHbsPath, 'utf-8');
return (0, handlebars_helpers_1.hbsRenderString)({
hbsString: demoUrlsHbs,
data: {
patternDemos,
},
});
},
};
const { KS_APP_UI_URL = 'https://app.knapsack.cloud' } = process.env;
const redirectEndpoint = {
method: 'GET',
path: '/',
handle: async () => {
const redirectUrl = new URL('/site/custom/', KS_APP_UI_URL).toString();
const page = /* html */ `
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8" />
<script type="text/javascript">
var urlEnd = encodeURIComponent(window.location.origin);
var redirectUrl = '${redirectUrl}' + urlEnd;
window.location.href = redirectUrl;
</script>
<title>Knapsack Redirection</title>
</head>
<body></body>
</html>
`;
return page;
},
};
return [demoUrlsDataEndpoint, demoUrlsEndpoint, redirectEndpoint];
}
//# sourceMappingURL=routes.js.map