@knapsack/app
Version:
Build Design Systems on top of knapsack, by Basalt
93 lines (72 loc) • 3.09 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Settings = void 0;
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _path = require("path");
var _dataUrls = _interopRequireDefault(require("data-urls"));
var _fileDb = require("./dbs/file-db");
var _schemaKnapsackSettings = _interopRequireDefault(require("../json-schemas/schemaKnapsackSettings"));
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 _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }); } else 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; }
/**
* @link https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs
*/
const isDataUrl = dataString => dataString.startsWith('data:');
class Settings extends _fileDb.FileDb2 {
constructor({
dataDir,
publicDir
}) {
const defaults = {
title: 'My Title',
parentBrand: {}
};
super({
filePath: (0, _path.join)(dataDir, 'knapsack.settings.json'),
defaults,
type: 'json',
validationSchema: _schemaKnapsackSettings.default
});
(0, _defineProperty2.default)(this, "publicDir", void 0);
this.publicDir = publicDir;
}
async savePrep(config) {
var _parentBrand;
const files = [];
let {
parentBrand
} = config;
if (((_parentBrand = parentBrand) === null || _parentBrand === void 0 ? void 0 : _parentBrand.logo) && isDataUrl(parentBrand.logo)) {
const {
mimeType,
body
} = (0, _dataUrls.default)(parentBrand.logo); // console.log();
const {
type,
subtype,
parameters
} = mimeType;
const name = parameters.get('name');
const logoPath = `/${name}`; // if (type === 'image') {
files.push({
path: (0, _path.join)(this.publicDir, name),
// contents: parentBrand.logo,
contents: Buffer.from(body).toString('base64'),
encoding: 'base64'
}); // }
parentBrand = _objectSpread({}, parentBrand, {
logo: logoPath
});
}
return [...files, ...(await super.savePrep(_objectSpread({}, config, {
parentBrand
})))];
}
async getData() {
return super.getData();
}
}
exports.Settings = Settings;