@knapsack/app
Version:
Build Design Systems with Knapsack
64 lines • 2.38 kB
JavaScript
;
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