UNPKG

@knapsack/app

Version:

Build Design Systems with Knapsack

64 lines 2.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.DesignTokens = void 0; const file_utils_1 = require("@knapsack/file-utils"); const path_1 = require("path"); const file_db_1 = require("../../server/dbs/file-db"); class DesignTokens extends file_db_1.FileDb { /** `data/knapsack.design-tokens.json` */ configFilePath; data; distDir; designTokensConfig; site; constructor({ dataDir, designTokensConfig, distDir, publicDir, siteId, }) { if (designTokensConfig?.srcFilePath) { (0, file_utils_1.assertFileExists)(designTokensConfig.srcFilePath, `The configured 'designTokens.srcFilePath' in knapsack.config.js file does not exist: ${designTokensConfig.srcFilePath}`); } const configFilePath = designTokensConfig?.srcFilePath || (0, path_1.join)(dataDir, 'knapsack.design-tokens.json'); super({ filePath: configFilePath, defaults: {}, type: 'json', writeFileIfAbsent: true, }); this.distDir = distDir; this.site = siteId; this.designTokensConfig = designTokensConfig; } hydrate = async ({ appClientData: { tokensSrc } }) => { this.data = tokensSrc; }; build = async () => { const { convertTokenDataToFiles } = await import('@knapsack/design-token-utils'); const files = await this.getData() .then((tokensSrc) => { try { return convertTokenDataToFiles({ tokensSrc, targets: this.designTokensConfig?.targets, }); } catch (error) { throw new Error(`Failed to convert tokens: ${error.message}`); } }) .then((tokenFiles) => tokenFiles.map(({ path, contents }) => { const { base } = (0, path_1.parse)(path); return { path: (0, path_1.join)(this.distDir, base), contents, encoding: 'utf8', }; })); try { await Promise.all(files.map(file_utils_1.writeFormattedFile)); } catch (error) { throw new Error(`Failed to save files locally: ${error.message}`); } }; } exports.DesignTokens = DesignTokens; //# sourceMappingURL=design-tokens.js.map