UNPKG

svelte-settings

Version:

> [!WARNING] > This project is a work in progress. Do not use it in any of your projects yet.

49 lines (48 loc) 1.4 kB
import { setDeep } from '../deep.js'; export function get(settings, path) { let part = settings; for (const key of path) { if (typeof part !== 'object' || part === null || !(key in part)) { return undefined; } part = part[key]; } return part; } export function write(settings, path, value) { setDeep(settings, path, value); return settings; } export function writeNew(settings, path, value) { const currentValue = get(settings, path); if (currentValue !== undefined) { console.debug(`Path ${path} already has a defined value, skipping write!`); return; } setDeep(settings, path, value); return settings; } export function copy(settings, fromPath, toPath) { const valueFrom = asArray(get(settings, fromPath)); writeNew(settings, toPath, valueFrom); return settings; } export function asBoolean(v) { if (typeof v === 'boolean') return v; return undefined; } export function asArray(v) { return Array.isArray(v) ? v : []; } export function asObject(v) { return typeof v === 'object' && v !== null ? v : {}; } export function renameArrayEntry(settings, path, oldEntry, newEntry) { const setting = asArray(get(settings, path)); if (setting.includes(oldEntry)) { const i = setting.indexOf(oldEntry); setting[i] = newEntry; } return settings; }