MCPcopy Create free account
hub / github.com/formkit/formkit / extend

Function extend

packages/utils/src/index.ts:326–371  ·  view source on GitHub ↗
(
  original: Record<string, any>,
  additional: Record<string, any> | string | null,
  extendArrays = false,
  ignoreUndefined = false
)

Source from the content-addressed store, hash-verified

324 *
325 */
326export const extend = /*#__NO_SIDE_EFFECTS__*/ (
327 original: Record<string, any>,
328 additional: Record<string, any> | string | null,
329 extendArrays = false,
330 ignoreUndefined = false
331): Record<string, any> | string | null => {
332 if (additional === null) return null
333 const merged: Record<string, any> = {}
334 if (typeof additional === 'string') return additional
335 for (const key in original) {
336 if (
337 has(additional, key) &&
338 (additional[key] !== undefined || !ignoreUndefined)
339 ) {
340 if (
341 extendArrays &&
342 Array.isArray(original[key]) &&
343 Array.isArray(additional[key])
344 ) {
345 merged[key] = original[key].concat(additional[key])
346 continue
347 }
348 if (additional[key] === undefined) {
349 continue
350 }
351 if (isPojo(original[key]) && isPojo(additional[key])) {
352 merged[key] = extend(
353 original[key],
354 additional[key],
355 extendArrays,
356 ignoreUndefined
357 )
358 } else {
359 merged[key] = additional[key]
360 }
361 } else {
362 merged[key] = original[key]
363 }
364 }
365 for (const key in additional) {
366 if (!has(merged, key) && additional[key] !== undefined) {
367 merged[key] = additional[key]
368 }
369 }
370 return merged
371}
372
373/**
374 * Determine if the given string is fully quoted.

Callers 10

defaultConfigFunction · 0.90
useInputFunction · 0.90
utils.spec.tsFile · 0.90
higherOrderSchemaFunction · 0.90
createLibraryPluginFunction · 0.90
extendSchemaFunction · 0.90
useSchemaFunction · 0.90
normalizeBoxesFunction · 0.90
defaultConfigFunction · 0.90
useInputFunction · 0.90

Calls 2

isPojoFunction · 0.85
hasFunction · 0.70

Tested by

no test coverage detected