@scriptables/manifest
Version:
Utilities to generate, parse, and update manifest headers in Scriptable scripts.
43 lines (42 loc) • 1.32 kB
JavaScript
const BooleanConverter = (value) => {
if (typeof value === "boolean") {
return value;
}
if (typeof value === "number" && (value === 0 || value === 1)) {
return value === 1;
}
if (typeof value === "string") {
const lower = value.toLowerCase();
return lower === "true" || lower === "1";
}
return value;
};
const ToLowerCaseConverter = (value) => {
if (typeof value === "string") {
return value.toLowerCase();
}
return value;
};
const ShareSheetInputsConverter = (value) => {
const array = Array.isArray(value) ? value : [value];
return array.map((item) => String(item).toLowerCase());
};
const converters = {
alwaysRunInApp: BooleanConverter,
shareSheetInputs: ShareSheetInputsConverter,
iconColor: ToLowerCaseConverter,
iconGlyph: ToLowerCaseConverter
};
function normalizeManifest(manifest) {
const normalized = {};
for (const [key, value] of Object.entries(manifest ?? {})) {
const normalizedKey = key.replace(/[-_](.)/g, (_, c) => c.toUpperCase());
const converter = converters[normalizedKey] || ((val) => val);
const normalizedValue = converter(value);
normalized[normalizedKey] = normalizedValue;
}
return normalized;
}
export { normalizeManifest };
//# sourceMappingURL=normalizeManifest.js.map
//# sourceMappingURL=normalizeManifest.js.map