Add settings page for managing forecasting API key and URL via UI

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
jtricerolph 2026-07-20 14:37:36 +00:00
parent cae411eae7
commit 1c411e402e
19809 changed files with 1962608 additions and 97 deletions

View file

@ -0,0 +1,55 @@
import { clone } from "./clone.mjs";
//#region src/compat/object/cloneWith.ts
/**
* Creates a shallow clone of the given object with customization.
* This method is like `_.clone` except that it accepts a customizer which
* is invoked to produce the cloned value. If customizer returns undefined,
* cloning is handled by the method instead.
*
* If no customizer is provided, it behaves like `clone`.
*
* @template T - The type of the object.
* @param value - The value to clone.
* @param [customizer] - The function to customize cloning.
* @returns A shallow clone of the given object.
*
* @example
* // Clone a primitive value
* const num = 29;
* const clonedNum = cloneWith(num);
* console.log(clonedNum); // 29
* console.log(clonedNum === num); // true
*
* @example
* // Clone an array
* const arr = [1, 2, 3];
* const clonedArr = cloneWith(arr);
* console.log(clonedArr); // [1, 2, 3]
* console.log(clonedArr === arr); // false
*
* @example
* // Clone an object
* const obj = { a: 1, b: 'es-toolkit', c: [1, 2, 3] };
* const clonedObj = cloneWith(obj);
* console.log(clonedObj); // { a: 1, b: 'es-toolkit', c: [1, 2, 3] }
* console.log(clonedObj === obj); // false
*
* @example
* // Clone an object with a customizer
* const obj = { a: 1, b: 2 };
* const clonedObj = cloneWith(obj, (value) => {
* if (typeof value === 'number') {
* return value * 2; // Double the number
* }
* // Returning undefined uses the default cloning
* });
* console.log(clonedObj); // { a: 2, b: 4 }
*/
function cloneWith(value, customizer) {
if (!customizer) return clone(value);
const result = customizer(value);
if (result !== void 0) return result;
return clone(value);
}
//#endregion
export { cloneWith };